教程 ·
双重差分法(DID)用 AI 一句话完成 — 政策评估、平行趋势检验、事件研究法全攻略
双重差分法(DID)完整教程:用 AI 一句话完成政策评估因果推断,自动输出 ATT 估计、平行趋势检验、事件研究图,以及可直接复制进论文的 APA 7th 格式报告句式。
你拿到一份政策干预前后的面板数据,想知道这项政策是否真的起了作用——但随机对照试验在现实中根本做不了。这篇教程教你用 AI 一句话跑完整套双重差分(DID)分析,从平行趋势检验到事件研究图,60 秒全齐,结果可直接写进论文。
为什么政策评估那么难?
经济学、公共政策、医疗卫生领域的核心问题往往是:某个政策/干预是否产生了因果效应?
直觉上,比较政策前后的变化就够了——但这忽视了一个根本问题:即便没有政策,结局指标也可能随时间变化(宏观趋势、季节效应、其他并发政策……)。
简单前后比较(Pre-Post)的致命缺陷:
- 无法排除时间趋势的干扰
- 无法剔除非政策因素的混杂
- 无法构建"如果没有政策,结局会怎样"的反事实
双重差分法(Difference-in-Differences,DID) 正是应对这一挑战的准实验方法:通过同时引入"处理组 vs 对照组"和"政策前 vs 政策后"两个差分维度,差分掉时间趋势和组间固有差异,从观测数据中识别因果效应。
然而在传统软件中实现 DID:SPSS 几乎没有现成菜单;Stata 需要手动构造交互项、指定固定效应、调用 xtreg 或 reghdfe;R 要拼接 lfe、fixest、DiD 等多个包并手写绘图代码。从数据到一张规范的事件研究图,往往需要数小时。
ChatSRS 把全套流程压到一句话。
DID 的核心逻辑
双重差分估计量
DID 的基本思路是:
DID = (处理组政策后均值 - 处理组政策前均值)
- (对照组政策后均值 - 对照组政策前均值)
用符号表示:
DID = (Y_treatment,post - Y_treatment,pre)
- (Y_control,post - Y_control,pre)
这个估计量的含义是:扣除对照组同期变化(代表"没有政策时的反事实趋势")后,处理组所发生的净变化量,即政策对被处理单元的平均处理效应(Average Treatment Effect on the Treated,ATT)。
四格均值表
| 政策前(Pre) | 政策后(Post) | 差分(Post - Pre) | |
|---|---|---|---|
| 处理组(Treatment) | A | B | B - A |
| 对照组(Control) | C | D | D - C |
| DID | (B - A) - (D - C) |
通过回归方程实现时,标准规范写法为:
Y_it = alpha + beta_1 * Treated_i + beta_2 * Post_t
+ beta_3 * (Treated_i x Post_t) + gamma * X_it + u_it
其中 b_3 即为 DID 估计量(ATT),是关注的核心系数。
平行趋势假设(Parallel Trends Assumption)
DID 的关键前提:在没有政策干预的情况下,处理组和对照组的结局变量应当遵循相同的时间趋势。
这一假设无法被直接检验(因为反事实不可观测),但可以通过以下方式提供证据:
- 图形诊断:绘制政策前各期处理组与对照组均值趋势线,目视是否平行
- 统计检验:对政策前各期的事前系数(pre-treatment coefficients)做联合显著性检验(F 检验),若均不显著则支持平行趋势
- 事件研究法(Event Study):将每期的处理效应系数单独估计并绘图,是当前实证研究的黄金标准
案例数据:最低工资政策对就业率的影响
研究背景
参考经典的 Card & Krueger(1994)框架:某省在 2022 年第二季度调整了最低工资标准,相邻省份作为对照。研究问题:最低工资上调是否影响了餐饮业就业率?
数据结构
面板数据,含 2020 Q1 至 2024 Q4 共 20 个季度,200 个城市(100 处理 + 100 对照):
city_id 城市编号(面板个体 ID)
quarter 季度(时间变量,如 2020Q1=1, ..., 2024Q4=20)
treated 是否为处理组(1 = 政策实施省份,0 = 对照省份)
post 是否为政策后(1 = 2022Q2 起,0 = 之前)
emp_rate 餐饮业就业率(%,因变量)
gdp_growth 城市 GDP 增长率(控制变量)
pop_size 城市人口规模(控制变量,取对数)
industry_share 制造业占比(控制变量)
政策冲击点:第 9 期(2022 Q2)。
用 AI 一句话完成 DID 分析
在 chatsrs.com 上传数据后输入:
"使用面板数据做双重差分(DID)分析,评估最低工资政策对餐饮业就业率的影响。 因变量:emp_rate;处理变量:treated;政策后虚拟变量:post;控制变量:gdp_growth、ln_pop_size、industry_share;面板个体:city_id;时间变量:quarter。 请输出:
- 描述统计:处理组与对照组政策前后均值对比(四格表)
- 基准 DID 回归(含城市固定效应 + 时间固定效应),报告 ATT 系数、标准误(城市级聚类稳健)、95% CI、p 值
- 平行趋势检验:对政策前所有期进行联合 F 检验
- 事件研究图(Event Study Plot):逐期系数 + 95% CI 误差棒,以政策前一期(t-1)为参照
- 稳健性检验:安慰剂检验(placebo test,随机置换处理分配 1000 次)
- APA 格式中文文字描述"
输出结果怎么读
输出 1: 四格均值对比
表 1 处理组与对照组政策前后就业率均值对比(N = 200 城市)
政策前均值(SD) 政策后均值(SD) 差分(Post - Pre)
处理组(n=100) 42.3 (6.8) 45.1 (7.2) +2.8
对照组(n=100) 43.1 (7.1) 44.2 (7.4) +1.1
双重差分(DID) +1.7 ***
注:*** p < .001(t 检验)。就业率单位:%。
四格表解读:处理组政策后上升 2.8 个百分点,对照组同期上升 1.1 个百分点,净效应(DID)为 +1.7 个百分点。对照组的上升量代表"时间趋势",差分掉之后才是政策的净贡献。
输出 2: 双向固定效应 DID 回归
表 2 双重差分回归结果(因变量:餐饮业就业率,城市 + 时间固定效应)
变量 系数 (beta) 聚类稳健 SE t p 95% CI
Treated x Post(ATT) 1.68 0.42 4.00 < .001 [0.85, 2.51]
gdp_growth 0.31 0.09 3.44 .001 [0.13, 0.49]
ln_pop_size 0.47 0.18 2.61 .009 [0.12, 0.82]
industry_share -0.22 0.11 -2.00 .046 [-0.44, -0.00]
城市固定效应 Yes
时间固定效应 Yes
N(城市-季度观测) 4,000
城市数 200
R^2(within) 0.41
聚类层级 城市(city_id)
注:SE 为城市级聚类稳健标准误。*** p < .001。
核心系数解读:
Treated x Post系数 b_3 = 1.68(ATT),表示在控制城市固定效应、时间固定效应及协变量后,政策使处理组就业率相比反事实水平平均提升约 1.68 个百分点,效应显著(p < .001,95% CI [0.85, 2.51] 不含 0)。- 城市固定效应控制了城市间不随时间变化的差异(地理、历史禀赋等)。
- 时间固定效应控制了所有城市共同面临的宏观冲击(全国经济周期等)。
- 聚类标准误在城市层面聚类,修正了同一城市各期观测之间的序列相关。
输出 3: 平行趋势检验
平行趋势检验(政策前期联合显著性检验)
逐期事前系数(以 t-1 为参照):
t-8: b = -0.31, SE = 0.38, p = .414
t-7: b = 0.18, SE = 0.35, p = .607
t-6: b = -0.22, SE = 0.36, p = .542
t-5: b = 0.09, SE = 0.33, p = .785
t-4: b = -0.14, SE = 0.31, p = .651
t-3: b = 0.21, SE = 0.30, p = .482
t-2: b = -0.08, SE = 0.28, p = .774
t-1: [参照组,系数固定为 0]
联合 F 检验(H0:所有事前系数 = 0):
F(7, 199) = 0.83, p = .562
-> 未拒绝 H0,支持平行趋势假设
怎么看:政策前 8 期的逐期系数均不显著(单个 p 值全部 > .05),联合 F 检验也未达到显著(p = .562),提供了支持平行趋势假设的统计证据。这是 DID 结论可信的必要条件。
输出 4: 事件研究图(Event Study)
事件研究图(Event Study Plot)是当前政策评估实证研究的标准诊断图,横轴为相对政策冲击点的期数(负数 = 政策前,正数 = 政策后),纵轴为逐期处理效应估计值,误差棒为 95% CI。
事件研究逐期系数(以 t-1 为参照,t=0 为政策实施期)
期数 系数 SE 95% CI 下限 95% CI 上限
t-8 -0.31 0.38 -1.06 0.44
t-7 0.18 0.35 -0.51 0.87
t-6 -0.22 0.36 -0.93 0.49
t-5 0.09 0.33 -0.56 0.74
t-4 -0.14 0.31 -0.75 0.47
t-3 0.21 0.30 -0.38 0.80
t-2 -0.08 0.28 -0.63 0.47
t-1 0.00 [参照]
t=0 1.12 0.38 0.37 1.87
t+1 1.45 0.40 0.66 2.24
t+2 1.68 0.42 0.85 2.51
t+3 1.79 0.44 0.92 2.66
t+4 1.83 0.45 0.94 2.72
t+5 1.80 0.46 0.89 2.71
t+6 1.77 0.47 0.84 2.70
t+7 1.74 0.48 0.79 2.69
t+8 1.71 0.49 0.74 2.68
t+9 1.69 0.50 0.70 2.68
t+10 1.67 0.51 0.67 2.67
t+11 1.65 0.52 0.62 2.68
图形解读要点:
- 政策前(t < 0):系数围绕 0 波动,95% CI 均包含 0 — 视觉直观地支持平行趋势
- 政策实施时(t=0):效应跳升至 1.12,95% CI 不含 0
- 政策后(t > 0):效应持续稳定在 1.6-1.8 百分点区间,未见消退或持续扩大,提示政策效果较为持久
ChatSRS 自动生成此图的可发表版本:竖虚线标注政策冲击点,参照期误差棒为 0,图例含处理效应均值标注。
输出 5: 稳健性检验
安慰剂检验(Placebo Test)
随机置换 1000 次处理组分配,每次重新估计 Treated x Post 系数,生成系数分布:
安慰剂检验结果(B = 1000 次随机置换)
安慰剂系数分布:均值 = 0.001, SD = 0.31
真实 ATT 系数:1.68
真实系数在分布中的位置:p < .001(在 1000 次模拟中无一达到 1.68)
-> 真实系数显著偏离安慰剂分布右尾,安慰剂检验通过
怎么看:安慰剂系数均值接近 0(符合随机分配无效应的期望),真实 ATT = 1.68 远超安慰剂分布的 99.9 百分位数,说明观测到的效应不可能由随机因素产生,结论稳健。
其他稳健性检验(DID 研究惯例报告)
| 检验类型 | 操作 | 目的 |
|---|---|---|
| 安慰剂政策时间 | 假设政策发生在 t-2,重新估计 | 检验是否存在预期效应(anticipation effect) |
| 剔除邻近期 | 删除政策实施前后各 1 期重跑 | 检验结果是否受过渡期扰动 |
| 替换对照组 | 换用更相似的对照城市(PSM 匹配后) | 检验对照组选择的敏感性 |
| 改变聚类层级 | 从城市级换为省级聚类 | 检验推断对聚类层级的依赖性 |
| Callaway-Sant'Anna | 多期 DID(处理时间异质时) | 处理 Staggered DID 的异质效应偏误 |
在 ChatSRS 中,告知"做 DID 完整稳健性检验套餐"即可自动执行并汇总以上全部检验。
论文里怎么报告(APA 7th 格式)
方法节写法
采用双重差分法(Difference-in-Differences, DID)估计最低工资上调政策对餐饮业就业率的因果效应。构建双向固定效应(Two-Way Fixed Effects, TWFE)回归模型,同时控制城市固定效应和季度时间固定效应,以吸收不随时间变化的城市特质差异及各城市共同的时间趋势。协变量包括城市 GDP 增长率、人口规模(对数)和制造业占比。标准误在城市层面聚类以修正组内序列相关。平行趋势假设通过事前系数联合 F 检验和事件研究图进行诊断。安慰剂检验(置换检验,B = 1000)用于评估结果的稳健性。统计分析以 R 4.4(fixest 包)实施,检验水准 alpha = .05(双尾)。
结果节写法
平行趋势假设的检验结果支持 DID 识别策略的有效性。政策前 8 期的处理效应系数联合 F 检验结果不显著,F(7, 199) = 0.83, p = .562,事件研究图亦显示政策前各期系数均围绕 0 波动且 95% CI 包含 0。
双向固定效应 DID 估计结果显示,最低工资政策显著提高了处理城市的餐饮业就业率,ATT = 1.68, 95% CI [0.85, 2.51], p < .001(城市级聚类稳健标准误 SE = 0.42)。即在控制城市和时间固定效应及协变量后,政策使处理组城市的餐饮业就业率相比反事实水平平均提升约 1.68 个百分点。事件研究图显示,效应于政策实施当期(t = 0)即显现(b = 1.12),并于随后 2-3 个季度内稳定在约 1.7 个百分点水平,未见衰减。安慰剂检验(B = 1000 次置换)中,真实 ATT 系数偏离安慰剂分布右尾,p < .001,排除了结果由随机因素驱动的可能性。
APA 格式报告要点速查
| 要素 | 格式示例 |
|---|---|
| ATT 系数 + CI | ATT = 1.68, 95% CI [0.85, 2.51] |
| 聚类稳健 SE | SE = 0.42(城市级聚类) |
| 联合 F 检验 | F(7, 199) = 0.83, p = .562 |
| p 值 | p < .001(小数点前不写 0) |
| 样本量 | N = 4,000 城市-季度观测(200 城市 x 20 期) |
| 软件 | R 4.4(fixest 包) |
特别提醒:APA 格式中 95% CI 用方括号 [ ] 表示,p 值小数点前不写 0(写 p = .562,不写 p = 0.562)。DID 的因果效应陈述须搭配平行趋势证据,不可单独声称因果关系。
DID 常见误区与诊断
误区 1:忽略固定效应,只做简单 OLS
简单 OLS 回归 Y = alpha + beta * Treated * Post + epsilon 不控制个体和时间固定效应,无法排除处理组与对照组之间不随时间变化的差异,以及不同时期的宏观冲击。正确做法是加入双向固定效应(城市 + 时间)。
误区 2:没有进行平行趋势检验就声称因果
平行趋势假设是 DID 的灵魂。投稿顶级期刊,如果方法节和结果节没有事件研究图,几乎必然被审稿人要求补做。事件研究法是当前标准,不是可选项。
误区 3:Staggered DID 用传统 TWFE 估计
当不同城市/单元在不同时期陆续受到政策影响(交错处理,Staggered Treatment)时,传统 TWFE 估计量可能被"污染"——已受处理的早期组会被用作晚期组的对照,产生有偏估计(Goodman-Bacon, 2021)。此时应改用 Callaway-Sant'Anna(2021)或 Sun & Abraham(2021)等稳健估计量。ChatSRS 在检测到交错处理结构时会自动警示并提供替代方案。
误区 4:混淆 ATT 与 ATE
DID 估计的是ATT(Average Treatment Effect on the Treated,对被处理单元的平均处理效应),而非 ATE(全体单元的平均处理效应)。ATT 的外推性受限:若处理组与对照组的可观测特征差异较大,ATT 不能直接推广到整个人群。论文中应在结果解释部分明确区分。
常见问题 FAQ
Q1:对照组应该怎么选?选得不好会怎样?
A:对照组的核心要求是在没有政策干预时,与处理组具有相似的时间趋势(平行趋势)。实践中的选取原则:(1) 经济结构、发展水平相似的地区;(2) 未受到同期其他政策干预的地区;(3) 地理上相邻(或通过倾向得分匹配 PSM 筛选)。对照组选择不当是 DID 失效的首要原因——即使平行趋势检验"通过"(政策前期恰好相似),若对照组本质上不可比,结论仍不可信。ChatSRS 可在给出 PSM 匹配数据后直接进入 DID 分析。
Q2:样本量要求是什么?单位数越多越好吗?
A:DID 中的有效样本量主要取决于处理单元数(如城市、个人、企业的数量),而非总观测量(单元数 x 时期数)。当处理单元数 < 50 时,常规的聚类稳健标准误可能严重低估方差,导致过度拒绝 H0(I 类错误膨胀);此时应改用 Wild Cluster Bootstrap 或 Randomization Inference 方法推断。此外,时期数越多(尤其是政策前期),事件研究图的诊断效力越强,单位数 >= 50、政策前期数 >= 4 是常见的最低要求。
Q3:平行趋势检验"通过"了,DID 就一定有效吗?
A:平行趋势检验是必要条件,而非充分条件。通过检验只说明政策前历史趋势相似,并不能排除以下威胁:(1) SUTVA 违反:处理组的政策通过"溢出"影响了对照组(如劳动力跨城市流动);(2) 同期混杂事件:政策实施同期,处理组遭遇了其他同向政策冲击;(3) 外推偏误:政策前的平行趋势不代表政策后的反事实路径。这些威胁需要通过学科知识、安慰剂检验、排他性限制条件等综合论证,而非仅依赖统计检验。
Q4:DID 和倾向得分匹配(PSM)可以结合吗?
A:可以,两种方法优势互补,组合使用称为 PSM-DID。PSM 先确保处理组与对照组在可观测特征上可比(降低选择偏误),DID 再差分掉不随时间变化的不可观测特征差异(降低遗漏变量偏误)。在 ChatSRS 中,可先输入"用 PSM 匹配处理组与对照组,匹配变量为……",待匹配后再接着说"对匹配后的数据做 DID 分析",两步无缝衔接。
小结
双重差分法是政策评估、因果推断研究中最常用的准实验方法,难点集中在四处:正确构建双向固定效应模型、严格检验平行趋势假设、用事件研究图可视化逐期效应,以及识别并应对 Staggered DID 的估计偏误。
ChatSRS 把全套流程压到一句话:自动输出 ATT 系数(聚类稳健 SE)、平行趋势联合检验、事件研究图(可发表版本)、安慰剂置换检验,并生成可直接复制进论文的 APA 7th 格式中文描述。
记住最重要的一条:DID 的因果解释依赖于平行趋势假设,事件研究图不是装饰,是必须展示的核心证据。
相关阅读
- 经济学实证研究 AI 分析全套 — 面板数据、工具变量、倍差法的综合工作流
- ANCOVA 协方差分析用 AI 一句话完成 — 控制协变量后的组间比较,DID 的简化版场景
- 生存分析用 AI 一句话完成 — 因果时序框架下的时间-事件数据分析
- 毕业论文统计分析救星 — 从选方法到写论文的完整 AI 工作流
本文首发于 ChatSRS 官方博客。如有问题或反馈,欢迎在 ChatSRS 站内 [用户中心 -> 帮助与反馈] 联系我们。