我有两个维度的两个数据集:(X1,Y1)和(X2,Y2)。 我希望能够计算KS检验统计量,以确定来自这两个数据集的值是来自相同或不同的分布。之前我使用过scipy.stats.ks_2samp,但是比较一个维度中的两个数据集,或者两个样本的概率分布。然而,在这种情况下,我坚持不是概率分布,而是两个样本的离散x和y值。对于这种情况,我怎样才能在python中获得ks测试值?我为每个参数X1,Y1,X2和Y2分别设置了numpy数组。 谢谢!
答案 0 :(得分:3)
This Notebook为2个样本提供了用于2D K-S测试的Python实现。 .py
文件可以下载here。代码似乎是C
代码的翻译,如果样本量很大,效率可能会有问题。
该算法首先在两篇论文中开发
可以在
中找到一个很好的介绍和C
实现
Press, W.H. et al. 1992, Numerical Recipes in C,第14.7节,第645页。
您可以在本书的其他版本中找到C++/Fortran
实施。
此处标题为Beware the Kolmogorov-Smirnov test的帖子也与主题相关,您可能需要查看。
我还使用numpy编写了一个python实现,它应该有更好的性能。您可以找到代码here。
您最好使用原始论文/书籍检查代码(无论哪一个)。 2d KS测试的python实现远没有那些在numpy / scipy中的检查。