Вычисление ковариации с помощью Python и Numpy

Я пытаюсь выяснить, как вычислить ковариацию с помощью функции Python Numpy cov. Когда я передаю ему два одномерных массива, я возвращаю 2×2 матрицу результатов. Я не знаю, что с этим делать. Я не очень хорош в статистике, но я считаю, что ковариация в такой ситуации должна быть единственным числом. Это то, что я ищу. Я написал свой собственный:

def cov(a, b): if len(a) != len(b): return a_mean = np.mean(a) b_mean = np.mean(b) sum = 0 for i in range(0, len(a)): sum += ((a[i] - a_mean) * (b[i] - b_mean)) return sum/(len(a)-1) 

Это работает, но я считаю, что версия Numpy намного эффективнее, если бы я мог понять, как ее использовать.

Кто-нибудь знает, как заставить функцию Numy cov выполнять работу, как я написал?

Благодаря,

Дейв

Когда a и b являются одномерными последовательностями, numpy.cov(a,b)[0][1] эквивалентно вашему cov(a,b) .

Массив 2×2, возвращаемый np.cov(a,b) имеет элементы, равные

 cov(a,a) cov(a,b) cov(a,b) cov(b,b) 

(где, опять же, cov – это функция, которую вы определили выше).

Благодаря unutbu для объяснения. По умолчанию numpy.cov вычисляет выборочную ковариацию. Чтобы получить ковариацию популяции, вы можете указать нормализацию по общим N выборкам следующим образом:

 Covariance = numpy.cov(a, b, bias=True)[0][1] print(Covariance) 

или вот так:

 Covariance = numpy.cov(a, b, ddof=0)[0][1] print(Covariance)