Spec-Zone.ru › NumPy 1.10

numpy.cov

numpy.cov(m, y=None, rowvar=1, bias=0, ddof=None, fweights=None, aweights=None) [source]

Оценить матрицу ковариаций, заданную данными и весами.

Ковариация указывает на уровень совместного изменения двух переменных. Если мы исследуем N-мерные выборки, X = [x_1, x_2, ... x_N]^T, то элемент матрицы ковариаций C_{ij} является ковариацией x_i и x_j. Элемент C_{ii} является дисперсией x_i.

См. примечания для обзора алгоритма.

Параметры:

m : array_like

Одномерный или двумерный массив, содержащий несколько переменных и наблюдений. Каждая строка m представляет переменную, а каждый столбец — одно наблюдение за всеми этими переменными. Также см. rowvar ниже.

y : array_like, необязательно

Дополнительный набор переменных и наблюдений. y имеет ту же форму, что и m.

rowvar : int, необязательно

Если rowvar не равно нулю (по умолчанию), то каждая строка представляет переменную, а наблюдения находятся в столбцах. В противном случае отношение транспонировано: каждый столбец представляет переменную, а строки содержат наблюдения.

bias : int, необязательно

Нормализация по умолчанию осуществляется по (N - 1), где N соответствует количеству предоставленных наблюдений (несмещённая оценка). Если bias равно 1, то нормализация осуществляется по N. Эти значения могут быть переопределены с помощью ключевого слова ddof в версиях numpy >= 1.5.

ddof : int, необязательно

Если не None значение по умолчанию, подразумеваемое bias, переопределяется. Обратите внимание, что ddof=1 вернёт несмещенную оценку, даже если оба fweights и aweights указаны, и ddof=0 вернёт простое среднее. Подробности см. в примечаниях. Значение по умолчанию — None.

New in version 1.5.

fweights : array_like, int, необязательно

Одномерный массив целых частотных весов; количество раз, когда каждый вектор наблюдений должен быть повторён.

New in version 1.10.

aweights : array_like, необязательно

Одномерный массив весов векторов наблюдений. Эти относительные веса обычно велики для наблюдений, считаемых «важными», и меньше для наблюдений, считаемых менее «важными». Если ddof=0 массив весов может использоваться для назначения вероятностей векторам наблюдений.

New in version 1.10.

Возвращает:

out : ndarray

Матрица ковариаций переменных.

См. также

corrcoef
Нормализованная матрица ковариаций

Примечания

Предположим, что наблюдения находятся в столбцах массива наблюдений m и обозначим f = fweights и a = aweights для краткости. Шаги вычисления взвешенной ковариации таковы:

>>> w = f * a
>>> v1 = np.sum(w)
>>> v2 = np.sum(w * a)
>>> m -= np.sum(m * w, axis=1, keepdims=True) / v1
>>> cov = np.dot(m * w, m.T) * v1 / (v1**2 - ddof * v2)

Обратите внимание, что при a == 1, множитель нормализации v1 / (v1**2 - ddof * v2) переходит к 1 / (np.sum(f) - ddof), как и должно быть.

Примеры

Рассмотрим две переменные, x_0 и x_1, которые коррелируют идеально, но в противоположных направлениях:

>>> x = np.array([[0, 2], [1, 1], [2, 0]]).T
>>> x
array([[0, 1, 2],
       [2, 1, 0]])

Обратите внимание, как x_0 увеличивается, а x_1 уменьшается. Матрица ковариаций чётко показывает это:

>>> np.cov(x)
array([[ 1., -1.],
       [-1.,  1.]])

Обратите внимание, что элемент C_{0,1}, который показывает корреляцию между x_0 и x_1, имеет отрицательное значение.

Кроме того, обратите внимание, как x и y комбинируются:

>>> x = [-2.1, -1,  4.3]
>>> y = [3,  1.1,  0.12]
>>> X = np.vstack((x,y))
>>> print np.cov(X)
[[ 11.71        -4.286     ]
 [ -4.286        2.14413333]]
>>> print np.cov(x, y)
[[ 11.71        -4.286     ]
 [ -4.286        2.14413333]]
>>> print np.cov(x)
11.71

© 2008–2016 NumPy Developers
Licensed under the NumPy License.
https://docs.scipy.org/doc/numpy-1.10.1/reference/generated/numpy.cov.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API