python-3.x - 协方差结果矩阵的解释

标签 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

最佳答案

协方差矩阵

A 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来自 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")

输出:

Correlation and covariance matrices

解释

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

关于python-3.x - 协方差结果矩阵的解释,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51182476/

相关文章:

python - 对于 Python2 到 Python3 的代码转换,哪个版本的 Python 和 Django 最适合?

python - 如何加密 DRF 中的响应?

python - 如何将两个 pandas 列混合到一个数据框中,第一列的第一个元素,第二列的第二个元素等等?

python - 如何有效地填充由列表中值的成对组合组成的不完整 pandas 数据框?

statistics - 如何从方差-协方差矩阵计算标准误差?

r - 如何在 R 中的 Vars 包中使用套索

python - 这种奇怪的冒号行为在做什么?

python - 隔离 3d 数据点的策略

python - 使用 Numpy 计算一系列元素