ковариационная матрица
A ковариационная матрица является симметричной матрицей nxn , где n - количество столбцов матрицы, с которой вы начинаете, и показывает, как векторные переменные ковариата , означающая, как они имеют тенденцию двигаться относительно друг друга.
Компоненты
На главной диагонали вы найдете дисперсию вектора, а по всем остальным координатам - ковариацию, поскольку var (X) = cov (X, X).
Положительные и отрицательные коэффициенты
В главной диагонали никакие значения не могут быть отрицательными, поскольку они представляют дисперсию вектора. В любой другой позиции ковариация может быть получена как произведение двух стандартных отклонений (которые всегда неотрицательны) ( s (X) и s (Y)) и коэффициент корреляции Пирсона p , который вместо этого изменяется между [-1, 1]: это коэффициент, который делает значения положительными или отрицательными.
cov (X, Y) = p (X, Y) s (X) s (Y)
Есть три варианта:
- p (X, Y) == 0: нет корреляции между векторами.
- p (X, Y)> 0: положительная корреляция, означающая, что при увеличении вектора X величина Y увеличивается.
- p (X, Y) <0: </strong> отрицательная корреляция, означающая, что при увеличении вектора X величина Y уменьшается.
Стандартные отклонения влияют на коэффициенты в матрицах «просто», то есть они подчеркивают большую корреляцию, когда стандартное отклонение точек данных выше.
Визуализация
Для лучшей визуализации содержимого матрицы я использую функцию heatmap
из пакета seaborn
python. Также я
добавили матрицу корреляции для лучшего сравнения результатов.
import numpy as np
from matplotlib import pyplot as plt
import seaborn as sns
x = np.array([[10,39,19,23,28],
[43,13,32,21,20],
[15,16,22,85,15]])
plt.rcParams['figure.figsize'] = [10, 5]
plt.axis('scaled')
plt.subplot(1,2,1)
sns.heatmap(np.cov(x),
annot=True,
cbar = False,
fmt="0.2f",
cmap="YlGnBu",
xticklabels=range(len(x)),
yticklabels=range(len(x)))
plt.title("Covariance matrix")
plt.subplot(1,2,2)
sns.heatmap(np.corrcoef(x),
annot=True,
cbar = False,
fmt="0.2f",
cmap="YlGnBu",
xticklabels=range(len(x)),
yticklabels=range(len(x)))
plt.title("Correlation matrix")
Выход:

Интерпретация
Третий вектор по сравнению с другими имеет исключительно высокую дисперсию. Все векторы имеют отрицательных корреляций , в частности, векторы 1 и 2, которые сильно коррелированы. Векторы 1 и 3 наименее коррелированы.