当前位置: 首页 > article >正文

用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方法计算标准误。

相关文章:

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

用Stata复现经典论文:Card & Krueger (1994)最低工资DID分析全流程 1994年,经济学家David Card和Alan Krueger发表了一篇颠覆传统经济学认知的经典论文,他们通过对比新泽西州和宾夕法尼亚州快餐店就业数据,发现最低工资上涨并…...

【PCL-8】从PCA到OBB:点云最小包围盒的数学原理与PCL实战

1. 点云包围盒:从AABB到OBB的进化 当我们处理三维点云数据时,经常需要用一个简单的几何体来近似表示复杂的点云形状。这就是包围盒(Bounding Box)的概念。最常见的两种包围盒是AABB(轴对齐包围盒)和OBB&…...

ThinkPad T480黑苹果终极指南:如何用OpenCore配置实现完美macOS体验?

ThinkPad T480黑苹果终极指南:如何用OpenCore配置实现完美macOS体验? 【免费下载链接】t480-oc 💻 Lenovo ThinkPad T480 / T580 / X280 Hackintosh (macOS Monterey 12.x - Sequoia 15.x) - OpenCore 项目地址: https://gitcode.com/gh_mi…...

数字万用表的二极管档和电阻档,测LED到底该用哪个?实测对比给你看

数字万用表的二极管档和电阻档,测LED到底该用哪个?实测对比给你看 当你面对一个未知好坏的LED,手头只有一块数字万用表时,可能会纠结该选择哪个档位进行测量。是二极管档?电阻档?还是传统的电压档&#xff…...

操作系统层优化:为 Stable Yogi 模型部署调优 Linux 内核参数

操作系统层优化:为 Stable Yogi 模型部署调优 Linux 内核参数 如果你已经成功部署了 Stable Yogi 模型,但总觉得它的推理速度还能再快一点,或者在高并发请求下系统偶尔会卡顿、报错,那么问题可能不在模型本身,而在于它…...

从死元组到事务回卷:图解PostgreSQL的MVCC机制与VACUUM底层原理

从死元组到事务回卷:图解PostgreSQL的MVCC机制与VACUUM底层原理 当你在PostgreSQL中执行一条简单的UPDATE语句时,数据库内部究竟发生了什么?这个看似平常的操作背后,隐藏着一套精妙的多版本并发控制(MVCC)机…...

AutoGen Studio实战:用Qwen3-4B模型快速打造智能客服助手

AutoGen Studio实战:用Qwen3-4B模型快速打造智能客服助手 1. AutoGen Studio简介 AutoGen Studio是一个低代码AI代理开发平台,它让开发者能够快速构建、组合和部署AI代理应用。基于AutoGen AgentChat框架构建,提供了可视化界面来管理多代理…...

BGE Reranker-v2-m3性能优化:算法与工程实践

BGE Reranker-v2-m3性能优化:算法与工程实践 1. 引言 在信息检索和RAG(检索增强生成)应用中,重排序模型的质量和效率直接影响着最终的用户体验。BGE Reranker-v2-m3作为北京智源研究院推出的轻量级重排序模型,凭借其…...

【操作系统】CTFos Pro-专为CTF优化的高性能虚拟机正式版

1. CTFos Pro虚拟机:专为CTF优化的高性能解决方案 如果你经常参加CTF比赛或者进行安全研究,肯定遇到过这样的烦恼:每次搭建环境都要耗费大量时间,各种工具安装配置让人头疼,不同比赛需要的环境还不一样。CTFos Pro就是…...

Gemini-CLI 从零到精通的命令行AI开发指南

1. 认识Gemini-CLI:你的命令行AI助手 第一次听说Gemini-CLI时,我也觉得这不过又是一个AI玩具。直到在本地终端里用它5分钟写完一个Python爬虫脚本,才意识到这个命令行工具的强大。简单来说,Gemini-CLI就像把Google最先进的AI模型…...

【华为云CCE实战】内网环境下的Nacos集群容器化部署全流程

