【发布时间】:2021-10-04 09:37:17
【问题描述】:
我正在尝试使用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.]]
问题:发生了什么以及如何解决?
【问题讨论】:
-
为什么相关性是错误的?
-
@Luke 相关性应该是-1和1之间的浮点数,如果向量不相反,则不能是-1。
-
如果两个变量之间的相关性为
-1和1,则表示它们完全相关,但方向相反 -
但这在这种情况下是不可能的,因为向量是随机的而不是相反的(在示例中:[-2.61268708 8.32602293] [6.42020314 3.43806504])。
-
你认为在这种情况下会有什么相关性?
标签: python numpy pearson-correlation