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)