如何用线性回归结果计算Wald统计量及Stata孟德尔随机化实现
Wald比率法与Stata实现指南
1. 利用线性回归结果计算Wald比率统计量
假设已通过线性回归得到两组核心结果:
- 结局变量A对工具变量X的回归:系数$\hat{\beta}_A$,标准误$SE_A$
- 暴露变量B对工具变量X的回归:系数$\hat{\beta}_B$,标准误$SE_B$
核心计算步骤
- 因果效应估计值:
$\hat{\theta} = \frac{\hat{\beta}_A}{\hat{\beta}_B}$ - 标准误(SE):基于delta方法推导:
$SE(\hat{\theta}) = \left| \hat{\theta} \right| \times \sqrt{\left( \frac{SE_A}{\hat{\beta}_A} \right)^2 + \left( \frac{SE_B}{\hat{\beta}_B} \right)^2}$ - Wald统计量与P值:
Wald统计量为$W = \left( \frac{\hat{\theta}}{SE(\hat{\theta})} \right)^2$,对应自由度为1的卡方分布;或用Z检验$Z = \frac{\hat{\theta}}{SE(\hat{\theta})}$,P值通过标准正态分布计算:$P = 2 \times (1 - \Phi(|Z|))$($\Phi$为标准正态累积分布函数)。
2. Stata中单样本孟德尔随机化的Wald比率法高效实现
方法一:直接用ivregress命令(最简便)
单工具变量的孟德尔随机化等价于两阶段最小二乘(2SLS),用ivregress可一步输出所有结果:
* 替换为你的实际变量名:outcome=结局A, exposure=暴露B, instrument=工具变量X ivregress 2sls outcome (exposure = instrument), robust
输出中exposure行的系数即因果估计值,Std. Err.为标准误,P>|t|为P值;robust选项用于生成稳健标准误,适配异方差场景。
方法二:使用专用MR命令包
Stata的mendelianrandomization模块提供了专门的Wald分析工具:
- 安装模块(首次使用):
ssc install mendelianrandomization
- 执行分析:
mr_wald outcome exposure instrument
命令会直接输出因果估计值、标准误、95%置信区间和P值,无需手动计算。
方法三:自定义提取结果计算(适合个性化需求)
若需灵活调整计算逻辑,可通过estimates命令自动提取回归结果并计算:
* 结局对工具变量回归,保存结果 reg outcome instrument, robust estimates store reg_outcome * 暴露对工具变量回归,保存结果 reg exposure instrument, robust estimates store reg_exposure * 提取系数与SE scalar beta_A = _b[instrument] scalar se_A = _se[instrument] scalar beta_B = _b[instrument] from reg_exposure scalar se_B = _se[instrument] from reg_exposure * 计算核心指标 scalar theta = beta_A / beta_B scalar se_theta = abs(theta) * sqrt( (se_A/beta_A)^2 + (se_B/beta_B)^2 ) scalar z_stat = theta / se_theta scalar p_val = 2 * (1 - normal(abs(z_stat))) * 输出结果 disp "因果估计值: " theta disp "标准误: " se_theta disp "Z统计量: " z_stat disp "P值: " p_val
内容的提问来源于stack exchange,提问作者Beryl
相关产品推荐
相关产品推荐

