上下文
我使用scipy's 桑普来应用Kolmogorov测试。
我使用的数据有两种:
d1,它是一个应用于机器学习模型m1 (即MASE -均值平均缩放误差)预测的评估度量。这大约是6.000个数据点,这意味着使用m1进行的6.000次预测的MASE-结果。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)。但从图片上可以看出,它绝对应该。
问题
编辑
下面是覆盖图.通过对交叉验证的回答和评论,我认为“中间”的分歧可能是原因,因为KS在那里是敏感的。

发布于 2019-08-29 22:57:14
我还在交叉验证上发布了这个问题,并从中得到了有益的见解和答案(也注意到了问题的新编辑)。
Kolmogorov-Smirnov (KS)对中间偏差非常敏感。正如在问题中新发布的覆盖图片中所看到的,正好有一些偏差。这大概是KS拒绝H0 (= df1和df2的相同分布)的原因。
有关更详细的答案,请参阅@BruceET在交叉验证上的答案,他值得称赞。
发布于 2019-08-25 08:32:48
关键是您为d2使用了另一个模型,所以Kolmogorov测试预测第二个数据集的分布与d1的不一样,尽管它看起来完全相同。尽管它不是一个概率方法,但是您可以考虑使用np.allclose来比较这两个数据集。
https://stackoverflow.com/questions/57642178
复制相似问题