Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> MySQL

Tính hệ số tương quan (correlation) trong truy vấn MySQL

MySQL không có hàm tương quan tích hợp, nhưng có thể tính toán bằng công thức thống kê sử dụng AVG(), STDDEV_SAMP() và biến người dùng.

Tạo bảng:

mysql> CREATE TABLE correlationDemo (value FLOAT NOT NULL, value2 FLOAT NOT NULL);

Chèn dữ liệu:

mysql> INSERT INTO correlationDemo VALUES(1,10), (2,4), (3,5), (6,17);

Kết quả trung bình và độ lệch chuẩn:

mysql> SELECT @firstValue:=AVG(value), @secondValue:=AVG(value2), @division:=(STDDEV_SAMP(value) * STDDEV_SAMP(value2)) FROM correlationDemo;
+-------------------------+---------------------------+-------------------------------------------------------+
| @firstValue:=avg(value) | @secondValue:=avg(value2) | @division:=(stddev_samp(value) *stddev_samp(value2)) |
+-------------------------+---------------------------+-------------------------------------------------------+
| 3                       | 9                         | 12.84090685617215                                     |
+-------------------------+---------------------------+-------------------------------------------------------+

Tính hệ số tương quan Pearson:

mysql> SELECT SUM((value - @firstValue) * (value2 - @secondValue)) / ((COUNT(value) - 1) * @division) FROM correlationDemo;

Kết quả:

+--------------------------------------------------------------------------------------------+
| sum((value - @firstValue) * (value2 - secondValue)) / ((count(value) -1) * @division)      |
+--------------------------------------------------------------------------------------------+
| 0.7008850777290727                                                                         |
+--------------------------------------------------------------------------------------------+

Công thức: r = Σ((x - x̄)(y - ȳ)) / ((n-1) * σx * σy)