孔雀测试实现
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 如果你打算使用它,请自己阅读。
我想在统计上比较两个 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 如果你打算使用它,请自己阅读。