【发布时间】:2015-09-16 23:45:45
【问题描述】:
首先,我不确定这是属于 CrossValidated 还是 StackOverflow。如果我在错误的网站上发布了这个问题,我很抱歉。
我正在使用 R 将几个数据集与一个观测数据集进行比较。每个数据集都有大约 1000 万个连续浮点值(每个数据集的数据向量的长度并不完全相同)。
我通常使用标准stats 包中的ks.test() 函数计算Kolmogorov-Smirnov 统计量,但现在我对分布的极值特别感兴趣。据我所知,KS 几乎隐藏了这些。 Kullback-Leibler 也是如此(如果我错了,请随时纠正我)。
另一方面,Anderson-Darling 检验被加权以考虑分布的极端情况。但是,我还没有找到一个简单的 AD 测试实现,它只处理两个向量作为输入(就像 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 函数 KLdiv 一样简单地使用 flexmix(它接受密度值矩阵)。
如何使用 R 计算两个分布之间的 AD 统计量,这些分布仅作为两个连续数据向量提供?
【问题讨论】:
标签: r comparison distribution