实施方差方程,但他们没有相同的结果

Implemented Variance equation, But they don't have same results

我有一个方程:$Var(X+Y) = Var(X) + 2Cov(X+Y)+ Var(Y)$。 我在 python 中实现了这些,但结果不一样。 谁能解释我的代码有什么问题?

X = [random.randint(1,20) for i in range(10)]
Y = [random.randint(1,20) for i in range(10)]
X_PLUS_Y = [X[i]+Y[i] for i in range(len(X))]
print(statistics.variance(X_PLUS_Y)) # 108.23333333333333
print(statistics.variance(X)+2*Covariance(X,Y)+statistics.variance(Y))#105.07777777777777```

您计算协方差的方式很可能有问题。如果我们使用 numpy:

import numpy as np
import statistics
np.random.seed(123)

X = np.random.randint(1,20,10)
Y = np.random.randint(1,20,10)
X_PLUS_Y = X+Y

The variance of X + Y:

np.var(X_PLUS_Y,ddof=1)
147.4333333333333

statistics.variance(X_PLUS_Y.tolist())
147.43333333333334

协方差应如下所示:

np.cov(X,Y,ddof=1)
 
array([[47.56666667, 27.24444444],
       [27.24444444, 45.37777778]])

我们需要的是偏离对角线的值,但是你已经可以看到这个矩阵的总和是方差,因此你有 var(X) + 2*cov(X,Y) + var(Y):

X.var(ddof=1) + 2*np.cov(X,Y,ddof=1)[0,1] + Y.var(ddof=1)
147.4333333333333