numpy.cov
-
numpy.cov(m, y=None, rowvar=True, bias=False, ddof=None, fweights=None, aweights=None)[source] -
Оценить ковариационную матрицу, заданную данными и весами.
Ковариация показывает степень, в которой две переменные изменяются вместе. Если мы рассматриваем N-мерные выборки,
, то элемент ковариационной матрицы
— это ковариация
и
. Элемент
— это дисперсия
.См. примечания для обзора алгоритма.
Параметры: m : array_like
Одномерный или двумерный массив, содержащий несколько переменных и наблюдений. Каждая строка
mпредставляет переменную, а каждый столбец — одно наблюдение за всеми этими переменными. Также см.rowvarниже.y : array_like, необязательно
Дополнительный набор переменных и наблюдений.
yимеет такую же форму, что иm.rowvar : bool, необязательно
Если
rowvarравно True (по умолчанию), то каждая строка представляет переменную, а наблюдения находятся в столбцах. В противном случае отношение транспонировано: каждый столбец представляет переменную, а строки содержат наблюдения.bias : bool, необязательно
Нормализация по умолчанию (False) — по
(N - 1), гдеN— это количество предоставленных наблюдений (смещённая оценка). Еслиbiasравно True, то нормализация по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.11.0/reference/generated/numpy.cov.html