比例置信区间手动计算与prop.test()结果差异的原因解析
问题背景
你需要计算死亡比例的95%置信区间,数据为:
End Count death 57 pat 319
其中pat代表总样本量。你采用正态近似(Wald)区间公式计算:
# 下限CI 57/319 - 1.96*sqrt(57/319*(1-57/319)/319) # 上限CI 57/319 + 1.96*sqrt(57/319*(1-57/319)/319)
得到结果 [0.1366, 0.2207];但使用R的prop.test()函数(关闭连续性校正):
prop.test(57, 319, correct = FALSE)
得到的置信区间为 [0.1405442, 0.2244692],两者存在差异的核心原因如下:
两种置信区间的计算方法不同
你使用的是Wald区间(正态近似法)
该方法直接用样本比例 $\hat{p} = 57/319$ 代入计算,标准误基于样本比例本身,公式为:
$$\hat{p} \pm z_{0.975} \times \sqrt{\frac{\hat{p}(1-\hat{p})}{n}}$$
其中$z_{0.975}=1.96$是标准正态分布的97.5%分位数。这种方法计算简单,但依赖“样本量足够大、比例不极端”的假设,小样本下表现不稳定。prop.test()默认使用威尔逊得分区间(Wilson Score Interval)
即使设置correct=FALSE关闭连续性校正,该函数依然采用威尔逊区间而非Wald区间。威尔逊区间通过求解二次方程推导而来,会对样本比例做向0.5的收缩调整,公式为:
$$\frac{\hat{p} + \frac{z^2}{2n}}{1 + \frac{z^2}{n}} \pm \frac{z}{1 + \frac{z^2}{n}} \times \sqrt{\frac{\hat{p}(1-\hat{p})}{n} + \frac{z2}{4n2}}$$
这种方法的覆盖概率更接近名义置信水平(95%),尤其是在样本量不大或比例偏离0.5时,比Wald区间更可靠,因此结果会和你手动计算的Wald区间存在差异。
内容的提问来源于stack exchange,提问作者N Kevin

