实施方差方程,但他们没有相同的结果
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
我有一个方程:$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