比例差异的 z 检验是否适用于比例很小的大量样本?

机器算法验证 假设检验 部分 z检验
2022-04-07 06:30:12

假设我想进行比例差异测试,其中每边的 n=23,000,但它们的比例分别为 0.21% 和 0.34%。

     group1  group2
n     23000   23000
x        50      78
prop  0.21%   0.34%

两者n(p) > 50&n(1-p) > 50

标准的 z 分数测试会表明这种差异是显着的。

然而,我的直觉告诉我测试不应该适用于这么小的比例。如果真实比例相等,并且发生如此罕见的事件,我实际上希望仅从抽样变异性中就能看到像这样的巨大差异。我这样想对吗?比例差异测试是否会分解微小的比例?

注意:这是一个纯粹的假设问题。在现实生活中,我不在乎 group2 的表现优于 group1。事件率如此之低,以至于使用它几乎没有价值。换句话说,它具有统计学意义,但没有临床意义。

1个回答

每当我对特定方法的性能有疑问时,我都会尝试进行模拟研究,以检查该方法在类似条件下的效果如何。下面是一个使用 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 连续性校正时,测试名义上执行。修正后,测试略微保守。

如果您想了解检验的功效,可以将真实比例设置为两个不同的值,然后重新运行模拟。