点积为0但np.corcoef返回一个负值



有人可以帮助我了解我在这里做错了什么(附代码的图像)?当我做点积的时候,我得到的几乎是0,除了np。corcoef返回显著的负相关值。

eigenvectors_sorted[0:2]
> array([[-0.4252893 ,  0.42100611,  0.71434339,  0.36276216],
[ 0.14612219,  0.90470509, -0.33510219, -0.21877734]])
np.corrcoef(eigenvectors_sorted[0], eigenvectors_sorted[1])
> array([[ 1.        , -0.16304091],
[-0.16304091,  1.        ]])
np.dot(eigenvectors_sorted[0], eigenvectors_sorted[1])
> 5.551115123125783e-17

我在等np。corcoef也返回0值,而不是-0.163,我无法理解我做错了什么。

我认为这不是衡量同一件事,(最好问stats.stackexchange.com的数学解释)。

通过使用np.repeat多次重复数据,快速证明相关性与点的数量无关,而点积则不是:

eigenvectors_sorted = np.repeat(eigenvectors_sorted, 100, axis=1)
np.corrcoef(eigenvectors_sorted[0], eigenvectors_sorted[1])
# array([[ 1.        , -0.16304092],
#        [-0.16304092,  1.        ]])
np.dot(eigenvectors_sorted[0], eigenvectors_sorted[1])
# -8.079945611472183e-07

有更多的点:

eigenvectors_sorted = np.repeat(eigenvectors_sorted, 1_000_000, axis=1)
np.corrcoef(eigenvectors_sorted[0], eigenvectors_sorted[1])
# array([[ 1.        , -0.16304092],
#        [-0.16304092,  1.        ]])
np.dot(eigenvectors_sorted[0], eigenvectors_sorted[1])
# -0.008079939827439375

最新更新