Var (x) и cov (x, x) не дают одинакового результата в numpy - PullRequest
18 голосов
/ 14 декабря 2011

Свойство ковариации состоит в том, что 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 ]

22 голосов
/ 14 декабря 2011

Вы должны использовать z = cov (x, bias = 1), чтобы нормализовать на N, потому что var также является нормой на N (согласно this

11 голосов
/ 14 декабря 2011

По умолчанию ddof cov (Нет) и var (0) различаются.Попробуйте указать ddof (или смещение):

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