1. 内网环境下的Nacos集群部署挑战 在企业级微服务架构中,Nacos作为服务注册中心和配置中心扮演着关键角色。但在内网隔离环境下部署Nacos集群,就像在没有GPS信号的隧道里组车队——既需要确保每辆车(节点)都能互相定位&#xff0…...

DanmakuFactory:解决弹幕格式兼容性难题的专业转换工具

DanmakuFactory:解决弹幕格式兼容性难题的专业转换工具 【免费下载链接】DanmakuFactory 支持特殊弹幕的xml转ass格式转换工具 项目地址: https://gitcode.com/gh_mirrors/da/DanmakuFactory 在视频创作和弹幕文化日益普及的今天,不同平台间的弹幕…...

Graphormer与经典力学的结合:分子动力学模拟初始结构筛选

Graphormer与经典力学的结合:分子动力学模拟初始结构筛选 1. 引言:当AI遇上分子模拟 想象你是一位计算化学研究员,每天要花费数小时等待分子动力学模拟结果。传统方法需要从零开始计算每个分子构象的能量和稳定性,这个过程既耗时…...

MacOS上MPV播放器隐藏技巧:如何自定义画面旋转快捷键(附完整配置步骤)

MacOS上MPV播放器隐藏技巧:如何自定义画面旋转快捷键(附完整配置步骤) 在视频播放领域,MPV以其轻量级和高度的可定制性赢得了技术爱好者的青睐。不同于主流播放器的固定功能模式,MPV更像是一个开放的工具箱&#xff0c…...

告别环境冲突!用Anaconda虚拟环境搞定QGIS 3.18二次开发(附Pycharm代码补全修复)

告别环境冲突!用Anaconda虚拟环境搞定QGIS 3.18二次开发(附Pycharm代码补全修复) 当你在深夜调试QGIS插件时,突然发现昨天还能运行的脚本今天报了一堆依赖错误——这种场景对GIS开发者来说再熟悉不过了。环境冲突、版本不匹配、ID…...

如何在Mac上原生读写NTFS硬盘?终极指南与免费工具推荐

如何在Mac上原生读写NTFS硬盘?终极指南与免费工具推荐 【免费下载链接】Free-NTFS-for-Mac Nigate: An open-source NTFS utility for Mac. It supports all Mac models (Intel and Apple Silicon), providing full read-write access, mounting, and management fo…...

如何用wiliwili打造终极跨平台B站客户端:Switch、PS4、PC全平台手柄媒体中心

如何用wiliwili打造终极跨平台B站客户端:Switch、PS4、PC全平台手柄媒体中心 【免费下载链接】wiliwili 第三方B站客户端,目前可以运行在PC全平台、PSVita、PS4 、Xbox 和 Nintendo Switch上 项目地址: https://gitcode.com/GitHub_Trending/wi/wiliwi…...

CKKS 同态加密数学基础推导律

