numpy.cov
-
numpy.cov(m, y=None, rowvar=True, bias=False, ddof=None, fweights=None, aweights=None)[source] -
Оцените ковариационную матрицу, заданную данными и весами.
Ковариация указывает на уровень, в котором две переменные изменяются вместе. Если мы рассматриваем N-мерные выборки,
, то элемент ковариационной матрицы
— это ковариация
и
. Элемент
— это дисперсия
.
См. примечания для обзора алгоритма.
Параметры: m : array_like
Массив 1-D или 2-D, содержащий несколько переменных и наблюдений. Каждая строка
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.Введено в версии 1.5.
fweights : array_like, int, необязательно
Массив целых чисел 1-D частот весов; количество раз, когда каждый вектор наблюдения должен быть повторён.
Введено в версии 1.10.
aweights : array_like, необязательно
Массив 1-D весов векторов наблюдений. Эти относительные веса обычно велики для наблюдений, считающихся «важными», и меньше для наблюдений, считающихся менее «важными». Если
ddof=0массив весов может быть использован для назначения вероятностей векторам наблюдений.Введено в версии 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.stack((x, y), axis=0) >>> 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
-
© 2005–2019 NumPy Developers
Licensed under the 3-clause BSD License.
https://docs.scipy.org/doc/numpy-1.14.5/reference/generated/numpy.cov.html