两个数据向量之间的相关性为cor(X,Y) = cov(X,Y)/[sd(X) * sd(Y)]。有没有办法将这些分解成块计算?所需的基本计算(因为sd(X) = sqrt(cov(X,X))是
cov(X,Y) = <X Y> - <X> <Y>
= 1/N (sum[i] X[i] Y[i]) - 1/N (sum[i] X[i]) * 1/N (sum[i] Y[i])
这是所有索引 i 的总和。然而,每个索引 i 对应于一个带有 N_n 事件的节点 n 和一个子索引(在该节点中)k_n:
cov(X,Y) = 1/N (sum[n] sum[k_n] X[k_n] Y[k_n])
- 1/N^2 (sum[n] sum[k_n] X[k_n]) * (sum[n] sum[k_n] Y[i])
由于N = sum[n] N_n,可以改写为
cov(X,Y) = (sum[n] N_n/N 1/N_n sum[k_n] X[k_n] Y[k_n])
- (sum[n] N_n/N 1/N_n sum[k_n] X[k_n]) * (sum[n] N_n/N 1/N_n sum[k_n] Y[i])
= (sum[n] N_n/N <XY>_n) - (sum[n] N_n/N <X>_n) * (sum[n] N_n/N <Y>_n)
因此,每个节点只需要报告其在节点内的条目数 N_n 以及 <X>_n, <Y>_n 和 <XY>_n(以及,为了关联的目的,<X^2>_n 和 <Y^2>_n)。然后可以通过将这些均值与适当的权重N_n/N(同样是N = sum[n] N_n)相加来计算全局协方差,以获得全局均值。
编辑:LaTeX 版本
由于没有 LaTeX 很难解析这些方程式,因此这里有一些更易于理解的图像版本。两个数据列表 X 和 Y 的协方差定义为
其中每个数量 <X>, <Y> 和 <XY> 是(列表 X、列表 Y 和成对产品列表 XY)的平均值。均值的计算可以分解为各个节点的加权和。调用 X、Y、XY 或 X^2 或 Y^2(计算相关性所必需的)Z 中的任何一个,Z 的平均值为:
其中<Z>_k 是第 k 个节点上 Z 的平均值,N_k 是第 k 个节点上的数据点数。这将每个节点所需的信息量减少到N_k, <X>_k, <Y>_k, <XY>_k, <X^2>_k 和<Y^2>_k。