孔雀测试实现

Peacock test implementation

我想在统计上比较两个 2D 分布。因此,我想使用孔雀测试(Kolmogorov-Smirnov 测试的二维模拟)。有一个名为 Peacock.test 的 R 包声称可以实现它。

但是这个包的文档非常少,即:

The two functions: peacock2 and peacock3, provided in this package are self-explanatory and their usage is straightforward.

特别是我找不到 peacock() 函数的输出代表什么(我想这类似于 p 值)? 有没有人测试过这个功能,他们能告诉我它是什么吗(这个功能是否可靠?)?

用法示例:

x <- matrix(rnorm(12, 0, 1), ncol=2)
y <-  matrix(rnorm(16, 0, 1), ncol=2)
ks <- peacock2(x, y)
ks

不知道靠谱不靠谱,不过代码看起来挺简单的

现在有个坏消息:基于?peacock2,函数给你的是

Value:

the value of the test statistic

这意味着它不是给你的p值。 original paper ("Two-dimensional goodness-of-fit testing in astronomy", JA Peacock,皇家天文学会月刊,1983 年),给出了从 Monte Carlo 模拟得出的 table 临界值和解析近似值。要从检验统计量中获取 p 值,您必须 (1) 将检验统计量 D 转换为 Z 统计量(第 3.5 节说 Z=sqrt(n1*n2/(n1+n2))*D 用于双样本检验,前提是两个 n 值都 > 10), 然后建议你可以用 P(>Z)=2*exp(-2*(Z-0.5)^2).

来近似

绝对 推荐阅读原论文,double-checking/deriving 如果你打算使用它,请自己阅读。