1
我使用scipy.stats中的spearmanr出现了一些奇怪的问题。我使用多项式的值来获得一些更有趣的相关性,但如果我手动输入值(作为列表,转换为numpy数组),我会得到与我得到的不同的相关性如果我使用函数计算值。下面的代码应该证明我的意思:scipy.stats.spearmanr的不同结果取决于数据的生成方式
import numpy as np
from scipy.stats import spearmanr
data = np.array([ 0.4, 1.2, 1. , 0.4, 0. , 0.4, 2.2, 6. , 12.4, 22. ])
axis = np.arange(0, 10, dtype=np.float64)
print(spearmanr(axis, data))# gives a correlation of 0.693...
# Use this polynomial
poly = lambda x: 0.1*(x - 3.0)**3 + 0.1*(x - 1.0)**2 - x + 3.0
data2 = poly(axis)
print(data2) # It is the same as data
print(spearmanr(axis, data2))# gives a correlation of 0.729...
我也注意到,该阵列是微妙的不同(即data - data2
是不完全为零的所有元素),但不同的是微小的 - 1E-16的顺序。
这么小的差距足以让斯巴克尔甩这么多吗?