我有两个浮点数组,并且想要计算加权相关性,这意味着我希望我的一些数据的权重低于其他数据。
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中实现它。
答案 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