gpt4 book ai didi

python - 为什么 numpy 的协方差与手动计算略有不同?

转载 作者:太空宇宙 更新时间:2023-11-03 15:47:52 25 4
gpt4 key购买 nike

我只是好奇,想问这个问题。为什么当我手动计算一组数据的协方差矩阵时,我的值与 numpy 的值略有不同?

我有两组数据XY

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]])

相似,但又不完全相同......

最佳答案

默认情况下,np.cov 计算无偏协方差,它使用因子 (N-1) 而不是您计算的 N

如果您查看 np.cov 的文档您会看到有一个参数 (bias) 可以从协方差的有偏或无偏版本中进行选择。默认情况下,它设置为 false

您可以在 here 中阅读更多有关使用不同前置因子背后的问题的信息如果你好奇的话。

关于python - 为什么 numpy 的协方差与手动计算略有不同?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48881499/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com