0

语境

我正在使用scipy's ks_samp来应用 Kolmogorov-Smirnov-test。

我使用的数据是双重的:

  1. 我有一个数据集d1,它是应用于机器学习模型预测的评估指标m1(即MASE - Mean Average Scaled Error)。这些大约是 6.000 个数据点,这意味着使用 6.000 个预测的 MASE 结果m1
  2. 我的第二个数据集与我使用的第二个模型的差异d2类似,与.d1m2m1

两个数据集的分布如下:

d1
d1
d2
d2

可以看出,分布看起来非常相似。我想通过 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)。但从图像上可以看出,它绝对应该。

问题

  1. 我是否误解了 Kolmogorov-Smirnov 的用法,并且此测试不适用于用例/分发类型?
  2. 如果第一个可以回答是,我还有什么选择?

编辑

下面是叠加图。从交叉验证的答案和评论中得出结论,我认为“中间”的分歧可能是原因,因为 KS 在那里很敏感。
覆盖

4

2 回答 2

1

我还在Cross Validated上发布了这个问题,并在那里获得了有用的见解和答案(另请注意对问题的新编辑)。

Kolmogorov-Smirnov (KS) 对中间的偏差非常敏感。从问题中新发布的叠加图片中可以看出,确实存在一些偏差。据推测,这是 KS 拒绝 H0 的原因(=df1和的相同分布df2)。

有关更详细的答案,请参阅交叉验证上的@BruceETs 答案,谁值得为此功劳。

于 2019-08-29T22:57:14.660 回答
0

关键是您对 使用了另一个模型d2,因此 Kolmogorov-Smirnov-test 预测第二个数据集的分布与 不同d1,即使它看起来完全一样。尽管这不是一种概率方法,但您可以考虑使用np.allclose来比较两个数据集。

于 2019-08-25T08:32:48.913 回答