在多个节点上估计 运行 相关性

Estimate running correlation on multiple nodes

我想知道是否可以估计多个节点上的 xy 值流的相关性并在主节点上聚合。单节点方案之前已经回答过.

我们如何在不存储所有值的情况下聚合 meansvariances 和更重要的 covariance?可能吗?

是的,你可以。 例如假设你已经积累了

int n1; // number of points
double m1x; // mean of x1's
double m1y; // mean of y1's
double v1x; // variance of x1's
double v1y; // variance of y1's
double c1xy; // covariance of x1 and y1

x2 和 y2 的类似变量 n2 等

这些变量可以组合起来得到组合数据集的统计信息

n = n1 + n2
mx = (n1*mx1 + n2*mx2)/n
my = (n1*my1 + n2*my2)/n
vx = (n1*v1x + n1*(mx1-mx)*(my1-my)
     +n2*v2x + n2*(mx2-mx)*(my2-my)
     )
vy = (n1*v1y + n1*(my1-my)*(my1-my)
     +n2*v2y + n2*(my2-my)*(my2-my)
     )
cxy = (n1*c1xy + n1*(mx1-mx)*(my1-my)
      +n2*c2xy + n2*(mx2-mx)*(my2-my)
      )

例如

cxy = ( Sum{ i | (x1[i]-mx)*(y1[i]-my)}
      + Sum{ i | (x2[i]-mx)*(y2[i]-my)}
      )/n
cxy = ( Sum{ i | (x1[i]-mx1+mx1-mx)*(y1[i]-my1+my1-my)}
      + Sum{ i | (x2[i]-mx2+mx2-mx)*(y2[i]-my2+my2-my)}
      )/n

但是,展开第一个和,我们得到

Sum{ i | (x1[i]-mx1)*(y1[i]-my1)}
+ Sum{ i | (x1[i]-mx1)}*(my1-my)
+ Sum{ i | (y1[i]-my1)}*(mx1-mx)
+ Sum{ i | 1} * (mx1-mx) * (my1-my)

中间两个和是0,所以第一个和是

n1*c1xy + n1*(mx1-mx)*(my1-my)

第二个和类推,相加除以n,得到cxy的公式