背景 StreamJsonRpc 是微软官方维护的用于 .NET 和 TypeScript 的 JSON-RPC 通信库,以其强大的类型安全、自动代理生成和成熟的异常处理机制著称。在 HagiCode 项目中,为了通过 ACP (Agent Communication Protocol) 与外部 AI 工具(如 iflow …...

【多模态提示学习实战】MaPLe:如何通过视觉-语言提示耦合提升CLIP下游任务泛化能力

1. 为什么需要多模态提示学习? 如果你用过CLIP这类视觉-语言预训练模型,可能会发现一个尴尬现象:官方发布的预训练模型在标准测试集上表现惊艳,但一到实际业务场景就频频翻车。我在去年做一个商品识别项目时就深有体会——用CLIP直…...

clangd配置与优化:从入门到精通

1. 为什么你需要clangd? 如果你经常写C/C代码,肯定遇到过代码跳转卡顿、补全不准的问题。我之前用传统工具时,经常遇到跳转到错误文件、补全列表半天刷不出来的情况,特别是处理大型项目时,一个简单的函数跳转可能要等上…...

Unlocking Zero-Shot Image Tagging: A Deep Dive into RAM Model‘s Automated Annotation Pipeline

1. RAM模型如何革新图像标注领域 第一次接触RAM模型时,我被它"凭空"给图片打标签的能力震惊了。就像有个不知疲倦的助手,能自动给相册里所有照片写上"海滩""生日蛋糕""宠物狗"这样的描述。这背后是零样本学习&a…...

深入解析CANFD的位定时优化与同步策略

1. CANFD协议基础与位定时核心概念 CANFD(Controller Area Network Flexible Data-rate)作为传统CAN协议的升级版,最显著的特点是支持"双速率"传输——仲裁阶段保持传统速率(通常500kbps),数据阶…...

UE5 Modify Curve 蓝图节点:五种 Apply Modes 的实战应用解析

1. Modify Curve节点基础:动画曲线的动态操控利器 在UE5动画系统中,Modify Curve节点就像给动画师配了把瑞士军刀。我去年做角色表情动画时,发现传统的关键帧调整方式效率太低,直到用上这个节点才真正体会到实时操控曲线值的快感。…...

用Python和PyTorch复现CVPR2019 DIM攻击:如何通过随机缩放和填充提升对抗样本的‘黑盒’攻击力

用Python和PyTorch实战CVPR2019 DIM攻击:从理论到代码的完整实现指南 对抗样本研究领域近年来发展迅猛,而CVPR2019提出的DIM(Diverse Input Method)方法因其出色的黑盒攻击能力成为经典。本文将带您从零开始,用PyTorch…...

SpringCloud进阶--Seata与分布式事务某

起因是我想在搞一些操作windows进程的事情时,老是需要右键以管理员身份运行,感觉很麻烦。就研究了一下怎么提权,顺手瞄了一眼Windows下用户态权限分配,然后也是感谢《深入解析Windows操作系统》这本书给我偷令牌的灵感吧&#xff…...

避坑指南:在Docker中部署mmdetection旋转目标检测模型(CUDA 11 + PyTorch 1.7)

深度解析:在Docker中高效部署mmdetection旋转目标检测模型的技术实践 当我们将训练好的mmdetection旋转目标检测模型部署到生产环境时,Docker容器化部署往往是最佳选择。但在实际工程落地过程中,从本地开发环境到容器化部署的迁移并非一帆风…...

避坑指南:宝塔Nginx反向代理配置中常见的5个错误及解决方法

避坑指南:宝塔Nginx反向代理配置中常见的5个错误及解决方法 当你第一次尝试在宝塔面板中配置Nginx反向代理时,可能会遇到各种意想不到的问题。作为一款强大的Web服务器,Nginx的反向代理功能确实能为我们的网站架构带来诸多便利,但…...

什么年代了怎么还在用bash啊?现代化shell开箱体验: fish, nu, elvish杀

整体排查思路 我们的目标是验证以下三个环节是否正常: 登录成功时:服务器是否正确生成了Session并返回了包含正确 JSESSIONID的Cookie给浏览器。 浏览器端:浏览器是否成功接收并存储了该Cookie。 后续请求:浏览器在执行查询等操作…...

OpenClaw本地部署指南:nanobot镜像中/root/.nanobot/config.json字段详解

OpenClaw本地部署指南:nanobot镜像中/root/.nanobot/config.json字段详解 1. 引言 你是否对OpenClaw这类强大的AI助手感兴趣,但又觉得它过于庞大复杂,难以在本地快速部署和上手?今天,我要为你介绍一个绝佳的轻量级替…...

【深入解析】数字电路核心组合逻辑芯片实战应用指南

1. 74系列组合逻辑芯片基础认知 第一次接触74系列芯片时,我盯着实验室抽屉里那些标着74HC138、74HC148的黑色小方块完全无从下手。直到导师扔给我一块面包板和几个LED灯,才真正理解这些芯片就像乐高积木里的基础模块——通过不同组合能搭建出千变万化的数…...