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。
我使用的数据是双重的:
- 我有一个数据集
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)。但是从图像上可以看出它绝对应该。
问题
- 我是不是误解了 Kolmogorov-Smirnov 的用法,这个测试不适用于 use-case/kind 分布?
- 如果第一个可以回答是,我还有什么选择?
编辑
下面是叠加图。从对 Cross Validated 的答案和评论得出结论,我认为 "middle" 中的分歧可能是原因,因为 KS 在那里很敏感。
关键是你为 d2
使用了另一个模型,所以 Kolmogorov-Smirnov-test 预测第二个数据集的分布与 d1
的分布不同,即使它看起来完全一样相同。
尽管这不是概率方法,但您可以考虑使用 np.allclose 来比较两个数据集。
我还在 Cross Validated 上发布了这个问题,并在那里获得了有用的见解和答案(另请注意对问题的新编辑)。
Kolmogorov-Smirnov (KS) 对中间的偏差非常敏感。从问题中新发布的overlay-picture可以看出,右边有一些偏差。据推测,这就是 KS 拒绝 H0 的原因(= df1
和 df2
的相同分布)。
有关更详细的答案,请参阅 @BruceETs answer on Cross Validated 谁值得为此做出贡献。
上下文
我正在使用 scipy's
ks_samp 来应用 Kolmogorov-Smirnov-test。
我使用的数据是双重的:
- 我有一个数据集
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)。但是从图像上可以看出它绝对应该。
问题
- 我是不是误解了 Kolmogorov-Smirnov 的用法,这个测试不适用于 use-case/kind 分布?
- 如果第一个可以回答是,我还有什么选择?
编辑
下面是叠加图。从对 Cross Validated 的答案和评论得出结论,我认为 "middle" 中的分歧可能是原因,因为 KS 在那里很敏感。
关键是你为 d2
使用了另一个模型,所以 Kolmogorov-Smirnov-test 预测第二个数据集的分布与 d1
的分布不同,即使它看起来完全一样相同。
尽管这不是概率方法,但您可以考虑使用 np.allclose 来比较两个数据集。
我还在 Cross Validated 上发布了这个问题,并在那里获得了有用的见解和答案(另请注意对问题的新编辑)。
Kolmogorov-Smirnov (KS) 对中间的偏差非常敏感。从问题中新发布的overlay-picture可以看出,右边有一些偏差。据推测,这就是 KS 拒绝 H0 的原因(= df1
和 df2
的相同分布)。
有关更详细的答案,请参阅 @BruceETs answer on Cross Validated 谁值得为此做出贡献。