别再只跑回归了!用Stata的rdrobust命令搞定政策评估,从图形到检验保姆级教程

张开发
2026/4/11 22:43:35 15 分钟阅读

分享文章

别再只跑回归了!用Stata的rdrobust命令搞定政策评估,从图形到检验保姆级教程
断点回归实战指南用Stata的rdrobust命令完成政策效果评估当我们需要评估某项政策或干预措施的实际效果时传统的最小二乘法回归往往会面临内生性问题的困扰。想象一下这样的场景某地政府实施了一项精准扶贫政策规定家庭年收入低于1万元的农户可以享受额外补贴。作为研究者你手头有政策实施前后这些家庭的收入数据如何准确评估这项政策对农户收入的实际影响这正是断点回归Regression Discontinuity Design, RDD大显身手的时刻。1. 为什么选择断点回归断点回归被誉为最接近随机实验的准自然实验方法它的核心思想是利用政策实施的明确门槛cutoff比较门槛两侧邻近个体的结果差异。这种方法巧妙地将政策干预转化为一个局部随机实验因为门槛附近的个体在其他特征上往往非常相似唯一的区别就是是否接受了政策干预。与传统方法相比RDD有三个显著优势内生性问题小在门槛附近干预分配近乎随机因果推断强结果差异可较直接归因于政策干预透明度高图形展示直观结果易于解释在Stata中实现RDD分析rdrobust命令是目前最强大、最灵活的工具之一。它不仅提供了最优带宽选择算法还能一键完成估计、推断和图形展示大大简化了分析流程。2. 数据准备与初步探索2.1 构建分析数据集假设我们研究某省精准扶贫政策效果政策规定家庭年收入低于1万元的农户可获得额外补贴。我们的数据集应包含结果变量outcome如政策实施后的家庭收入分配变量assignment variable政策前的家庭收入协变量covariates如家庭人口、教育水平等* 导入数据并创建中心化分配变量 use policy_evaluation.dta, clear gen income_centered pre_income - 10000 // 政策门槛为1万元 label var income_centered 中心化后的家庭收入(元)2.2 可视化初步判断在正式分析前通过图形直观观察结果变量在门槛处是否存在跳跃* 基础散点图 twoway (scatter post_income income_centered, msymbol() mcolor(%30)), /// xline(0) title(政策效果初步观察) * 使用rdplot进行局部多项式拟合 rdplot post_income income_centered, c(0) p(1) // 线性拟合 graph export rdplot_linear.png, replace rdplot post_income income_centered, c(0) p(2) // 二次项拟合 graph export rdplot_quadratic.png, replace提示如果图形显示门槛两侧拟合线有明显间断初步表明政策可能有效应。但最终结论需依赖正式的统计检验。3. 核心估计rdrobust命令详解3.1 基础模型设定rdrobust命令的基本语法结构为rdrobust 结果变量 分配变量, c(门槛值) [选项]实际操作示例* 基础估计 rdrobust post_income income_centered, c(0) * 添加协变量控制 rdrobust post_income income_centered, c(0) covs(household_size education)命令输出包含三个关键部分估计效应大小Coefficient最优带宽Optimal bandwidth统计显著性P-value3.2 带宽选择策略带宽选择是RDD分析的核心挑战之一。rdrobust默认使用均方误差最优(MSE-optimal)带宽但我们也可以* 使用不同带宽选择方法 rdrobust post_income income_centered, c(0) bwselect(mserd) // 默认 rdrobust post_income income_centered, c(0) bwselect(cerrd) // 覆盖误差最优 * 手动设定带宽 rdrobust post_income income_centered, c(0) h(2000 2500) // 左右带宽分别设定下表对比了不同带宽选择方法的结果差异带宽方法左侧带宽右侧带宽估计效应P值mserd185021001245.60.023cerrd150018001320.30.017手动设定200025001180.20.0353.3 多项式阶数选择除了带宽多项式阶数也影响结果。实践中建议尝试不同阶数* 尝试不同多项式阶数 rdrobust post_income income_centered, c(0) p(1) // 线性 rdrobust post_income income_centered, c(0) p(2) // 二次 rdrobust post_income income_centered, c(0) p(3) // 三次 * 自动选择最优阶数 rdrobust post_income income_centered, c(0) kernel(triangular) all注意高阶多项式虽然更灵活但也可能引入过拟合问题。通常建议从线性开始逐步增加阶数观察结果稳定性。4. 有效性检验与稳健性分析4.1 协变量平衡检验有效的RDD要求门槛附近的协变量分布平衡。我们可以检验协变量在门槛处是否连续* 检验协变量平衡 foreach var in household_size education { rdrobust var income_centered, c(0) est store var } * 可视化展示 coefplot household_size education, keep(Conventional) xline(0)4.2 安慰剂检验将假想的门槛设在真实门槛之外检验效应是否消失* 在错误门槛处检验 rdrobust post_income income_centered, c(5000) // 假门槛设为5000元 rdrobust post_income income_centered, c(-3000) // 假门槛设为-3000元4.3 带宽敏感性分析检验结果对带宽选择的敏感度* 提取最优带宽 rdrobust post_income income_centered, c(0) local h e(h_l) * 不同带宽下的估计 forvalues i1/4 { local bw h*0.5*i rdrobust post_income income_centered, c(0) h(bw) est store bwi } * 结果对比 coefplot bw*, keep(Conventional) xline(0)5. 结果呈现与报告技巧5.1 三线表示范将核心结果整理为学术论文常用的三线表变量(1) 基础模型(2) 加入协变量(3) 二次项政策效应1245.6**1180.3**1265.8**(512.3)(498.7)(534.2)最优带宽1850/21001750/19501650/1850观测值1,2451,2451,1255.2 图形化展示制作专业的效果展示图* 综合效果图 rdplot post_income income_centered, c(0) p(1) /// graph_options(title(精准扶贫政策效果) /// ytitle(政策后收入(元)) xtitle(中心化政策前收入(元))) graph export final_result.png, replace5.3 稳健性检查清单在论文方法部分或附录中建议报告以下稳健性检验不同带宽选择方法的结果对比不同多项式阶数的结果对比协变量平衡测试结果安慰剂检验结果排除区间分析donut hole结果6. 常见陷阱与解决方案在实际应用中研究者常遇到以下问题问题1带宽内样本量过少解决方案尝试使用更宽松的带宽选择标准如cerrd或考虑模糊断点设计问题2图形显示跳跃但统计不显著检查是否使用了合适的核函数和标准误计算方法增加多项式阶数看结果是否稳定问题3协变量在门槛处不平衡考虑是否有人为操纵分配变量的可能尝试加入更多协变量控制或改用其他识别策略问题4结果对带宽选择敏感报告全区间带宽敏感性分析考虑使用非参数方法作为补充* 非参数估计示例 rdrobust post_income income_centered, c(0) kernel(uniform) bwselect(msetwo)在完成分析后建议将完整的do文件整理归档包括数据清理步骤主要分析命令图形生成代码结果输出命令这样不仅能保证研究的可重复性也便于日后可能的修改或扩展分析。

更多文章