协方差矩阵的对角线元素不是1个Pandas/numpy

2024-04-25 07:13:03 发布

您现在位置:Python中文网/ 问答频道 /正文

我有以下数据帧:

   A  B
0  1  5
1  2  6
2  3  7
3  4  8

我想计算协方差

^{pr2}$

使用numpy for cov作为:

numpy.cov(a,b)

我得到:

array([[ 1.66666667,  1.66666667],
   [ 1.66666667,  1.66666667]])

对角线元素不应该是1吗?如何使对角线元素为1?在


Tags: 数据numpy元素forcovarray协方差对角线
3条回答

不,他们不应该。我想你可能把它和相关性混淆了。 相关和协方差是不同的。在

你在对角线上看到的只是变量的方差! 公式的Wiki截图-

enter image description here

Wiki Link

使用^{}
在这里用熊猫造出的方法也没用。相关性将是一个,因为你已经用它们各自的标准差归一化了不同的序列。在

df.corr() 

     A    B
A  1.0  1.0
B  1.0  1.0

^{}得到你的时候

^{pr2}$

其他海报是正确的。我们可以看到正确地进行数学运算,我们得到

df.cov().div(df.std()).div(df.std(), 0)

     A    B
A  1.0  1.0
B  1.0  1.0

我相信你要找的功能应该是努比·科科夫而不是numpy.cov公司. 在

相关矩阵与协方差矩阵的关系如下:

R[i,j] = C[i,j]/sqrt(C[i,i]*C[j,k])

相关问题 更多 >