协方差结果矩阵的解释
interpretation of covariance result 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 的回答之外,我还添加了一个简单的折线图来帮助可视化数据的传播(方差)和移动(协方差)。
协方差矩阵
A covariance matrix 是一个 nxn 对称矩阵,其中 n 是您开始使用的矩阵的列数并展示了向量变量如何协变量,这意味着它们如何相对于彼此移动。
组件
在主对角线上找到向量的方差,在所有其他坐标上找到协方差,因为 var(X) = cov(X, X)。
正负系数
在主对角线上,任何值都不能为负,因为它们表示向量的方差。在任何其他位置,协方差可以作为两个 standard deviations (that are always non-negative) (s(X) and s(Y)) and the Pearson correlation coefficient 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:负相关,意思是当向量X增长时,Y的幅度减小.
标准偏差对矩阵中系数的影响是 "just" 数量级,这意味着当数据点的标准偏差较高时,它们会突出更多相关性。
可视化
为了更好地可视化矩阵的内容,我使用了 heatmap
function from the 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 的相关性最低。
我试图通过读取协方差矩阵的结果来理解。我知道如果结果符号都 >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 的回答之外,我还添加了一个简单的折线图来帮助可视化数据的传播(方差)和移动(协方差)。
协方差矩阵
A covariance matrix 是一个 nxn 对称矩阵,其中 n 是您开始使用的矩阵的列数并展示了向量变量如何协变量,这意味着它们如何相对于彼此移动。
组件
在主对角线上找到向量的方差,在所有其他坐标上找到协方差,因为 var(X) = cov(X, X)。
正负系数
在主对角线上,任何值都不能为负,因为它们表示向量的方差。在任何其他位置,协方差可以作为两个 standard deviations (that are always non-negative) (s(X) and s(Y)) and the Pearson correlation coefficient 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:负相关,意思是当向量X增长时,Y的幅度减小.
标准偏差对矩阵中系数的影响是 "just" 数量级,这意味着当数据点的标准偏差较高时,它们会突出更多相关性。
可视化
为了更好地可视化矩阵的内容,我使用了 heatmap
function from the 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 的相关性最低。