You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何为调查加权数据计算比例差的Wilson 95%置信区间?

调查加权数据中比例差的Wilson 95%置信区间计算

为什么你的p值与置信区间不匹配?

你使用高斯族svyglm拟合的是线性概率模型,其置信区间基于正态近似假设;而svychisq采用的是Rao-Scott调整的卡方/F检验,二者的统计框架、方差估计逻辑不同,因此出现结果不一致是正常现象。线性概率模型本身也不适合二元结局(可能输出超出[0,1]的概率值,方差假设不成立),这是问题的核心原因。


方法1:用svyprop.test直接计算Wilson置信区间

survey包的svyprop.test函数原生支持调查加权数据的比例差分析,且可指定Wilson方法计算置信区间,步骤如下:

# 计算两组加权比例差的Wilson 95%置信区间
result <- svyprop.test(
  formula = ~binary_outcome,
  by = ~binary_exposure,
  design = svy_design,
  method = "wilson"
)

# 查看完整结果(含比例、差值、置信区间、p值)
print(result)

该输出会包含两个组的加权比例、比例差值,以及对应的Wilson 95%置信区间,同时给出匹配的检验p值,彻底解决之前的结果不一致问题。


方法2:基于二项族svyglm推导得分型置信区间

若需通过模型框架实现,可拟合二项逻辑回归模型,再通过得分检验推导近似Wilson置信区间:

# 拟合二项族svyglm模型
binom_model <- svyglm(
  binary_outcome ~ binary_exposure,
  design = svy_design,
  family = binomial()
)

# 定义比例差的对比(暴露组vs非暴露组的概率差)
diff_contrast <- svycontrast(
  binom_model,
  list(prop_diff = quote(`binary_exposure1` - `binary_exposure0`)),
  method = "score"
)

# 提取Wilson型置信区间
confint(diff_contrast)

这种方法本质上是通过得分检验实现Wilson区间的逻辑,结果与svyprop.test一致,但步骤稍繁琐。


关键提示

  • Wilson置信区间在比例接近0或1时的稳健性远优于正态近似区间,更适合二元结局的分析场景。
  • 避免用高斯族svyglm处理二元结局:线性概率模型的方差恒定假设不符合二元数据的方差特性(方差随比例变化),会导致区间估计和检验结果偏倚。

内容的提问来源于stack exchange,提问作者s.stats

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.14 11:41:07