协方差结果矩阵的解释

时间:2018-07-05 01:56:50

标签: python-3.x numpy covariance-matrix

我试图从读取协方差矩阵的结果中弄清楚。我知道结果符号是否均> 0,则表示阵列朝相同方向移动。

x = np.array([[10,39,19,23,28],
              [43,13,32,21,20],
              [15,16,22,85,15]])

print(np.cov(x))

如何解释这个结果?

[[ 115.7  -120.55  -18.6 ]
 [-120.55  138.7   -76.35]
 [ -18.6   -76.35  933.3 ]]

编辑:除了Luca的答案之外,我还添加了一个简单的折线图,以帮助可视化数据的分布(方差)和移动(协方差)。

enter image description here

1 个答案:

答案 0 :(得分:3)

协方差矩阵

covariance matrix是一个 nxn 对称矩阵,其中 n 是您开始使用的矩阵的列数,并显示矢量变量协变量,表示它们趋于相对于彼此移动的方式。

组件

在主对角线上找到矢量的方差,在所有其他坐标上找到协方差,因为var(X)= cov(X,X)。

正负系数

在主对角线上,任何值都不能为负,因为它们表示矢量的方差。在任何其他位置上,协方差可以作为两个standard deviations(始终为非负数)( s (X)和 s ( Y))和Pearson correlation coefficient p ,它们在[-1,1]之间变化:这是使值为正或负的系数。

cov (X,Y)= p (X,Y) s (X) s (是)

有三种可能性:

  1. p (X,Y)== 0:向量之间没有相关性。
  2. p (X,Y)> 0:正相关,这意味着当向量X增大时,Y的大小也会增大。
  3. p (X,Y)<0:负相关,这意味着当向量X增大时,Y的大小会减小。

标准偏差对矩阵系数的影响为“正”幅值,这意味着当数据点的标准偏差较高时,它们会显示出更多的相关性。

可视化

为了更好地可视化矩阵的内容,我使用了heatmap python包中的seaborn函数。我也是  添加了相关矩阵以更好地比较结果。

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")

输出:

Correlation and covariance matrices

解释

第三个向量与其他向量相比,具有极高的方差。所有向量都具有负相关,尤其是向量1和2是相关的。向量1和3的相关性最低。