我只是好奇,并且以为我会问这个问题。为什么当我手动计算一组数据的协方差矩阵时,我的值与numpy的值略有不同?
我有两组数据X
和Y
data = io.loadmat("datafile.mat")['data']
X = data[:,0]
Y = data[:,1]
协方差矩阵可以这样计算(通过查看X和X,X和Y,Y和X等之间的相关性)
n = len(X)
corXX = np.var(X)
corXY = (1/n)*np.dot(X - np.mean(X), Y - np.mean(Y))
corYY = np.var(Y)
covariance = np.array([[corXX, corXY], [corXY, corYY] ])
对于我的数据集,这给了我:
array([[ 1.722105 , 5.34104265],
[ 5.34104265, 17.72717759]])
使用numpy的协方差函数covariance = np.cov(X,Y)
给了我
array([[ 1.7395 , 5.39499258],
[ 5.39499258, 17.90623999]])
类似,但不完全相同......