相関係数の計算

相関係数 rxy相関係数 r_xy
の計算例です。

相関係数の計算(list_58.c)
#include <stdio.h>
#include <math.h>

//-----------------------------------------------------------------
double calc_corr(int n,double* x,double* y);
double calc_mean(int n,double* y);
//-----------------------------------------------------------------

int main()
{
    int n=8;
    double x[] = {3,4,3,4,3,1,5,2};
    double y[] = {2,4,3,5,1,4,4,3};
    printf("corr = %lf\n",calc_corr(n,x,y));
    return 0;
}

double calc_corr(int n,double* x,double* y)
{
    int i;
    double mx=calc_mean(n,x);
    double my=calc_mean(n,y);
    double xx=0,yy=0,xy=0,corr=0;
    for(i=0;i<n;i++) xx+=pow(x[i]-mx,2);
    xx = sqrt(xx);
    for(i=0;i<n;i++) yy+=pow(y[i]-my,2);
    yy = sqrt(yy);
    for(i=0;i<n;i++) xy+=(x[i]-mx)*(y[i]-my);
    corr = xy / (xx*yy);
    return corr;
}

// calc mean
double calc_mean(int n,double* a)
{
    int i;
    double mean=0;
    for(i=0;i<n;i++) mean += a[i];
    mean/=n;
    return mean;
}
Gami[173]% ./list_58.exe
corr = 0.245906
Gami[174]%
inserted by FC2 system