比较两个(或更多)离散分布

机器算法验证 分布 拟合优度 kolmogorov-smirnov 测试 离散数据
2022-03-15 20:10:24

我想知道比较两个(或更多)离散分布的最有效方法是什么。

我知道可以使用 Kolmogorov-Smirnov 检验(如果针对离散 ecdfs 进行了校正)和/或卡方检验,并且可以比较其他汇总统计数据(均值/方差/偏度 &c),但还有更多像Cramér–von_Mises 测试一样强大的测试?整个离散分布不太可能存在太大偏差,因此我希望测试具有尽可能大的功效,如果分布是来自连续分布的样本,C-vM 最适合这种情况.

一些背景:

多台机器生成固定长度的字符串,并添加“尾部”(随机整数 - 比如说 0 到 250 - 特殊字符)。改变机器所处的环境可能(也可能不会)改变尾长分布。

在不同时间点从机器中获取所有字符串将给出特殊字符尾长度的时变分布。

我想知道我们是否可以测试随着时间的推移尾长分布是否有显着变化。

3个回答

看起来您对所有可用的测试都有清晰的了解。我的建议是,如果你能拿到 Ralph B. D'Agostino 的《Goodness-of-Fit-Techniques》一书。它提供了测试的背景以及很好的例子。这里是 pdf http://www.gbv.de/dms/ilmenau/toc/04207259X.PDF的链接。

您可以添加到比较概率密度的方法列表中的一件事是 Kullback-Leibler 散度。如果您是科学家,您会看到此方法与熵之间的关系,但这不是必需的。这只是我从 Wikipedia 中获取的方法的介绍(解释)“在概率论和信息论中,Kullback-Leibler 散度(也是信息散度、信息增益、相对熵、KLIC 或 KL 散度)是衡量两个概率分布 P 和 Q 之间的差异......”这在 Matlab 中有介绍。

Kullback-Leibler 的一个“分支”是概率分布的 Jensen-Shannon 散度(这是比较概率分布 (PD) 的一种更常见的方法。这着眼于 PD 的相似性。应该有很多关于这个和MatLab 中也有介绍。

这些方法不在我上面给你的参考资料中。

我还找到了一篇好论文给你看。https://www.math.hmc.edu/~su/papers.dir/metrics.pdf,“关于选择和限定概率度量”。涵盖的指标包括:差异、海灵格距离、Kullback-Leibler 散度、Kolmogorov 指标、Levy 指标、Prokhorov 指标、分离距离、总变化距离、Wasserstein(或 Kantorovich)指标和卡方指标。

我还应该提到“qq 图”(其中 q 指分位数)作为比较 2 个概率分布(或将数据与概率分布进行比较)的简单方法。

之前遗漏的一项测试是 Anderson-Darling 测试。这里有两个参考:(1)http://www.win.tue.nl/~rmcastro/AppStat2013/files/lectures23.pdf(2)https://asaip.psu.edu/Articles/beware-the -kolmogorov-smirnov-test第二个参考资料介绍了 Kolmogorov-Smirnov 检验可能遇到的问题。

您可以使用带有离散分布的 Cramer-von Mises 统计量(或任何您认为有意义的类似统计量),只要您将其视为重采样测试而不是依赖于假设连续分布的表。

您可以查看分布之间的最佳传输它经常用于计算机视觉(名称为 Earth Mover Distance)来比较直方图(开创性论文)。它也用于机器学习,参见。Cuturi(例如本文)和Marti 等人的工作。.