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的順序。
這麼小的差距足以讓斯巴克爾甩這麼多嗎?