numpy中Var(x)和cov(x, x)结果不同

20 投票
2 回答
5442 浏览
提问于 2025-04-17 08:22

协方差的一个性质是,cov(x, x)等于var(x),也就是说,某个变量和它自己之间的协方差等于它的方差。

但是,在使用numpy的时候,我得到的结果却不一样。

from numpy import var, cov

x = range(10)
y = var(x)
z = cov(x, x)[0][1]
print y, z

我是不是做错了什么?我该怎么才能得到正确的结果呢?

2 个回答

12

在计算协方差(cov)和方差(var)时,它们的默认参数ddof是不一样的。协方差的默认值是None,而方差的默认值是0。你可以试着手动设置这个ddof参数(或者叫偏差):

>>> cov(x, x, ddof=0)
array([[ 8.25,  8.25],
       [ 8.25,  8.25]])
>>> var(x)
8.25
24

你必须使用 z=cov(x,bias=1) 来进行 N 的归一化,因为 var 也是通过 N 来进行归一化的(根据 这个链接)。

撰写回答