加权相关

时间:2013-05-16 19:00:59

标签: c correlation weighted

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

      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

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

1 个答案:

答案 0 :(得分:2)

主要思想是每当你看到E(...)时,用w / sum(w)替换1 / n。

理论:

Corr(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

相关问题