numpy中Var(x)和cov(x, x)结果不同
协方差的一个性质是,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 来进行归一化的(根据 这个链接)。