numpy.cov
-
numpy.cov(m, y=None, rowvar=1, bias=0, ddof=None, fweights=None, aweights=None)[source] -
Оценить матрицу ковариаций, заданную данными и весами.
Ковариация указывает на уровень совместного изменения двух переменных. Если мы исследуем N-мерные выборки,
, то элемент матрицы ковариаций
является ковариацией
и
. Элемент
является дисперсией
.См. примечания для обзора алгоритма.
Параметры: 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 = np.array([[0, 2], [1, 1], [2, 0]]).T >>> x array([[0, 1, 2], [2, 1, 0]])Обратите внимание, как
увеличивается, а
уменьшается. Матрица ковариаций чётко показывает это:>>> np.cov(x) array([[ 1., -1.], [-1., 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