【发布时间】:2019-12-29 17:11:56
【问题描述】:
上下文
我正在使用 scipy's ks_samp 来应用 Kolmogorov-Smirnov-test。
我使用的数据是双重的:
- 我有一个数据集
d1,它是应用于机器学习模型m1(即MASE - Mean Average Scaled Error)预测的评估指标。这些大约是 6000 个数据点,这意味着使用m1进行 6000 次预测的 MASE 结果。 - 我的第二个数据集
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)
据我了解,这样的 p 值表明分布不相似(拒绝 H0)。但从图片上可以看出,它绝对应该这样做。
问题
- 我是否误解了 Kolmogorov-Smirnov 的用法,并且此测试不适用于分发的用例/种类?
- 如果第一个可以回答是,我还有什么选择?
编辑
下面是叠加图。从Cross Validated 上的答案和 cmets 得出结论,我认为“中间”的分歧可能是原因,因为 KS 在那里很敏感。
【问题讨论】:
-
“看起来相似”和来自同一个分布之间有很大的不同。例如,
sample1 = np.random.normal(scale=1, size=6000)和sample2 = np.random.normal(scale=1.25, size=6000)的分布看起来很相似,但对这些样本应用 KS 检验也会得到接近 1e-10 的 p 值。
标签: python scipy statistics hypothesis-test kolmogorov-smirnov