Skip to content

DID 事件研究平行趋势教程

DID 诊断

讲清楚政策时点来源、事件期区间、固定效应维度和聚类变量在 STATAU 中的填写方式。

常用 Stata 命令reghdfe y i.event_time##i.treat controls, absorb(entity year) cluster(entity)
在 STATAU 中打开此功能
事件研究平行趋势DIDreghdfe event study

这个页面解决什么问题

事件研究页不是为了立刻证明“政策有效”,而是先回答两个更基础的问题:政策实施前,处理组和对照组的趋势像不像;政策实施后,效果是马上出现、逐步累积,还是很快消失。只要这两个问题看清楚,DID 的解释才会更稳。

一图看懂

事件研究图解
读事件研究图时先看哪里

先看处理前各期是否围绕零,再看处理后系数是持续上升、短期跳升还是没有明显变化。顺序不要反。

方法原理

事件研究会把样本按“距离政策实施还有多少期、已经过去多少期”排开,然后分别估计每一期的系数。最关键的不是某一个点,而是整条系数路径:处理前是否围绕零波动,处理后是否出现有逻辑的动态变化。

核心公式

事件研究的常见写法

yit=k1βk1(event_timeit=k)×treati+γcontrolsit+αi+λt+εit

这里最重要的是 βk 这一串系数。每一个 βk 都对应政策前后某一期的动态效应,页面里的“最小事件期、最大事件期、参考期”就是在控制这串系数怎么生成。

适用数据与前提

你需要先想清楚三件事:谁是处理组、时间是按年还是按季度记、政策时点从哪里来。如果数据里已经有 policy_year 这类字段,优先直接使用;没有时再考虑固定年份或自动识别。

STATAU 页面中每个位置应该放什么变量

网站位置应放入的变量说明
因变量 (Y)政策影响的结果变量例如产出、就业、创新、绩效。
处理组变量 (treat)处理组识别变量通常是 0/1,标记样本是否属于处理组。
时间 ID (Time)年份 / 季度 / 月份用于构造事件期。
政策时点来源固定年份 / policy_year / DID 信号自动识别决定事件期如何生成。
固定效应变量 (多选)吸收维度例如企业、年份、地区、行业。
聚类变量聚类标准误维度通常使用个体变量或地区变量。

Stata 等效代码

reghdfe [被解释变量] i.[事件期]##i.[处理组] [控制变量], absorb([固定效应]) cluster([聚类变量])
Stata 代码位置STATAU 网站对应位置应放入什么
i.[事件期]##i.[处理组]政策时点来源 + 处理组变量由处理组和事件期共同生成动态 DID 系数。
absorb([固定效应])固定效应变量 (多选)吸收个体、时间或其他研究设计要求的维度。
cluster([聚类变量])聚类变量仅在聚类标准误时填写。
可删除代码段提示
  • 如果不做聚类标准误,可以去掉整个 `cluster([聚类变量])`。
  • 如果所有处理组共享同一政策年份,可用固定年份,不必单独提供 `policy_year`。

在 STATAU 中操作步骤

  1. 先填写因变量、处理组变量和时间变量。
  2. 选择政策时点来源,再设定最小事件期、最大事件期和参考期。
  3. 勾选要吸收的固定效应维度,并选择标准误类型。
  4. 运行后重点查看处理前各期系数是否整体接近零。

结果怎么看

  • 处理前 lead 系数若系统性偏离零,说明平行趋势可能不足。
  • 处理后 lag 系数展示的是动态效应路径,要结合政策逻辑和时间窗口解释。
  • 事件期区间设太宽但样本覆盖不足,尾部系数通常会很不稳定。
论文表述示例
  • 可以写成:“事件研究结果显示,政策实施前各期系数未表现出系统性显著偏离,平行趋势假设得到一定支持。”

常见使用误区

  • didpost 误填到处理组位置,会直接干扰事件期识别。
  • 没有 policy_year 时若自动识别 DID 信号,务必同时提供个体 ID。