Kolmogorov-Smirnov (ks_2samp) p 值不符合预期 - 错误的测试或理解?

Kolmogorov-Smirnov (ks_2samp) p-value not as expected - Wrong test or understanding?

上下文

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

我使用的数据是双重的:

  1. 我有一个数据集 d1,它是应用于机器学习模型预测的评估指标 m1(即 MASE - 平均比例误差).这些大约有 6.000 个数据点,这意味着使用 m1.
  2. 的 6.000 个预测的 MASE 结果
  3. 我的第二个数据集 d2 类似于 d1,不同之处在于我使用了第二个模型 m2,它与 m1 略有不同。

两个数据集的分布如下:

d1

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 的用法,这个测试不适用于 use-case/kind 分布?
  2. 如果第一个可以回答是,我还有什么选择?

编辑

下面是叠加图。从对 Cross Validated 的答案和评论得出结论,我认为 "middle" 中的分歧可能是原因,因为 KS 在那里很敏感。

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

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

Kolmogorov-Smirnov (KS) 对中间的偏差非常敏感。从问题中新发布的overlay-picture可以看出,右边有一些偏差。据推测,这就是 KS 拒绝 H0 的原因(= df1df2 的相同分布)。

有关更详细的答案,请参阅 @BruceETs answer on Cross Validated 谁值得为此做出贡献。