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

Chương trình tìm hệ số tương quan Pearson trong C++


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