numpy.cov#

numpy.cov(m, y=None, rowvar=True, смещение=False, ddof=None, fweights=None, aweights=None, *, dtype=None)[источник]#

Оцените ковариационную матрицу, учитывая данные и веса.

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

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

Параметры:
marray_like

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

yarray_like, необязательный

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

rowvarbool, необязательно

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

смещениеbool, необязательно

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

ddofint, необязательный

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

fweightsarray_like, int, optional

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

aweightsarray_like, необязательный

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

dtypeтип данных, опционально

Тип данных результата. По умолчанию возвращаемый тип данных будет иметь по крайней мере numpy.float64 точность.

Новое в версии 1.20.

Возвращает:
выходndarray

Ковариационная матрица переменных.

Смотрите также

corrcoef

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

Примечания

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

>>> m = np.arange(10, dtype=np.float64)
>>> f = np.arange(10) * 2
>>> a = np.arange(10) ** 2.
>>> ddof = 1
>>> w = f * a
>>> v1 = np.sum(w)
>>> v2 = np.sum(w * a)
>>> m -= np.sum(m * w, axis=None, 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) как и должно быть.

Примеры

>>> import numpy as np

Рассмотрим две переменные, \(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.stack((x, y), axis=0)
>>> np.cov(X)
array([[11.71      , -4.286     ], # may vary
       [-4.286     ,  2.144133]])
>>> np.cov(x, y)
array([[11.71      , -4.286     ], # may vary
       [-4.286     ,  2.144133]])
>>> np.cov(x)
array(11.71)