我试图使用np.corrcoef
计算两个向量在二维中的Pearson相关系数。当向量的维数不同于两个时,它们工作得很好,例如:
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. ]]
但是,当维度恰好是两个时,,只有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.]]
问题:发生了什么?如何解决?
有几个误解会导致你的困惑:
我将使用行主要顺序为numpy " x的每一行表示一个变量,每一列表示所有这些变量的单个观察值。">
-
Pearson相关系数描述了两个变量之间的线性关系。如果每个变量只有一个值,则可以在这两个变量之间创建线性关系。通过规范化,您将始终得到1或-1。
-
通常在随机向量X=(X1,....,Xn)的分量之间计算协方差或相关矩阵。T。当你说你想要两个向量之间的相关性时,你不清楚你是否想要X和Y之间的交叉相关性,在这种情况下你需要np. correlation。