计算 R 中连续分布的 Anderson-Darling 检验统计量

AF7*_*AF7 4 comparison r distribution

首先,我实际上不确定这是否属于 CrossValidated 还是属于 StackOverflow。如果我在错误的网站上发布了这个问题,我很抱歉。

我正在使用 R 将多个数据集与观察数据集进行比较。每个数据集都有大约 1000 万个连续浮点值(每个数据集的数据向量的长度并不完全相同)。

我通常使用标准包中的函数来计算Kolmogorov-Smirnov统计量,但现在我对分布的极值特别感兴趣。据我了解,KS 几乎隐藏了这些。Kullback-Leibler也会发生同样的情况(如果我错了,请随时纠正我)。ks.test()stats

另一方面,Anderson-Darling 检验经过加权以考虑分布的极端情况但是,我无法找到仅适用于两个向量作为输入的 AD 测试的简单实现(就像stats::ks.test()通过发出ks.test(obs.data, mod.data),其中两个输入是简单向量一样),而且我也无法理解如何使我的数据适应我尝试过的功能。

我查看了以下功能:

  • cvm.test()来自 package dgof,带有选项type="A2":需要分布作为第二个输入,而不是向量
  • ad.test()来自包truncgof:需要一个发行版作为第二个输入
  • ad.test()来自包装goftest:如上所述
  • ad.test()来自包装ADGofTest:如上所述
  • ad.test()来自包kSamples:在这种情况下,我不清楚输出代表什么,以及如何对其进行标准化,因为它似乎严重依赖于样本数量
  • ad.test()来自包nortest:仅测试正常性
  • ADbootstrap.test()来自包homtest:这似乎与标准 AD 测试有很大不同

简而言之,以上都不能像标准函数或包中的ks.test()Kullbach-Leibler 函数(接受密度值矩阵)一样简单地使用。KLdivflexmix

如何使用 R 计算两个分布之间的 AD 统计量(仅作为连续数据的两个向量提供)?

Yan*_*Yan 5

我不是统计学专家,最近正在学习AD测试,和你有同样的问题。ad.test()读了一些文章后,我有点知道如何解释by的结果kSamples

最初的AD测试是为了检查数字样本是否属于某个分布。因此,为了比较两个样本(或更多样本),我们应该使用以 k 样本方式进行测试的函数,而不是原始方式。

ad.test()如果您从包中输入两个向量kSamples

library(kSamples)
x <- ad.test(c(1,2,3,4,5), c(11,22,33,44,55))
Run Code Online (Sandbox Code Playgroud)

结果给你一个矩阵:

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
Run Code Online (Sandbox Code Playgroud)

或者,

x$ad

               AD   T.AD  asympt. P-value
version 1: 3.9127 4.5664        0.0051703
version 2: 4.0100 4.7260        0.0045199
Run Code Online (Sandbox Code Playgroud)

AD 是 Anderson-Darling 统计量,通过相应的方程计算得出。(参考文章),T.AD 是通过 (AD-(k-1))/sigma 计算的,其中 (k-1) 表示零假设下 AD 统计量的极限分布是 (k-1) 倍卷积单样本 AD 统计量的渐近分布;sigma 是 AD 统计量的标准差。然后渐近。P 值将是我们正在寻找的“p 值”。对于行,版本 1 表示连续群体中的 k 样本 AD 检验,版本 2 表示离散父群体中的 k 样本 AD 检验。所以我猜测,如果您的数据是连续的,您应该采用第一行的 p 值,如果它是离散的,则应采用第二行。