Python:具有 2 个样本的二维 Kolmogorov-Smirnov

Python: 2-D Kolmogorov-Smirnov with 2 samples

我有两个数据集,每个数据集都是二维的:(X1,Y1) 和 (X2,Y2)。 我希望能够计算 KS 检验统计量以确定这两个数据集中的值是否来自相同或不同的分布。我以前用过scipy.stats.ks_2samp,但那是在一个维度上比较两个数据集,或者可能是两个样本的概率分布。然而,在这种情况下,我坚持的不是概率分布,而是两个样本的离散 x 和 y 值。在这种情况下,我该如何继续获取 python 中的 ks 测试值?对于每个参数 X1、Y1、X2 和 Y2,我都有单独的 numpy 数组。 谢谢!

This Notebook provide a Python implementation for 2D K-S test with 2 samples. The .py file can be downloaded here。代码好像是C代码的翻译,如果样本量大,效率可能会有问题。 (破link)

更多信息

该算法在两篇论文中首次开发

一个很好的介绍和 C 实现可以在

中找到

这里有个post标题Beware the Kolmogorov-Smirnov test也和主题有关,你不妨看看

更新

我也用 numpy 写了一个 python 实现,它应该比引用的笔记本有更好的性能。您可以找到代码 here.

你最好在任何申请之前检查代码(无论使用哪个)与原始papers/books。 python 2d KS 测试的实现比 numpy/scipy 中的其他共同测试要少得多。