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.Добавлен в версии 1.5.
fweights : array_like, int, необязательно
Одномерный массив целых весов частоты; число раз, когда каждый вектор наблюдения должен быть повторён.
Добавлен в версии 1.10.
aweights : array_like, необязательно
Одномерный массив весов вектора наблюдения. Эти относительные веса, как правило, велики для наблюдений, считающихся «важными», и меньше для наблюдений, считающихся менее «важными». Если
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.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–2017 NumPy Developers
Licensed under the NumPy License.
https://docs.scipy.org/doc/numpy-1.13.0/reference/generated/numpy.cov.html