numpy中计算方差/协方差的函数 cov
公式
c o v ( X , Y ) = ∑ i = 1 n ( X i − X ˉ ) ( Y i − Y ˉ ) N − 1 cov(X,Y)= \cfrac{\sum_{i=1}^n(X_i-\bar{X})(Y_i-\bar{Y})} {N-1} cov(X,Y)=N−1∑i=1n(Xi−Xˉ)(Yi−Yˉ)
X,Y为等长的两个数组
结果为一个2X2的矩阵,
c o v ( X , Y ) = { c o v ( X , X ) c o v ( X , Y ) c o v ( Y , X ) c o v ( Y , Y ) } cov(X,Y)= \begin{Bmatrix} cov(X,X) &cov(X,Y)\\ cov(Y,X) & cov(Y,Y) \end{Bmatrix} cov(X,Y)={cov(X,X)cov(Y,X)cov(X,Y)cov(Y,Y)}
公式可以扩展为N个数组,结果为N x N的矩阵
计算
import numpy as np
T = np.array([1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1])
S = np.array([2, 3, 4, 5, 6, 7, 8, 9, 0, 1, 2, 3])
T_m = np.average(T)
S_m = np.average(S)
cov_T_T = np.sum((T-T_m)*(T-T_m))/11
cov_T_S = np.sum((T-T_m)*(S-S_m))/11
cov_S_S = np.sum((S-S_m)*(S-S_m))/11
print(cov_T_T, cov_T_S)
print(cov_T_S, cov_S_S)
X = np.vstack((T,S))
print(np.cov(X))
结果