实证方法教程 / stacked_did

Stacked DID 分 cohort 稳健性

把处理组、对照组和政策时点落到代码里

这节课解决什么适合政策评估、处理组/对照组和处理时间明确的准实验问题。
先准备哪些变量因变量 / 个体 ID / 时间变量 / 处理变量
会看到哪张表stacked_did_results.csv
论文里怎么克制解释报告处理组定义、对照组来源、样本窗口和识别假设。

Stacked DID 分 cohort 稳健性是什么?

Stacked DID 把交错处理拆成多个局部 DID:每一个处理 cohort 都有自己的小样本、自己的处理前后窗口和自己的对照组,最后把这些局部样本堆叠起来估计平均效应。

先用一句话理解

把 Stacked DID 想成一个 cohort 一个小实验。先把 2017 年处理的单位和它的可用对照放在一个篮子里,再把 2018 年处理的单位和它的可用对照放在另一个篮子里,最后把这些篮子合并。

什么时候用

判断项教科书式判断
适合用在处理分批发生,且希望透明展示每个 cohort 的对照组构造。
先不要用在没有 id/time/treatment/post/cohort/event-time 信息,或每个 cohort 的局部对照不足。
最关键的前提每个局部 DID 内部仍需要可信的平行趋势和清楚的对照组。
读表顺序先看 cohort 样本构造,再看总体系数和 cohort 结果表。
论文表述边界它是交错 DID 的专用稳健性或扩展估计,不应伪装成普通主规格。

把它和相近方法分清楚

容易混淆的对象怎么区分初学者记法
普通 DID一个处理组、一个对照组、一个政策时间。适合单一处理时点。
CSDID直接估计 ATT(g,t)。输出 cohort-time 效应和聚合效应。
Stacked DID先构造 cohort-specific 局部 DID,再堆叠估计。对照组构造更容易检查。

核心直觉和模型公式

堆叠后的局部 DID

堆叠样本中常见的估计式为:

\[Y_{igt}=\beta D_{igt}+\alpha_{ig}+\lambda_{gt}+\varepsilon_{igt}\]

g 表示 cohort,D_igt 是在该 cohort 样本内的处理状态;固定效应通常也要按 cohort 重新定义。

公式里的符号怎么读

符号含义在本页怎么理解
gcohort首次处理时间相同的一批单位。
i单位企业、地区或个人。
t时间真实时间或相对处理时间。
D_igt局部处理状态在 cohort g 的堆叠样本中,单位 i 在 t 是否处于处理后。
α_igcohort × unit 固定效应控制单位在每个局部样本中的不变差异。
λ_gtcohort × time 固定效应控制每个 cohort 样本中的共同时间冲击。

专业使用口径

Stacked DID 的重点是样本构造,而不是把模型名称写得更高级。

口径专业写法
cohort 样本逐个 cohort 构造处理组和可用对照。
对照来源说明是 never-treated、not-yet-treated,还是两者组合。
窗口设置说明每个 cohort 保留哪些处理前后时期。
结果定位报告为专用稳健性/扩展 DID,不替代主规格显著性。

一步一步做:从问题到结果的五步

步骤这一页具体做什么做到什么程度才算读懂
1. 定义 cohort找出每个单位首次处理时间。cohort 不清楚时应跳过。
2. 构造局部样本每个 cohort 单独选择处理组、对照组和时间窗口。不要让已经处理的单位污染对照组。
3. 添加堆叠标识同一单位可能出现在多个 cohort 样本中。标准误和固定效应要考虑堆叠结构。
4. 估计堆叠模型使用 cohort-specific 固定效应。不能当普通 TWFE 直接解释。
5. 对照 cohort 表总体结果要和 cohort-level 结果一起读。某一个 cohort 驱动结果时要说明。

结果怎么读:先读口径,再读数字

读表顺序本页怎么读不要这样读
先看构造状态是否生成 stacked_did_results 和 cohort 结果。构造失败时只能披露 skipped。
再看总体 β它是堆叠局部 DID 的平均效应。不要写成单一政策时点 DID。
然后看 cohort 表各 cohort 的方向和样本量是否一致。小 cohort 驱动时要谨慎。
最后看对照来源never-treated 与 not-yet-treated 的含义不同。不说明对照组来源,结果难以评估。

初学者最容易错在哪里

误读为什么错
把 Stacked DID 当 CSDID 的别名错。一个是堆叠局部样本,一个是估计 ATT(g,t)。
忽略 cohort 样本构造错。构造过程就是方法可信度的一部分。
把它作为显著性补丁错。它应作为专用稳健性或扩展 DID。
缺少 cohort 仍硬跑错。没有处理时间结构就无法构造堆叠样本。

变量要求和案例口径

字段口径
数据CSMAR 风格 A 股企业创新面板
原始样本196 家上市公司,2015-2020 年,约 1200 个公司-年观测;各方法有效样本以本页输出表 N 为准
因变量patent_count;回归页通常使用 ln(1 + patent_count)
核心解释变量dfi_index,数字普惠金融指数;部分案例输出展示的是标准化后的 dfi_index
控制变量roa、lev、size、growth、cashflow、tobinq、top1、dual、board、indep、soe、age
输出文件stacked_did_results.csv
角色要求因变量、个体 ID、时间变量、处理变量、处理后时期
依赖包无额外 Stata 社区包要求

实际代码

下面是本页案例里的最小 Stata 代码。它的作用是帮助你看清变量怎么进入模型、结果文件怎么生成,而不是要求你在网页里手动运行。

* case code has not been generated yet

实际输出表

这张表是本方法页配套案例的输出结果,用来把前面的公式、变量口径和代码对应到实际数字。

该方法的案例输出表还没有生成。

案例图

这是一张由同一份案例数据生成的页面内诊断图。

Stacked DID 分 cohort 稳健性 的共用案例输出图。
Stacked DID 分 cohort 稳健性 的共用案例输出图。

论文里怎么写

本文进一步采用Stacked DID 分 cohort 稳健性检验数字普惠金融变化对企业创新的影响。处理组、对照组和政策后变量均基于同一 firm-year 样本构造,结果报告在 stacked_did_results.csv 中。若处理效应方向与基准回归一致,可作为政策评估维度的补充证据;若不一致,应优先解释识别假设和样本切分差异。

检查清单

  • 逐个 cohort 检查对照组来自 never-treated 还是 not-yet-treated。
  • 堆叠样本要有 cohort 固定效应和相对时间口径,不能退化成普通 TWFE DID。
  • 报告平均效应时同时看 cohort 表,避免一个 cohort 主导整体结论。

返回教程库 · 查看共用案例