可以说我有两个或多个n维连续值向量样本。有没有一种非参数的方法来测试这些样本是否来自相同的分布?如果是这样,R或python中是否有此功能?
可以说我有两个或多个n维连续值向量样本。有没有一种非参数的方法来测试这些样本是否来自相同的分布?如果是这样,R或python中是否有此功能?
Answers:
当我意识到Kolmogorov-Smirnov检验不是多变量时,我对多变量两个样本测试进行了很多研究。因此,我查看了Chi检验,Hotelling的T ^ 2,Anderson-Darling,Cramer-von Mises准则,Shapiro-Wilk等。您必须小心,因为其中一些检验依赖于要比较的向量,它们是相同的长度。其他仅用于拒绝正态性假设,而不用于比较两个样本分布。
领先的解决方案似乎将两个样本的累积分布函数与所有可能的排序进行了比较,您可能会怀疑它们的计算量很大,一次运行包含几千条记录的样本的时间约为几分钟:
https://cran.r-project.org/web/packages/Peacock.test/Peacock.test.pdf
如Xiao的文档所述,Fasano和Franceschini测试是孔雀测试的一种变体:
http://adsabs.harvard.edu/abs/1987MNRAS.225..155F
Fasano和Franceschini测试是专门为减少计算强度而设计的,但是我没有在R中找到他们的工作的实现。
对于那些想要探索孔雀vs法萨诺和Franceschini检验的计算方面的人,请查看二维Kolmogorov–Smirnov检验的计算有效算法
是的,有两种用于检验两个多元样本是否来自同一联合分布的非参数方法。我将提及L Fischman所提到的细节之外的细节。您要问的基本问题可以称为“两个样本问题”,并且诸如Journal of Machine Learning Research和Annals of Statistics等期刊目前正在进行大量研究。据我对这个问题的一点了解,我可以给出如下指导
如果您希望将各种点集(样本集)与参考点集进行比较,以查看它们与参考点集的近似程度,则可以使用f-散度。
可能还有其他方法可以解决此问题,但这绝不是您问题的全面解决方法;)