2

我有两个浮点数组,并且想要计算加权相关性,这意味着我希望我的一些数据的权重低于其他数据。

      X          Y        w
   2.02382   6.00298   0.43873
   3.94601   6.41983   0.36818
   3.76877   4.55656   0.49836
   3.68307   6.46925   0.95965
   3.09073   4.57723   0.88889
   2.56690   2.70020   0.72812
   3.35469   6.76874   0.26863
   3.88722   5.23205   0.77492
   3.29389   3.50355   0.79567
   3.80725   3.18414   0.82439

所以,我想要 X 和 Y 之间关于权重 w 的相关性。我的问题主要是理论问题,但最后我想用C实现它。

4

1 回答 1

2

主要思想是,每当您看到 E(...) 时,都将 1/n 替换为 w/sum(w)。

理论:

修正(X,Y) = E( (X - E(X))*(Y - E(Y) ) / SD(X)SD(Y) ;

所以首先计算 E(X) 和 E(Y)。

E(X) = (2.02382 * .43873 + ... + 3.80725*.82439) / (.43873+...+.82439) = 3.368

E(Y) = [相同的加权平均想法] = 4.705

sd(X) = sqrt( var(X) ) = sqrt( E( (XE(X))^2 ) ) = sqrt( ( (.43873) (2.02382-3.368)^2 + ... + (.82439 ) (3.80725-3.368)^2 ) / (.43873+...+.82439) ) = sqrt(0.3054023) = 0.5526321

sd(Y) = [相同的加权平均想法] = sqrt(1.860124) = 1.363863

corr(x,y) = ( (.43873) (2.02382-3.368)(6.00298-4.705)+...+(.82439) (3.80725-3.368)(3.18414-4.705) ) / ( (.43873+... .+.82439) (.5526) (1.3634) ) = 0.2085651

于 2013-12-19T22:01:50.347 回答