用Stata复现经典论文:Card Krueger (1994)最低工资DID分析全流程(含数据与代码)

张开发
2026/4/12 16:19:46 15 分钟阅读

分享文章

用Stata复现经典论文:Card  Krueger (1994)最低工资DID分析全流程(含数据与代码)
用Stata复现经典论文Card Krueger (1994)最低工资DID分析全流程1994年经济学家David Card和Alan Krueger发表了一篇颠覆传统经济学认知的经典论文他们通过对比新泽西州和宾夕法尼亚州快餐店就业数据发现最低工资上涨并未导致就业减少。这一发现挑战了当时主流经济学观点成为劳动经济学领域里程碑式的研究。对于计量经济学学习者和研究者而言掌握如何复现这一经典研究具有重要价值——不仅能深入理解双重差分法(DID)的核心思想还能获得从理论到实践的完整研究经验。本文将带领读者完整复现Card Krueger(1994)的研究过程使用陈强教授《高级计量经济学及Stata应用》教材中的配套数据集从数据预处理、模型设定、Stata代码实现到结果解读与稳健性检验提供一站式解决方案。特别适合正在学习计量经济学的硕士/博士研究生以及希望提升实证研究能力的青年学者。1. 研究背景与数据准备Card Krueger(1994)研究的核心问题是1992年4月新泽西州将最低工资从4.25美元提高到5.05美元这一政策变化如何影响快餐行业的就业研究者巧妙地利用相邻的宾夕法尼亚州作为对照组通过双重差分法分离出政策效应。1.1 数据获取与变量说明数据集cardkrueger1994.dta包含新泽西州(处理组)和宾夕法尼亚州(对照组)快餐店在两个时间点的调查数据use cardkrueger1994.dta, clear describe关键变量说明变量名含义取值说明fte全职等效雇员人数连续变量treated是否处理组1新泽西州0宾夕法尼亚州t时间虚拟变量1政策后(1992.11)0政策前(1992.2)bk品牌虚拟变量(Burger King)1是0否kfc品牌虚拟变量(KFC)1是0否roys品牌虚拟变量(Roy Rogers)1是0否1.2 数据预处理与描述统计在进行正式分析前需要对数据质量进行检查* 检查重复观测值 duplicates report id t duplicates drop id t, force * 生成处理组与时间交叉项 gen did treated * t * 描述性统计 tabstat fte, by(treated t) stat(mean sd N)输出结果呈现了处理组和对照组在政策前后的均值变化初步观察可以发现新泽西州(处理组)的雇员人数在政策后有所增加而宾夕法尼亚州(对照组)则呈现下降趋势——这与传统经济学预测相反。2. 基础双重差分模型实现双重差分法的核心思想是通过比较处理组与对照组在政策前后的变化差异控制时间趋势和组间固有差异识别政策净效应。2.1 手工计算DID估计量最直观的方法是分步骤计算四组均值然后进行双重差分* 计算四组均值 egen mean_fte mean(fte), by(treated t) * 提取各单元格值 sum mean_fte if treated0 t0 local control_before r(mean) sum mean_fte if treated0 t1 local control_after r(mean) sum mean_fte if treated1 t0 local treat_before r(mean) sum mean_fte if treated1 t1 local treat_after r(mean) * 手工计算DID local did (treat_after - treat_before) - (control_after - control_before) display DID估计值为: did2.2 回归法估计DID更高效的方式是通过回归模型一次性估计DID系数同时控制其他协变量reg fte i.treated##i.t bk kfc roys, robust回归结果中1.treated#1.t的系数即为DID估计量其值为2.935在10%水平显著(p0.058)表明最低工资上涨使新泽西州快餐店全职雇员人数平均增加了约2.9人。2.3 使用diff命令简化操作Stata社区贡献的diff命令可以更简洁地实现DID估计ssc install diff diff fte, t(treated) p(t) cov(bk kfc roys) robust该命令自动生成格式美观的结果表格包含处理组和对照组在政策前后的均值差异以及最终的双重差分估计值与手工计算结果完全一致。3. 平行趋势检验与动态效应分析双重差分法的有效性依赖于平行趋势假设——在没有政策干预的情况下处理组和对照组的时间趋势应该相同。虽然原始数据只有两期无法进行严格的平行趋势检验但我们可以通过图形化展示初步验证这一假设。3.1 绘制时间趋势图egen mean_y mean(fte), by(t treated) graph twoway (connected mean_y t if treated 1, sort(t)) /// (connected mean_y t if treated 0, sort(t)), /// ytitle(全职雇员人数) xtitle(时期) /// legend(label(1 处理组) label(2 控制组)) /// xlabel(0 政策前 1 政策后) /// graphregion(color(white))图形显示两组在政策前的趋势基本平行这为DID模型的适用性提供了初步支持。对于多期数据标准的平行趋势检验方法包括事件研究法引入政策前后各期的交互项placebo检验假设政策发生在其他时间点4. 稳健性检验与扩展分析为确保基础DID结果的可靠性需要进行一系列稳健性检验。Card Krueger原始论文中使用了多种方法这里我们重点介绍两种现代应用中常用的方法。4.1 倾向得分匹配双重差分(PSM-DID)当处理组和对照组在协变量上存在较大差异时可以先用倾向得分匹配(PSM)平衡样本再进行DID分析* 估计倾向得分 logit treated bk kfc roys predict pscore, pr * 核匹配DID diff fte, t(treated) p(t) kernel id(id) logit cov(bk kfc roys) support不过在本例中PSM-DID的结果显示协变量平衡性改善有限因为原始数据中可用的匹配变量较少。这提醒我们PSM并非银弹当协变量信息不足时其效果可能有限。4.2 安慰剂检验通过随机生成处理组验证基础结果是否可能由偶然因素导致* 保存真实DID估计值 reg fte i.treated##i.t bk kfc roys, robust local true_coef _b[1.treated#1.t] local true_p 2*ttail(e(df_r), abs(_b[1.treated#1.t]/_se[1.treated#1.t])) * 安慰剂检验循环 mat coefs J(500,1,.) forvalues i 1/500 { preserve gen placebo_treated runiform() 0.5 reg fte i.placebo_treated##i.t bk kfc roys, robust mat coefs[i,1] _b[1.placebo_treated#1.t] restore } * 绘制安慰剂检验分布图 svmat coefs, names(placebo_coef) kdensity placebo_coef1, xline(true_coef) /// title(安慰剂检验) xtitle(估计系数) /// note(垂直红线表示真实DID估计值)结果显示真实DID估计值(2.935)位于安慰剂系数分布的极端位置表明基础结果不太可能是偶然得到的。5. 结果解读与研究启示Card Krueger(1994)的研究之所以成为经典不仅因为其结论挑战了传统认知更因其研究方法为政策评估树立了标杆。通过本次复现我们可以获得以下研究启示研究设计的重要性选择地理相邻、经济相似的对照组有效控制混杂因素稳健性检验的必要性通过多种方法交叉验证增强结果可信度数据可视化的价值图形展示能使结果更直观、更具说服力理论联系实际计量方法服务于研究问题避免为了方法而方法复现过程中遇到的几个实际问题值得注意当使用diff命令时如果数据存在重复ID需要先用duplicates drop处理PSM-DID在本例中效果有限提示我们要根据数据特点选择适当方法安慰剂检验的模拟次数通常需要500次以上才能获得稳定分布。完整的Stata dofile和数据可以从陈强教授的个人主页获取读者可以自行尝试修改代码、调整模型设定深入理解DID方法的灵活应用。对于想进一步探索的读者可以考虑扩展分析加入更多控制变量、尝试三重差分法(DDD)、或者用bootstrap方法计算标准误。

更多文章