Stata实操双重差分法DID平行趋势检验的coefplot可视化全流程实证研究中双重差分法DID的平行趋势假设检验是审稿人最关注的环节之一。许多研究者在跑完主回归后面对如何生成规范的平行趋势检验图表却束手无策。本文将手把手教你用Stata的coefplot命令从数据准备到结果解读完成一张符合顶级期刊要求的平行趋势检验图。1. 平行趋势检验的核心逻辑与准备工作平行趋势检验的本质是验证处理组和对照组在政策干预前的趋势是否一致。经济学顶刊常见的呈现方式是通过事件研究法Event Study绘制政策前后各期处理效应的系数及置信区间。数据准备关键步骤* 假设政策发生在2014年生成相对年份变量 gen period year - 2014检查数据平衡性确保每个年份都有足够的处理组和对照组观测值处理缺失值特别关注政策前后关键年份的数据完整性变量标签为后续生成的交互项添加清晰标签避免绘图时出现混淆提示政策前后的时间窗口选择需要结合具体研究场景通常前后各3-5年是常见选择。2. 生成交互项与回归模型设定规范的交互项生成需要避免虚拟变量陷阱同时保持经济含义清晰。以下是标准操作流程* 生成政策前后各3年的交互项 forvalues i 3(-1)1 { gen pre_i (period -i treated 1) } gen current (period 0 treated 1) forvalues j 1(1)3 { gen post_j (period j treated 1) } * 为避免共线性省略一个基准期通常是最远的前期 drop pre_3 * 固定效应回归模型 xtreg y post_* pre_* current i.year, fe vce(cluster id) est store did_results关键参数说明参数说明注意事项vce(cluster id)聚类标准误必须指定聚类层级i.year年份固定效应控制时间趋势fe个体固定效应适用于面板数据3. coefplot绘图技巧与美化coefplot是Stata中最强大的系数绘图工具之一通过以下代码可以生成专业级的平行趋势检验图coefplot did_results, /// keep(pre_* current post_*) /// vertical /// recast(connect) /// yline(0, lcolor(black) lwidth(thin)) /// xline(4, lpattern(dash) lcolor(gs8)) /// ciopts(recast(rcap) lcolor(blue)) /// msymbol(O) mcolor(blue) /// graphregion(color(white)) /// title(平行趋势检验结果, size(medium)) /// xtitle(相对政策年份) /// ytitle(处理效应系数) /// xlabel(1 -2 2 -1 3 0 4 1 5 2 6 3)图表元素解析置信区间蓝色I型线表示95%置信区间系数点估计蓝色空心圆点基准线y0的黑色细线政策时点灰色虚线标记政策实施年份4. 结果解读与常见问题处理通过检验的标准政策前的系数在统计上不显著置信区间包含0政策后的系数呈现预期变化显著且方向符合理论常见问题解决方案置信区间过宽检查样本量是否足够考虑放宽聚类层级添加更多控制变量政策前系数显著检查平行趋势假设是否成立考虑加入时间趋势控制尝试改变时间窗口政策后效应不显著检查政策实施是否存在滞后考虑延长政策后观察期验证政策执行力度注意有些审稿人可能要求展示未经加总的逐年效应这时可以生成每一年的交互项而非分组。5. 高级技巧多组比较与图表导出对于多政策组或异质性分析可以存储多个回归结果并叠加展示* 分样本回归 xtreg y post_* pre_* current i.year if group1, fe vce(cluster id) est store group1 xtreg y post_* pre_* current i.year if group2, fe vce(cluster id) est store group2 * 合并绘图 coefplot (group1, label(城市样本)) /// (group2, label(农村样本)), /// keep(pre_* current post_*) /// vertical byopts(title(分样本平行趋势检验))图表导出建议使用graph export导出为PDF或EPS格式满足期刊要求分辨率设置为600dpi以上字体大小不小于8pt6. 完整案例演示假设我们研究2014年某环保政策对企业生产率的影响数据为2010-2018年的企业面板数据* 数据准备 use policy_evaluation.dta, clear gen period year - 2014 * 生成交互项 foreach i of numlist 2 1 { gen pre_i (period -i treated 1) } gen current (period 0 treated 1) foreach j of numlist 1 2 3 { gen post_j (period j treated 1) } * 主回归 xtreg tfp post_* pre_* current i.year, fe vce(cluster firmid) est store main * 绘图 coefplot main, /// keep(pre_* current post_*) /// vertical /// recast(connect) /// yline(0) /// xline(3, lp(dash)) /// ciopts(recast(rcap)) /// title(环保政策对企业生产率的影响) /// xtitle(相对政策年份) /// ytitle(处理效应) /// xlabel(1 -2 2 -1 3 0 4 1 5 2 6 3) /// name(parallel_trend, replace) * 导出图表 graph export parallel_trend.pdf, replace在这个案例中如果图表显示政策前两年的系数在0附近波动且不显著而政策后第一年系数显著为负随后效应减弱则表明平行趋势假设成立政策短期内抑制了企业生产率长期影响逐渐消失这种模式可能反映了企业初期需要投入资源适应环保要求随后通过技术调整逐步恢复生产效率。