每当我对特定方法的性能有疑问时,我都会尝试进行模拟研究,以检查该方法在类似条件下的效果如何。下面是一个使用 R 的简单示例,用于您所描述的情况。请注意,我将两组的真实比例设置为相等,并且设置为介于您在两个样本中实际观察到的值之间的某个值。因此,模拟提供了测试的经验类型 I 错误率。它应该有望接近 0.05。设置足够大的迭代次数将确保模拟误差很小。另外,请注意,我曾经在没有 Yates 的连续性校正的情况下运行测试,并在此进行了一次测试,以查看这是否与此处相关。
iters <- 100000
n <- 23000
p <- 0.0027
x1i <- rbinom(iters, n, p)
x2i <- rbinom(iters, n, p)
pval1 <- rep(NA, iters)
pval2 <- rep(NA, iters)
for (i in 1:iters) {
pval1[i] <- chisq.test(matrix(c(x1i[i], n-x1i[i], x2i[i], n-x2i[i]), nrow=2, byrow=TRUE), correct=FALSE)$p.value
pval2[i] <- chisq.test(matrix(c(x1i[i], n-x1i[i], x2i[i], n-x2i[i]), nrow=2, byrow=TRUE), correct=TRUE)$p.value
}
round(mean(pval1 <= .05), 3)
round(mean(pval2 <= .05), 3)
以下是一次运行的结果:
> round(mean(pval1 <= .05), 3)
[1] 0.05
> round(mean(pval2 <= .05), 3)
[1] 0.04
因此,当不使用 Yates 连续性校正时,测试名义上执行。修正后,测试略微保守。
如果您想了解检验的功效,可以将真实比例设置为两个不同的值,然后重新运行模拟。