Вычисление ковариации с помощью 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 выполнять работу, как я написал?

Благодаря,

Дейв

2 Solutions collect form web for “Вычисление ковариации с помощью Python и Numpy”

Когда 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) 
  • setup.py для пакетов, которые зависят как от cython, так и от f2py
  • numpy: продукт с точкой в ​​столбце
  • Использование Python numpy.newaxis
  • Медленная подстановка символической матрицы с помощью sympy
  • Как найти локальные минимумы гладкого многомерного массива в NumPy эффективно?
  • Как получить нормальное распределение в диапазоне в numpy?
  • Исключительный срок: Неожиданное поведение. NaNs
  • mlpy, numpy, scipy в Google App Engine
  • Python - лучший язык программирования в мире.