我有列联表RxC。用参数chisq.test
调用fisher.test
和simulate.p.value = TRUE, B = 5000
函数是如何工作的?
我正在使用下面的代码来验证列联表DATA
中的关联(或独立性):
chisq.test(DATA, simulate.p.value = TRUE, B = 5000, correct = FALSE)
fisher.test(DATA,hybrid = TRUE, simulate.p.value = TRUE)
我知道该测试可以执行蒙特卡洛模拟来估计该测试的p值,我想知道的是这些模拟是如何在内部完成的,也就是说,如果使模拟达到正态分布或在测试结束时提供p值的其他分布?
答案 0 :(得分:0)
在chisq.test
和fisher.test
中,p值模拟是在没有先验分布假设的情况下以非参数方式进行的。请查看chisq.test
的源代码摘录:
if (simulate.p.value) {
setMETH()
nx <- length(x)
sm <- matrix(sample.int(nx, B * n, TRUE, prob = p),
nrow = n)
ss <- apply(sm, 2L, function(x, E, k) {
sum((table(factor(x, levels = 1L:k)) - E)^2/E)
}, E = E, k = nx)
PARAMETER <- NA
PVAL <- (1 + sum(ss >= almost.1 * STATISTIC))/(B + 1)
}