普通网友 2025-09-21 08:00 采纳率: 98.5%
浏览 0
已采纳

如何用esttab输出STATA工具变量回归结果?

在使用 `esttab` 输出 Stata 工具变量回归(IV regression)结果时,一个常见问题是:**如何正确保存并输出 `ivregress` 或 `ivreg2` 的估计结果,使第一阶段和第二阶段的关键统计量(如弱工具变量检验、过度识别检验)一并显示在最终表格中?** 用户常发现 `esttab` 仅默认输出第二阶段系数,缺失 F 统计量、Cragg-Donald Wald F 统计量或 P 值等关键诊断信息。此外,当使用 `eststo` 存储 `ivreg2` 结果时,部分标量(如 `endogeneity test` 或 `underid test`)无法自动提取到 `esttab` 表格中,导致结果报告不完整。如何通过手动提取并添加 `estadd` 命令将这些统计量整合进 `esttab` 输出,是实现规范化学术呈现的技术难点。
  • 写回答

1条回答 默认 最新

  • 曲绿意 2025-09-21 08:02
    关注

    一、问题背景与核心挑战

    在使用 Stata 进行工具变量回归(IV regression)分析时,研究者常采用 ivregress 或更强大的 ivreg2 命令进行两阶段最小二乘法(2SLS)估计。然而,在将结果输出为学术论文所需的表格格式时,esttab 通常仅默认展示第二阶段的系数和标准误,而忽略了第一阶段的关键诊断统计量,如弱工具变量检验的 F 统计量、Cragg-Donald Wald F 统计量、过度识别检验(Overidentification test)以及内生性检验(Endogeneity test)等。

    这些缺失的信息对于评估 IV 模型的有效性至关重要。例如,若第一阶段 F 统计量小于 10,则可能存在“弱工具变量”问题;若模型存在多个工具变量,Sargan 或 Hansen J 检验可用于判断工具变量是否外生。因此,如何通过 eststo 存储模型,并利用 estadd 手动提取并附加这些标量至存储结果中,是实现完整、规范输出的技术关键。

    二、Stata 中 IV 回归与结果存储机制解析

    • ivregress:Stata 官方命令,支持 2SLS、LIML 和 GMM,但返回的 e() 标量有限,不利于扩展输出。
    • ivreg2:由 Baum, Schaffer 和 Stillman 开发的增强型命令,提供丰富的诊断信息,包括:
      • 第一阶段 F 统计量(F-statistic for first stage)
      • Cragg-Donald Wald F 统计量(cd_f)
      • Kleibergen-Paap rk Wald F 统计量(用于弱识别检验)
      • Sargan/Hansen J 检验(overid)
      • Endogeneity test(endogtest)
      • Underidentification test(underid)
    • eststoesttab:属于 estout 包,用于存储和导出回归结果,但默认不自动提取 ivreg2 的所有诊断统计量。

    三、解决方案框架:从提取到整合

    1. 使用 ivreg2 执行工具变量回归并存储结果。
    2. 通过 return listereturn list 查看可用标量。
    3. 利用 estadd 将关键诊断值手动添加到 estimates store 中。
    4. esttab 输出时通过 stats() 选项调用这些自定义统计量。

    四、代码实现示例

    
    // 安装必要包(若未安装)
    ssc install estout, replace
    ssc install ivreg2, replace
    
    // 示例数据
    sysuse auto, clear
    
    // 工具变量回归:mpg 对 price,工具变量为 weight 和 length
    ivreg2 price mpg (weight = length turn), robust first
    
    // 存储模型
    eststo model_iv: ivreg2 price mpg (weight = length turn), robust
    
    // 提取并添加关键统计量
    estadd scalar f_first = r(fstat)                   // 第一阶段 F 统计量
    estadd scalar cd_f = r(cd_f)                       // Cragg-Donald F
    estadd scalar p_cd = r(p_cd)                       // CD F 对应 P 值
    estadd scalar overid = r(j)                        // Sargan J 统计量
    estadd scalar p_overid = r(p_j)                    // Sargan P 值
    estadd scalar endog = r(endog)                     // 内生性检验统计量
    estadd scalar p_endog = r(p_endog)                 // 内生性检验 P 值
    estadd scalar underid = r(weakid_stat)             // 不可识别检验统计量
    
    // 输出包含所有诊断信息的表格
    esttab model_iv ///
      using iv_results.txt, ///
      stats(N f_first cd_f p_cd overid p_overid endog p_endog underid, ///
            labels("Observations" "First-stage F" "CD F" "CD P-value" ///
                   "Sargan J" "Sargan P" "Endogeneity Stat" "Endogeneity P" ///
                   "Underid Stat")) ///
      b(%6.3f) se(%6.3f) star(* 0.1 ** 0.05 *** 0.01) ///
      title("IV Regression Results with Diagnostics") ///
      replace
    

    五、关键统计量说明表

    统计量名称Stata 返回名含义临界参考值
    First-stage Fr(fstat)第一阶段联合显著性>10 避免弱工具变量
    Cragg-Donald Fr(cd_f)多工具变量强度>16.38(Stock-Yogo)
    Sargan Jr(j)过度识别检验P > 0.05 接受外生性
    Endogeneity Testr(endog)内生性检验P < 0.05 支持内生
    Underidentification Testr(weakid_stat)不可识别检验应显著拒绝 H0
    Kleibergen-Paap Fr(kp_f)稳健弱识别检验参考 KP 临界值
    Hansen Jr(j_hans)GMM 版本 Sargan适用于异方差情形
    Anderson LMr(arub)不可识别拉格朗日乘子检验应显著
    Weak ID Fr(weakid_fk)Angrist-Pischke 弱识别检验关注单个内生变量
    LIML Estimatorr(liml_b)有限信息最大似然估计值与 2SLS 对比稳健性

    六、流程图:IV 结果提取与输出全流程

    graph TD A[运行 ivreg2] --> B{成功估计?} B -- 是 --> C[ereturn list 查看结果] C --> D[使用 eststo 存储模型] D --> E[通过 r() 或 e() 提取诊断统计量] E --> F[使用 estadd 添加标量] F --> G[调用 esttab 输出] G --> H[生成含诊断信息的 LaTeX/CSV 表格] B -- 否 --> I[检查工具变量有效性或模型设定]
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 已采纳回答 10月23日
  • 创建了问题 9月21日