Cho 2 mảng X, Y cùng kích thước. Tính hệ số tương quan Pearson r.
Công thức
r = (nΣXY - ΣXΣY) / sqrt((nΣX² - (ΣX)²)(nΣY² - (ΣY)²)).
Ví dụ triển khai (C++)
#include <bits/stdc++.h>
using namespace std;
float find_coefficient(int X[], int Y[], int n) {
long long sumX=0, sumY=0, sumXY=0, sumX2=0, sumY2=0;
for (int i = 0; i < n; i++) {
sumX += X[i]; sumY += Y[i];
sumXY += 1LL*X[i]*Y[i];
sumX2 += 1LL*X[i]*X[i];
sumY2 += 1LL*Y[i]*Y[i];
}
float num = n*sumXY - sumX*sumY;
float den = sqrt((n*sumX2 - sumX*sumX) * (n*sumY2 - sumY*sumY));
return num / den;
}
int main() {
int X[] = {15, 18, 21, 24, 27};
int Y[] = {25, 25, 27, 31, 32};
int n = sizeof(X)/sizeof(X[0]);
cout << find_coefficient(X, Y, n);
return 0;
}
Đầu ra
0.953463