1. 基本定义
对于一组数值
X
n
=
[
x
1
,
x
2
,
.
.
.
,
x
n
]
X_n = [x_1, x_2, ..., x_n]
Xn=[x1,x2,...,xn],其均值为
X
n
‾
=
1
n
∑
i
=
1
n
x
i
\overline{X_n} = \frac{1}{n} \sum_{i=1}^n x_i
Xn=n1i=1∑nxi
方差 (variance) 为
σ
n
2
=
1
n
∑
i
=
1
n
(
x
i
−
X
n
‾
)
2
\sigma_n ^2= \frac{1}{n}\sum_{i=1}^n(x_i-\overline{X_n})^2
σn2=n1i=1∑n(xi−Xn)2
结合另一组数值
Y
n
=
[
y
1
,
y
2
,
.
.
.
,
y
n
]
Y_n=[y_1,y_2, ..., y_n]
Yn=[y1,y2,...,yn],它们的协方差 (covariance) 为
c
o
v
(
X
n
,
Y
n
)
=
1
n
∑
i
=
1
n
(
x
i
−
X
n
‾
)
(
y
i
−
Y
n
‾
)
cov(X_n, Y_n) = \frac{1}{n} \sum_{i=1}^n (x_i-\overline{X_n})(y_i-\overline{Y_n})
cov(Xn,Yn)=n1i=1∑n(xi−Xn)(yi−Yn)
2. 流式计算需求
流式计算无法保留全量数据,因此要求只遍历数据一次就能算出这些值。均值的计算比较简单,直接遍历一次即可求和以及统计出数据总数n。方差的计算需要先遍历一次数据求出均值,再遍历一次才能算出方差,总共需要遍历两次,因此暴力算法不符合需求。协方差的计算同理。下面给出增量的计算方法,只需要遍历数据一次。
定义
X
n
‾
\overline{X_n}
Xn 为数组
[
x
1
,
x
2
,
.
.
.
,
x
n
]
[x_1, x_2, ..., x_n]
[x1,x2,...,xn] 的均值,
X
n
−
1
‾
\overline{X_{n-1}}
Xn−1表示前n-1个数的均值。
定义
v
n
v_n
vn 为
n
σ
n
2
n\sigma_n^2
nσn2,即前n个数的方差的n倍,
v
n
−
1
v_{n-1}
vn−1表示
(
n
−
1
)
σ
n
−
1
2
(n-1)\sigma_{n-1}^2
(n−1)σn−12,即前n-1个数的方差的 n-1 倍。
当我们已知前 n-1 个数的均值
X
n
−
1
‾
\overline{X_{n-1}}
Xn−1 和
v
n
−
1
v_{n-1}
vn−1时,给定新到的第n个数
x
n
x_n
xn,新的均值和方差可如下计算:
X
n
‾
=
X
n
−
1
‾
+
x
n
−
X
n
−
1
‾
n
v
n
=
v
n
−
1
+
(
x
n
−
X
n
−
1
‾
)
(
x
n
−
X
n
‾
)
\overline{X_n}=\overline{X_{n-1}}+\frac{x_n-\overline{X_{n-1}}}{n}\\ v_n=v_{n-1}+(x_n-\overline{X_{n-1}})(x_n-\overline{X_n})
Xn=Xn−1+nxn−Xn−1vn=vn−1+(xn−Xn−1)(xn−Xn)对于协方差,定义
V
n
V_n
Vn 为 n 倍的
c
o
v
(
X
n
,
Y
n
)
cov(X_n, Y_n)
cov(Xn,Yn) ,即前n对数的协方差的n倍。可如下增量计算:
V
n
=
V
n
−
1
+
(
x
n
−
X
n
‾
)
(
y
n
−
Y
n
−
1
‾
)
或
=
V
n
−
1
+
(
x
n
−
X
n
−
1
‾
)
(
y
n
−
Y
n
‾
)
\begin{aligned} V_n&=V_{n-1}+(x_n-\overline{X_n})(y_n-\overline{Y_{n-1}})\\ 或&=V_{n-1}+(x_n-\overline{X_{n-1}})(y_n-\overline{Y_n})\end{aligned}
Vn或=Vn−1+(xn−Xn)(yn−Yn−1)=Vn−1+(xn−Xn−1)(yn−Yn)上面两式右边部分是相等的。文章最后有这些公式的推导证明。
3. 聚合计算需求
当数据量比较大,需要分布式并行计算时,要求能把多个分片的中间结果合并成最终结果。假设有两个分片,分别有 n 和 m 组数据,第一个分片为
[
(
x
1
,
1
,
y
1
,
1
)
,
(
x
1
,
2
,
y
1
,
2
)
,
(
x
1
,
3
,
y
1
,
3
)
,
.
.
.
,
(
x
1
,
n
,
y
1
,
n
)
]
[(x_{1,1}, y_{1,1}), (x_{1,2}, y_{1,2}), (x_{1,3}, y_{1,3}), ..., (x_{1,n}, y_{1,n})]
[(x1,1,y1,1),(x1,2,y1,2),(x1,3,y1,3),...,(x1,n,y1,n)],第二个分片为
[
(
x
2
,
1
,
y
2
,
1
)
,
(
x
2
,
2
,
y
2
,
2
)
,
(
x
2
,
3
,
y
2
,
3
)
,
.
.
.
,
(
x
2
,
m
,
y
2
,
m
)
]
[(x_{2,1}, y_{2,1}), (x_{2,2}, y_{2,2}), (x_{2,3}, y_{2,3}), ..., (x_{2,m}, y_{2,m})]
[(x2,1,y2,1),(x2,2,y2,2),(x2,3,y2,3),...,(x2,m,y2,m)]
设
X
n
‾
\overline{X_n}
Xn 为
[
x
1
,
1
,
x
1
,
2
,
x
1
,
3
,
.
.
.
,
x
1
,
n
]
[x_{1,1}, x_{1,2}, x_{1,3}, ...,x_{1,n}]
[x1,1,x1,2,x1,3,...,x1,n] 的均值,
Y
n
‾
\overline{Y_n}
Yn 为
[
y
1
,
1
,
y
1
,
2
,
y
1
,
3
,
.
.
.
,
y
1
,
n
]
[y_{1,1}, y_{1,2}, y_{1,3}, ...,y_{1,n}]
[y1,1,y1,2,y1,3,...,y1,n] 的均值,
V
n
V_n
Vn 为 n 倍的
c
o
v
(
X
n
,
Y
n
)
cov(X_n, Y_n)
cov(Xn,Yn),即
V
n
=
∑
i
=
1
n
(
x
i
−
X
n
‾
)
(
y
i
−
Y
n
‾
)
V_n = \sum_{i=1}^n (x_i-\overline{X_n})(y_i-\overline{Y_n})
Vn=i=1∑n(xi−Xn)(yi−Yn)
X
m
‾
\overline{X_m}
Xm 为
[
x
2
,
1
,
x
2
,
2
,
x
2
,
3
,
.
.
.
,
x
2
,
m
]
[x_{2,1}, x_{2,2}, x_{2,3}, ...,x_{2,m}]
[x2,1,x2,2,x2,3,...,x2,m] 的均值,
Y
m
‾
\overline{Y_m}
Ym 为
[
y
2
,
1
,
y
2
,
2
,
y
2
,
3
,
.
.
.
,
y
2
,
m
]
[y_{2,1}, y_{2,2}, y_{2,3}, ...,y_{2,m}]
[y2,1,y2,2,y2,3,...,y2,m] 的均值,
V
m
V_m
Vm 为 m 倍的
c
o
v
(
X
m
,
Y
m
)
cov(X_m, Y_m)
cov(Xm,Ym). 现在要求
X
n
+
m
‾
\overline{X_{n+m}}
Xn+m 和
V
n
+
m
V_{n+m}
Vn+m,可如下计算:
X
n
+
m
‾
=
n
X
n
‾
+
m
X
m
‾
n
+
m
V
n
+
m
=
V
n
+
V
m
+
n
m
n
+
m
(
X
n
‾
−
X
m
‾
)
(
Y
n
‾
−
Y
m
‾
)
\overline{X_{n+m}} = \frac{n\overline{X_n}+m\overline{X_m}}{n+m}\\ V_{n+m}=V_n+V_m+\frac{nm}{n+m}(\overline{X_n}-\overline{X_m})(\overline{Y_n}-\overline{Y_m})
Xn+m=n+mnXn+mXmVn+m=Vn+Vm+n+mnm(Xn−Xm)(Yn−Ym)
4. 滑动窗口计算需求
在窗口函数的计算中,窗口滑动时会新增一个数据,也可能剔除一个最老的数据。新增数据可使用前面流式计算的方法来更新,剔除数据也是利用相同的公式。由于均值、方差、协方差的计算与数据顺序无关,假设要剔除的就是
x
n
x_n
xn,于是
X
n
−
1
‾
=
X
n
‾
−
x
n
−
X
n
‾
n
−
1
v
n
−
1
=
v
n
−
(
x
n
−
X
n
−
1
‾
)
(
x
n
−
X
n
‾
)
V
n
−
1
=
V
n
−
(
x
n
−
X
n
‾
)
(
y
n
−
Y
n
−
1
‾
)
或
=
V
n
−
(
x
n
−
X
n
−
1
‾
)
(
y
n
−
Y
n
‾
)
\overline{X_{n-1}}=\overline{X_n}-\frac{x_n-\overline{X_n}}{n-1}\\ v_{n-1}=v_n-(x_n-\overline{X_{n-1}})(x_n-\overline{X_n})\\ \begin{aligned} V_{n-1}&=V_n-(x_n-\overline{X_n})(y_n-\overline{Y_{n-1}})\\ 或&=V_n-(x_n-\overline{X_{n-1}})(y_n-\overline{Y_n}) \end{aligned}
Xn−1=Xn−n−1xn−Xnvn−1=vn−(xn−Xn−1)(xn−Xn)Vn−1或=Vn−(xn−Xn)(yn−Yn−1)=Vn−(xn−Xn−1)(yn−Yn)
5. 推导证明
5.1 均值的增量计算
X n ‾ = 1 n ∑ i = 1 n x i = 1 n ( x n + ∑ i = 1 n − 1 x i ) = 1 n ( x n + ( n − 1 ) X n − 1 ‾ ) = 1 n ( n X n − 1 ‾ + x n − X n − 1 ‾ ) = X n − 1 ‾ + x n − X n − 1 ‾ n \overline{X_n}=\frac{1}{n} \sum_{i=1}^n x_i=\frac{1}{n} (x_n + \sum_{i=1}^{n-1} x_i) =\frac{1}{n} (x_n + (n-1)\overline{X_{n-1}})\\ =\frac{1}{n} (n\overline{X_{n-1}}+x_n-\overline{X_{n-1}}) =\overline{X_{n-1}}+\frac{x_n-\overline{X_{n-1}}}{n} Xn=n1i=1∑nxi=n1(xn+i=1∑n−1xi)=n1(xn+(n−1)Xn−1)=n1(nXn−1+xn−Xn−1)=Xn−1+nxn−Xn−1
5.2 方差的增量计算
v
n
=
∑
i
=
1
n
(
x
i
−
X
n
‾
)
2
=
∑
i
=
1
n
−
1
(
x
i
−
X
n
‾
)
2
+
(
x
n
−
X
n
‾
)
2
=
∑
i
=
1
n
−
1
(
x
i
−
X
n
−
1
‾
+
X
n
−
1
‾
−
X
n
‾
)
2
+
(
x
n
−
X
n
‾
)
2
=
∑
i
=
1
n
−
1
(
x
i
−
X
n
−
1
‾
)
2
+
2
(
X
n
−
1
‾
−
X
n
‾
)
∑
i
=
1
n
−
1
(
x
i
−
X
n
−
1
‾
)
+
(
n
−
1
)
(
X
n
−
1
‾
−
X
n
‾
)
2
+
(
x
n
−
X
n
‾
)
2
v_n=\sum_{i=1}^n(x_i-\overline{X_n})^2=\sum_{i=1}^{n-1}(x_i-\overline{X_n})^2+(x_n-\overline{X_n})^2\\ =\sum_{i=1}^{n-1}(x_i-\overline{X_{n-1}}+\overline{X_{n-1}}-\overline{X_n})^2+(x_n-\overline{X_n})^2\\ =\sum_{i=1}^{n-1}(x_i-\overline{X_{n-1}})^2+2(\overline{X_{n-1}}-\overline{X_n})\sum_{i=1}^{n-1}(x_i-\overline{X_{n-1}})+(n-1)(\overline{X_{n-1}}-\overline{X_n})^2+(x_n-\overline{X_n})^2
vn=i=1∑n(xi−Xn)2=i=1∑n−1(xi−Xn)2+(xn−Xn)2=i=1∑n−1(xi−Xn−1+Xn−1−Xn)2+(xn−Xn)2=i=1∑n−1(xi−Xn−1)2+2(Xn−1−Xn)i=1∑n−1(xi−Xn−1)+(n−1)(Xn−1−Xn)2+(xn−Xn)2上式第一项就是
v
n
−
1
v_{n-1}
vn−1,第二项是0,因为
∑
i
=
1
n
−
1
(
x
i
−
X
n
−
1
‾
)
=
∑
i
=
1
n
−
1
x
i
−
(
n
−
1
)
X
n
−
1
‾
=
(
n
−
1
)
X
n
−
1
‾
−
(
n
−
1
)
X
n
−
1
‾
=
0
\sum_{i=1}^{n-1}(x_i-\overline{X_{n-1}})=\sum_{i=1}^{n-1}x_i-(n-1)\overline{X_{n-1}}=(n-1)\overline{X_{n-1}}-(n-1)\overline{X_{n-1}}=0
i=1∑n−1(xi−Xn−1)=i=1∑n−1xi−(n−1)Xn−1=(n−1)Xn−1−(n−1)Xn−1=0于是
v
n
=
v
n
−
1
+
(
n
−
1
)
(
X
n
−
1
‾
−
X
n
‾
)
2
+
(
x
n
−
X
n
‾
)
2
v_n=v_{n-1}+(n-1)(\overline{X_{n-1}}-\overline{X_n})^2+(x_n-\overline{X_n})^2
vn=vn−1+(n−1)(Xn−1−Xn)2+(xn−Xn)2
简化一下增量部分,注意到有
(
n
−
1
)
(
X
n
−
1
‾
−
X
n
‾
)
=
(
n
−
1
)
X
n
−
1
‾
−
(
n
−
1
)
X
n
‾
=
n
X
n
‾
−
x
n
−
(
n
−
1
)
X
n
‾
=
X
n
‾
−
x
n
(n-1)(\overline{X_{n-1}}-\overline{X_n})=(n-1)\overline{X_{n-1}}-(n-1)\overline{X_n}=n\overline{X_n}-x_n-(n-1)\overline{X_n}=\overline{X_n}-x_n
(n−1)(Xn−1−Xn)=(n−1)Xn−1−(n−1)Xn=nXn−xn−(n−1)Xn=Xn−xn于是
(
n
−
1
)
(
X
n
−
1
‾
−
X
n
‾
)
2
+
(
x
n
−
X
n
‾
)
2
=
(
n
−
1
)
(
X
n
−
1
‾
−
X
n
‾
)
(
X
n
−
1
‾
−
X
n
‾
)
+
(
x
n
−
X
n
‾
)
2
=
(
X
n
‾
−
x
n
)
(
X
n
−
1
‾
−
X
n
‾
)
+
(
x
n
−
X
n
‾
)
2
=
(
x
n
−
X
n
‾
)
(
X
n
‾
−
X
n
−
1
‾
)
+
(
x
n
−
X
n
‾
)
2
=
(
x
n
−
X
n
‾
)
(
x
n
−
X
n
‾
+
X
n
‾
−
X
n
−
1
‾
)
=
(
x
n
−
X
n
‾
)
(
x
n
−
X
n
−
1
‾
)
(n-1)(\overline{X_{n-1}}-\overline{X_n})^2+(x_n-\overline{X_n})^2\\ \begin{aligned} &=(n-1)(\overline{X_{n-1}}-\overline{X_n})(\overline{X_{n-1}}-\overline{X_n})+(x_n-\overline{X_n})^2\\ &=(\overline{X_n}-x_n)(\overline{X_{n-1}}-\overline{X_n})+(x_n-\overline{X_n})^2\\ &=(x_n-\overline{X_n})(\overline{X_n}-\overline{X_{n-1}})+(x_n-\overline{X_n})^2\\ &=(x_n-\overline{X_n})(x_n-\overline{X_n}+\overline{X_n}-\overline{X_{n-1}})\\ &=(x_n-\overline{X_n})(x_n-\overline{X_{n-1}}) \end{aligned}
(n−1)(Xn−1−Xn)2+(xn−Xn)2=(n−1)(Xn−1−Xn)(Xn−1−Xn)+(xn−Xn)2=(Xn−xn)(Xn−1−Xn)+(xn−Xn)2=(xn−Xn)(Xn−Xn−1)+(xn−Xn)2=(xn−Xn)(xn−Xn+Xn−Xn−1)=(xn−Xn)(xn−Xn−1)于是
v
n
=
v
n
−
1
+
(
x
n
−
X
n
−
1
‾
)
(
x
n
−
X
n
‾
)
v_n=v_{n-1}+(x_n-\overline{X_{n-1}})(x_n-\overline{X_n})
vn=vn−1+(xn−Xn−1)(xn−Xn)
5.3 协方差的增量计算
思路与方差的证明相同(实际上方差就是协方差的特殊形式)
V
n
=
∑
i
=
1
n
−
1
(
x
i
−
X
n
‾
)
(
y
i
−
Y
n
‾
)
+
(
x
n
−
X
n
‾
)
(
y
n
−
Y
n
‾
)
V_n=\sum_{i=1}^{n-1}(x_i-\overline{X_n})(y_i-\overline{Y_n})+(x_n-\overline{X_n})(y_n-\overline{Y_n})
Vn=i=1∑n−1(xi−Xn)(yi−Yn)+(xn−Xn)(yn−Yn)把第一项中的均值换成
X
n
−
1
‾
\overline{X_{n-1}}
Xn−1 和
Y
n
−
1
‾
\overline{Y_{n-1}}
Yn−1,先换
X
n
‾
\overline{X_n}
Xn
∑
i
=
1
n
−
1
(
x
i
−
X
n
‾
)
(
y
i
−
Y
n
‾
)
=
∑
i
=
1
n
−
1
(
x
i
−
X
n
−
1
‾
+
X
n
−
1
‾
−
X
n
‾
)
(
y
i
−
Y
n
‾
)
=
∑
i
=
1
n
−
1
(
x
i
−
X
n
−
1
‾
)
(
y
i
−
Y
n
‾
)
+
(
X
n
−
1
‾
−
X
n
‾
)
∑
i
=
1
n
−
1
(
y
i
−
Y
n
‾
)
=
∑
i
=
1
n
−
1
(
x
i
−
X
n
−
1
‾
)
(
y
i
−
Y
n
−
1
‾
+
Y
n
−
1
‾
−
Y
n
‾
)
+
(
X
n
−
1
‾
−
X
n
‾
)
∑
i
=
1
n
−
1
(
y
i
−
Y
n
‾
)
=
∑
i
=
1
n
−
1
(
x
i
−
X
n
−
1
‾
)
(
y
i
−
Y
n
−
1
‾
)
+
∑
i
=
1
n
−
1
(
x
i
−
X
n
−
1
‾
)
(
Y
n
−
1
‾
−
Y
n
‾
)
+
(
X
n
−
1
‾
−
X
n
‾
)
∑
i
=
1
n
−
1
(
y
i
−
Y
n
‾
)
\begin{aligned} \sum_{i=1}^{n-1}(x_i-\overline{X_n})(y_i-\overline{Y_n}) &=\sum_{i=1}^{n-1}(x_i-\overline{X_{n-1}}+\overline{X_{n-1}}-\overline{X_n})(y_i-\overline{Y_n})\\ &=\sum_{i=1}^{n-1}(x_i-\overline{X_{n-1}})(y_i-\overline{Y_n})+(\overline{X_{n-1}}-\overline{X_n})\sum_{i=1}^{n-1}(y_i-\overline{Y_n})\\ &=\sum_{i=1}^{n-1}(x_i-\overline{X_{n-1}})(y_i-\overline{Y_{n-1}}+\overline{Y_{n-1}}-\overline{Y_n})+(\overline{X_{n-1}}-\overline{X_n})\sum_{i=1}^{n-1}(y_i-\overline{Y_n})\\ &=\sum_{i=1}^{n-1}(x_i-\overline{X_{n-1}})(y_i-\overline{Y_{n-1}})+\sum_{i=1}^{n-1}(x_i-\overline{X_{n-1}})(\overline{Y_{n-1}}-\overline{Y_n})+(\overline{X_{n-1}}-\overline{X_n})\sum_{i=1}^{n-1}(y_i-\overline{Y_n}) \end{aligned}
i=1∑n−1(xi−Xn)(yi−Yn)=i=1∑n−1(xi−Xn−1+Xn−1−Xn)(yi−Yn)=i=1∑n−1(xi−Xn−1)(yi−Yn)+(Xn−1−Xn)i=1∑n−1(yi−Yn)=i=1∑n−1(xi−Xn−1)(yi−Yn−1+Yn−1−Yn)+(Xn−1−Xn)i=1∑n−1(yi−Yn)=i=1∑n−1(xi−Xn−1)(yi−Yn−1)+i=1∑n−1(xi−Xn−1)(Yn−1−Yn)+(Xn−1−Xn)i=1∑n−1(yi−Yn)
上式第二项为0,因为
∑
i
=
1
n
−
1
(
x
i
−
X
n
−
1
‾
)
=
∑
i
=
1
n
−
1
x
i
−
(
n
−
1
)
X
n
−
1
‾
=
∑
i
=
1
n
−
1
x
i
−
∑
i
=
1
n
−
1
x
i
=
0
\sum_{i=1}^{n-1}(x_i-\overline{X_{n-1}})=\sum_{i=1}^{n-1}x_i-(n-1)\overline{X_{n-1}}=\sum_{i=1}^{n-1}x_i-\sum_{i=1}^{n-1}x_i=0
∑i=1n−1(xi−Xn−1)=∑i=1n−1xi−(n−1)Xn−1=∑i=1n−1xi−∑i=1n−1xi=0
第三项可简化为
(
X
n
−
1
‾
−
X
n
‾
)
(
Y
n
‾
−
y
n
)
(\overline{X_{n-1}}-\overline{X_n})(\overline{Y_n}-y_n)
(Xn−1−Xn)(Yn−yn),
因为
∑
i
=
1
n
−
1
(
y
i
−
Y
n
‾
)
+
y
n
−
Y
n
‾
=
∑
i
=
1
n
y
i
−
n
Y
n
‾
=
0
\sum_{i=1}^{n-1}(y_i-\overline{Y_n})+y_n-\overline{Y_n}=\sum_{i=1}^n{y_i}-n\overline{Y_n}=0
∑i=1n−1(yi−Yn)+yn−Yn=∑i=1nyi−nYn=0
所以有
∑
i
=
1
n
−
1
(
y
i
−
Y
n
‾
)
=
Y
n
‾
−
y
n
\sum_{i=1}^{n-1}(y_i-\overline{Y_n})=\overline{Y_n}-y_n
∑i=1n−1(yi−Yn)=Yn−yn
于是
∑
i
=
1
n
−
1
(
x
i
−
X
n
‾
)
(
y
i
−
Y
n
‾
)
=
∑
i
=
1
n
−
1
(
x
i
−
X
n
−
1
‾
)
(
y
i
−
Y
n
−
1
‾
)
−
(
X
n
−
1
‾
−
X
n
‾
)
(
y
n
−
Y
n
‾
)
=
V
n
−
1
+
(
X
n
‾
−
X
n
−
1
‾
)
(
y
n
−
Y
n
‾
)
\sum_{i=1}^{n-1}(x_i-\overline{X_n})(y_i-\overline{Y_n})=\sum_{i=1}^{n-1}(x_i-\overline{X_{n-1}})(y_i-\overline{Y_{n-1}})-(\overline{X_{n-1}}-\overline{X_n})(y_n-\overline{Y_n})\\ =V_{n-1}+(\overline{X_n}-\overline{X_{n-1}})(y_n-\overline{Y_n})
i=1∑n−1(xi−Xn)(yi−Yn)=i=1∑n−1(xi−Xn−1)(yi−Yn−1)−(Xn−1−Xn)(yn−Yn)=Vn−1+(Xn−Xn−1)(yn−Yn)于是
V
n
=
V
n
−
1
+
(
X
n
‾
−
X
n
−
1
‾
)
(
y
n
−
Y
n
‾
)
+
(
x
n
−
X
n
‾
)
(
y
n
−
Y
n
‾
)
=
V
n
−
1
+
(
x
n
−
X
n
‾
+
X
n
‾
−
X
n
−
1
‾
)
(
y
n
−
Y
n
‾
)
=
V
n
−
1
+
(
x
n
−
X
n
−
1
‾
)
(
y
n
−
Y
n
‾
)
\begin{aligned} V_n&=V_{n-1}+(\overline{X_n}-\overline{X_{n-1}})(y_n-\overline{Y_n})+(x_n-\overline{X_n})(y_n-\overline{Y_n})\\ &=V_{n-1}+(x_n-\overline{X_n}+\overline{X_n}-\overline{X_{n-1}})(y_n-\overline{Y_n})\\ &=V_{n-1}+(x_n-\overline{X_{n-1}})(y_n-\overline{Y_n}) \end{aligned}
Vn=Vn−1+(Xn−Xn−1)(yn−Yn)+(xn−Xn)(yn−Yn)=Vn−1+(xn−Xn+Xn−Xn−1)(yn−Yn)=Vn−1+(xn−Xn−1)(yn−Yn)
5.4 协方差的聚合计算
V
n
=
∑
i
=
1
n
(
x
1
,
i
−
X
n
‾
)
(
y
1
,
i
−
Y
n
‾
)
V
m
=
∑
i
=
1
m
(
x
2
,
i
−
X
m
‾
)
(
y
2
,
i
−
Y
m
‾
)
V
n
+
m
=
∑
i
=
1
n
(
x
1
,
i
−
X
n
+
m
‾
)
(
y
1
,
i
−
Y
n
+
m
‾
)
+
∑
i
=
1
m
(
x
2
,
i
−
X
n
+
m
‾
)
(
y
2
,
i
−
Y
n
+
m
‾
)
V_n = \sum_{i=1}^n (x_{1,i}-\overline{X_n})(y_{1,i}-\overline{Y_n})\\ V_m = \sum_{i=1}^m(x_{2,i}-\overline{X_m})(y_{2,i}-\overline{Y_m})\\ V_{n+m} = \sum_{i=1}^n(x_{1,i}-\overline{X_{n+m}})(y_{1,i}-\overline{Y_{n+m}})+\sum_{i=1}^m(x_{2,i}-\overline{X_{n+m}})(y_{2,i}-\overline{Y_{n+m}})
Vn=i=1∑n(x1,i−Xn)(y1,i−Yn)Vm=i=1∑m(x2,i−Xm)(y2,i−Ym)Vn+m=i=1∑n(x1,i−Xn+m)(y1,i−Yn+m)+i=1∑m(x2,i−Xn+m)(y2,i−Yn+m) 简化一下第一项,
∑
i
=
1
n
(
x
1
,
i
−
X
n
‾
+
X
n
‾
−
X
n
+
m
‾
)
(
y
1
,
i
−
Y
n
+
m
‾
)
=
∑
i
=
1
n
(
x
1
,
i
−
X
n
‾
)
(
y
1
,
i
−
Y
n
+
m
‾
)
+
(
X
n
‾
−
X
n
+
m
‾
)
∑
i
=
1
n
(
y
1
,
i
−
Y
n
+
m
‾
)
=
∑
i
=
1
n
(
x
1
,
i
−
X
n
‾
)
(
y
1
,
i
−
Y
n
+
m
‾
)
+
(
X
n
‾
−
X
n
+
m
‾
)
(
n
Y
n
‾
−
n
Y
n
+
m
‾
)
=
∑
i
=
1
n
(
x
1
,
i
−
X
n
‾
)
(
y
1
,
i
−
Y
n
+
m
‾
)
+
n
(
X
n
‾
−
X
n
+
m
‾
)
(
Y
n
‾
−
Y
n
+
m
‾
)
=
∑
i
=
1
n
(
x
1
,
i
−
X
n
‾
)
(
y
1
,
i
−
Y
n
‾
+
Y
n
‾
−
Y
n
+
m
‾
)
+
n
(
X
n
‾
−
X
n
+
m
‾
)
(
Y
n
‾
−
Y
n
+
m
‾
)
=
∑
i
=
1
n
(
x
1
,
i
−
X
n
‾
)
(
y
1
,
i
−
Y
n
‾
)
+
(
Y
n
‾
−
Y
n
+
m
‾
)
∑
i
=
1
n
(
x
1
,
i
−
X
n
‾
)
+
n
(
X
n
‾
−
X
n
+
m
‾
)
(
Y
n
‾
−
Y
n
+
m
‾
)
=
∑
i
=
1
n
(
x
1
,
i
−
X
n
‾
)
(
y
1
,
i
−
Y
n
‾
)
+
n
(
X
n
‾
−
X
n
+
m
‾
)
(
Y
n
‾
−
Y
n
+
m
‾
)
=
V
n
+
n
(
X
n
‾
−
X
n
+
m
‾
)
(
Y
n
‾
−
Y
n
+
m
‾
)
\sum_{i=1}^n(x_{1,i}-\overline{X_n}+\overline{X_n}-\overline{X_{n+m}})(y_{1,i}-\overline{Y_{n+m}})\\ =\sum_{i=1}^n(x_{1,i}-\overline{X_n})(y_{1,i}-\overline{Y_{n+m}}) + (\overline{X_n}-\overline{X_{n+m}})\sum_{i=1}^n(y_{1,i}-\overline{Y_{n+m}})\\ =\sum_{i=1}^n(x_{1,i}-\overline{X_n})(y_{1,i}-\overline{Y_{n+m}}) + (\overline{X_n}-\overline{X_{n+m}})(n\overline{Y_n}-n\overline{Y_{n+m}})\\ =\sum_{i=1}^n(x_{1,i}-\overline{X_n})(y_{1,i}-\overline{Y_{n+m}}) + n(\overline{X_n}-\overline{X_{n+m}})(\overline{Y_n}-\overline{Y_{n+m}})\\ =\sum_{i=1}^n(x_{1,i}-\overline{X_n})(y_{1,i}-\overline{Y_n}+\overline{Y_n}-\overline{Y_{n+m}}) + n(\overline{X_n}-\overline{X_{n+m}})(\overline{Y_n}-\overline{Y_{n+m}})\\ =\sum_{i=1}^n(x_{1,i}-\overline{X_n})(y_{1,i}-\overline{Y_n})+ (\overline{Y_n}-\overline{Y_{n+m}})\sum_{i=1}^n(x_{1,i}-\overline{X_n})+ n(\overline{X_n}-\overline{X_{n+m}})(\overline{Y_n}-\overline{Y_{n+m}})\\ =\sum_{i=1}^n(x_{1,i}-\overline{X_n})(y_{1,i}-\overline{Y_n})+ n(\overline{X_n}-\overline{X_{n+m}})(\overline{Y_n}-\overline{Y_{n+m}})\\ =V_n+n(\overline{X_n}-\overline{X_{n+m}})(\overline{Y_n}-\overline{Y_{n+m}})
i=1∑n(x1,i−Xn+Xn−Xn+m)(y1,i−Yn+m)=i=1∑n(x1,i−Xn)(y1,i−Yn+m)+(Xn−Xn+m)i=1∑n(y1,i−Yn+m)=i=1∑n(x1,i−Xn)(y1,i−Yn+m)+(Xn−Xn+m)(nYn−nYn+m)=i=1∑n(x1,i−Xn)(y1,i−Yn+m)+n(Xn−Xn+m)(Yn−Yn+m)=i=1∑n(x1,i−Xn)(y1,i−Yn+Yn−Yn+m)+n(Xn−Xn+m)(Yn−Yn+m)=i=1∑n(x1,i−Xn)(y1,i−Yn)+(Yn−Yn+m)i=1∑n(x1,i−Xn)+n(Xn−Xn+m)(Yn−Yn+m)=i=1∑n(x1,i−Xn)(y1,i−Yn)+n(Xn−Xn+m)(Yn−Yn+m)=Vn+n(Xn−Xn+m)(Yn−Yn+m) 同理,可将
V
n
+
m
V_{n+m}
Vn+m 表达式的第二项简化为
V
m
+
m
(
X
m
‾
−
X
n
+
m
‾
)
(
Y
m
‾
−
Y
n
+
m
‾
)
V_m+m(\overline{X_m}-\overline{X_{n+m}})(\overline{Y_m}-\overline{Y_{n+m}})
Vm+m(Xm−Xn+m)(Ym−Yn+m)
注意到
n
(
X
n
‾
−
X
n
+
m
‾
)
+
m
(
X
m
‾
−
X
n
+
m
‾
)
=
n
X
n
‾
+
m
X
m
‾
−
(
n
+
m
)
X
n
+
m
‾
=
0
n(\overline{X_n}-\overline{X_{n+m}}) + m(\overline{X_m}-\overline{X_{n+m}}) = n\overline{X_n}+m\overline{X_m}-(n+m)\overline{X_{n+m}}=0
n(Xn−Xn+m)+m(Xm−Xn+m)=nXn+mXm−(n+m)Xn+m=0
因此有
−
n
(
X
n
‾
−
X
n
+
m
‾
)
=
m
(
X
m
‾
−
X
n
+
m
‾
)
-n(\overline{X_n}-\overline{X_{n+m}})=m(\overline{X_m}-\overline{X_{n+m}})
−n(Xn−Xn+m)=m(Xm−Xn+m)
于是
V
n
+
m
=
V
n
+
V
m
+
n
(
X
n
‾
−
X
n
+
m
‾
)
(
Y
n
‾
−
Y
n
+
m
‾
−
Y
m
‾
+
Y
n
+
m
‾
)
=
V
n
+
V
m
+
n
(
X
n
‾
−
X
n
+
m
‾
)
(
Y
n
‾
−
Y
m
‾
)
V_{n+m}=V_n+V_m+n(\overline{X_n}-\overline{X_{n+m}})(\overline{Y_n}-\overline{Y_{n+m}}-\overline{Y_m}+\overline{Y_{n+m}})\\ =V_n+V_m+n(\overline{X_n}-\overline{X_{n+m}})(\overline{Y_n}-\overline{Y_m})
Vn+m=Vn+Vm+n(Xn−Xn+m)(Yn−Yn+m−Ym+Yn+m)=Vn+Vm+n(Xn−Xn+m)(Yn−Ym)而
n
(
X
n
‾
−
X
n
+
m
‾
)
=
n
n
+
m
(
(
n
+
m
)
X
n
‾
−
(
n
+
m
)
X
n
+
m
‾
)
=
n
n
+
m
(
n
X
n
‾
+
m
X
n
‾
−
∑
i
=
1
n
x
1
,
i
−
∑
i
=
1
m
x
2
,
i
)
=
n
n
+
m
(
∑
i
=
1
n
x
1
,
i
+
m
X
n
‾
−
∑
i
=
1
n
x
1
,
i
−
m
X
m
‾
)
=
n
m
n
+
m
(
X
n
‾
−
X
m
‾
)
n(\overline{X_n}-\overline{X_{n+m}})=\frac{n}{n+m}((n+m)\overline{X_n}-(n+m)\overline{X_{n+m}})\\ =\frac{n}{n+m}(n\overline{X_n}+m\overline{X_n}-\sum_{i=1}^n{x_{1,i}}-\sum_{i=1}^m{x_{2,i}})\\ =\frac{n}{n+m}(\sum_{i=1}^n{x_{1,i}}+m\overline{X_n}-\sum_{i=1}^n{x_{1,i}}-m\overline{X_m})\\ =\frac{nm}{n+m}(\overline{X_n}-\overline{X_m})
n(Xn−Xn+m)=n+mn((n+m)Xn−(n+m)Xn+m)=n+mn(nXn+mXn−i=1∑nx1,i−i=1∑mx2,i)=n+mn(i=1∑nx1,i+mXn−i=1∑nx1,i−mXm)=n+mnm(Xn−Xm) 于是
V
n
+
m
=
V
n
+
V
m
+
n
m
n
+
m
(
X
n
‾
−
X
m
‾
)
(
Y
n
‾
−
Y
m
‾
)
V_{n+m}=V_n+V_m+\frac{nm}{n+m}(\overline{X_n}-\overline{X_m})(\overline{Y_n}-\overline{Y_m})
Vn+m=Vn+Vm+n+mnm(Xn−Xm)(Yn−Ym)