[英]Kolmogorov-Smirnov (ks_2samp) p-value not as expected - Wrong test or understanding?
語境
我正在使用scipy's
ks_samp進行Kolmogorov-Smirnov檢驗。
我使用的數據是雙重的:
d1
,該數據集是應用於機器學習模型m1
的預測(即MASE-平均平均比例誤差 )的評估指標。 這些大約是6000個數據點,這意味着使用m1
的MASE結果為6000。 d2
與d1
類似,不同之處在於我使用了第二個模型m2
,該模型與m1
略有不同。 兩個數據集的分布如下:
可以看出,分布看起來非常相似。 我想通過Kolmogorov-Smirnov檢驗強調這一事實。 但是,我應用k2_samp
的結果表明相反:
from scipy.stats import ks_2samp
k2_samp(d1, d2)
# Ks_2sampResult(statistic=0.04779414731236298, pvalue=3.8802872942682265e-10)
據我了解,這樣的pvalue表示分布不相同(拒絕H0)。 但從圖像上可以看出,它絕對應該如此。
問題
編輯
下面是疊加圖。 從交叉驗證的答案和評論中得出的結論,我認為“中間”的差異可能是原因,因為KS在那兒很敏感。
關鍵是您對d2
使用了另一個模型,因此Kolmogorov-Smirnov-test預測第二個數據集的分布與d1
並不相同,即使它看起來完全相同。 盡管這不是一種概率方法,但是您可以考慮使用np.allclose比較兩個數據集。
我還在“ 交叉驗證”上發布了該問題,並在那里獲得了有用的見解和解答(還請注意該問題的新編輯內容)。
Kolmogorov-Smirnov(KS)對中間的偏差非常敏感。 從問題中新發布的疊加圖片可以看出,存在一些偏差。 大概這是KS拒絕H0的原因(= df1
和df2
分布相同)。
有關更詳細的答案,請參閱交叉驗證的@BruceETs答案,誰值得為此而功勞。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.