首先,我并不确定这是属于CrossValidated还是StackOverflow。如果我在错误的网站上发布此问题,我很抱歉。
我使用R将几个数据集与观测数据集进行比较。每个数据集都有大约1000万个连续浮点值(每个数据集的数据向量长度不完全相同)。
我通常使用标准ks.test()
包中的stats
函数来计算 Kolmogorov-Smirnov 统计量,但现在我对极端值非常感兴趣分配。据我所知,KS几乎隐藏了这些。对于 Kullback-Leibler 也是如此(如果我错了,请随时纠正我。)
stats::ks.test()
那样只需发出ks.test(obs.data, mod.data)
,其中两个输入很简单矢量),我都不能理解如何使我的数据适应我尝试过的功能。
我已经看过以下功能:
cvm.test()
的dgof
,带有选项type="A2"
:需要分发作为第二个输入,而不是向量ad.test()
的truncgof
:需要分发作为第二个输入ad.test()
包的goftest
:如上所述ad.test()
包的ADGofTest
:如上所述ad.test()
的kSamples
:在这种情况下,我不清楚输出代表什么,以及我如何将其标准化,因为它似乎严重依赖关于样本数量ad.test()
的nortest
:仅测试正常性ADbootstrap.test()
的homtest
:这似乎与标准AD测试完全不同简而言之,上述所有内容都不能简单地用作标准ks.test()
函数或来自包KLdiv
的Kullbach-Leibler函数flexmix
(它接受矩阵密度值)。
如何使用R?
计算两个分布之间的AD统计量,这两个分布只是作为连续数据的两个向量提供的?答案 0 :(得分:3)
我不是统计学方面的专家,而且我正在学习AD测试,并且与你有同样的问题。在阅读了一些文章后,我知道如何通过ad.test()
kSamples
来解释结果。
原始AD测试用于检查数字样本是否属于某个分布。因此,为了比较两个样本(或更多),我们应该使用以k样本方式进行测试的函数,而不是原始方式。
如果您从ad.test()
包中输入两个向量kSamples
:
library(kSamples)
x <- ad.test(c(1,2,3,4,5), c(11,22,33,44,55))
结果为您提供了一个矩阵:
print(x)
Anderson-Darling k-sample test.
Number of samples: 2
Sample sizes: 5, 5
Number of ties: 0
Mean of Anderson-Darling Criterion: 1
Standard deviation of Anderson-Darling Criterion: 0.63786
T.AD = ( Anderson-Darling Criterion - mean)/sigma
Null Hypothesis: All samples come from a common population.
AD T.AD asympt. P-value
version 1: 3.913 4.566 0.00517
version 2: 4.010 4.726 0.00452
,或者
x$ad
AD T.AD asympt. P-value
version 1: 3.9127 4.5664 0.0051703
version 2: 4.0100 4.7260 0.0045199
AD是Anderson-Darling统计量,由相应的方程计算。 (ref article),T.AD由(AD-(k-1))/ sigma计算,其中(k-1)表示在零假设下限制AD统计量的分布是(k-1) - 单样本AD统计量的渐近分布的折叠卷积; sigma是AD统计量的标准差。然后渐近。 P值将是我们正在寻找的“p值”。对于行,版本1表示连续群体中的k样本AD测试,版本2表示具有离散父群体的k样本AD测试。所以我猜,如果你的数据是连续的,你应该取第一行的p值,如果它是离散的,那么第二行。