numpy 为什么np.corrcoef不能像预期的那样处理两个二维向量?

dgtucam1  于 2023-10-19  发布在  其他
关注(0)|答案(1)|浏览(85)

我尝试使用np.corrcoef计算两个二维向量之间的Pearson相关系数。当向量的维数不同于2时,它们工作正常,例如:

import numpy as np
x = np.random.uniform(-10, 10, 3)
y = np.random.uniform(-10, 10, 3)
print(x, y)
print(np.corrcoef(x,y))

输出量:

[-6.59840638 -1.81100446  5.6158669 ] [ 6.7200348  -7.0373677  -2.11395157]
[[ 1.         -0.53299763]
 [-0.53299763  1.        ]]

然而,当维数为正好为2时,只有1-1的相关性是错误的:

import numpy as np
x = np.random.uniform(-10, 10, 2)
y = np.random.uniform(-10, 10, 2)
print(x, y)
print(np.corrcoef(x,y))

输出1:

[-2.61268708  8.32602293] [6.42020314 3.43806504]
[[ 1. -1.]
 [-1.  1.]]

输出2:

[ 5.04249697 -3.6599369 ] [6.12936665 3.15827974]
[[1. 1.]
 [1. 1.]]

输出3:

[7.33503682 7.7145613 ] [-9.54304108  7.43840944]
[[1. 1.]
 [1. 1.]]

**问题:**发生了什么,如何解决?

nwlls2ji

nwlls2ji1#

有几个误解导致你的困惑:

  • 我将使用row major order作为numpy“x的每一行代表一个变量,每一列代表所有这些变量的一个观察结果。
  • Pearson相关系数描述了两个变量之间的线性关系。如果每个变量只有1个值,则始终可以在2个值之间创建线性关系。通过标准化,你总是得到1或-1。
  • 协方差或相关矩阵通常在随机向量X=(X1,...,Xn)的分量之间计算。当你说你想要两个向量之间的相关性时,不清楚你是否想要X和Y之间的互相关,在这种情况下你需要np.correlate

相关问题