numpy.cov
- numpy.cov(m, y=None, rowvar=True, bias=False, ddof=None, fweights=None, aweights=None, *, dtype=None)[source]
-
Оценить ковариационную матрицу, заданные данные и веса.
Ковариация указывает на уровень, до которого две переменные изменяются вместе. Если мы изучаем 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 (по умолчанию), то каждая строка представляет переменную, а наблюдения находятся в столбцах. В противном случае отношение транспонируется: каждый столбец представляет переменную, а строки содержат наблюдения. - biasbool, необязательно
-
Нормализация по умолчанию (False) — по
(N - 1), гдеN— количество предоставленных наблюдений (несмещённая оценка). Еслиbiasравно True, то нормализация поN. Эти значения могут быть переопределены с помощью ключевого словаddofв версиях numpy >= 1.5. - ddofint, необязательно
-
Если не
None, значение по умолчанию, подразумеваемоеbias, переопределяется. Обратите внимание, чтоddof=1вернёт несмещённую оценку, даже если обаfweightsиaweightsуказаны, аddof=0вернёт простое среднее значение. Подробности см. в примечаниях. Значение по умолчанию —None.Доступно начиная с версии 1.5.
- fweightsarray_like, int, необязательно
-
Одномерный массив целых весов частоты; количество раз, когда каждый вектор наблюдения должен повторяться.
Доступно начиная с версии 1.10.
- aweightsarray_like, необязательно
-
Одномерный массив весов вектора наблюдений. Эти относительные веса обычно велики для наблюдений, считающихся «важными», и меньше для наблюдений, считающихся менее «важными». Если
ddof=0, массив весов можно использовать для присвоения вероятностей векторам наблюдений.Доступно начиная с версии 1.10.
- dtypeтип данных, необязательно
-
Тип данных результата. По умолчанию тип данных результата будет иметь как минимум точность
numpy.float64.Доступно начиная с версии 1.20.
- Возвращает
-
- outndarray
-
Ковариационная матрица переменных.
См. также
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), как и должно быть.Примеры
Рассмотрим две переменные, \(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)
© 2005–2022 NumPy Developers
Licensed under the 3-clause BSD License.
https://numpy.org/doc/1.21/reference/generated/numpy.cov.html