计量经济学:DID 与事件研究法(Python)
1. DID 在识别什么
双重差分关注的是“处理组相对对照组,在政策后多变化了多少”:
$$ Y_{it}=\alpha_i+\gamma_t+\beta D_{it}+\varepsilon_{it} $$
其中 $\beta$ 是核心参数,解释依赖平行趋势假设。
2. 平行趋势不能只靠口头陈述
建议至少做三步:
- 政策前趋势图(处理组 vs 对照组);
- 事件研究中的政策前 lead 系数检验;
- 更换样本窗口与控制组做稳健性对照。
3. Python 示例(双向固定效应)
from linearmodels.panel import PanelOLS
import statsmodels.api as sm
panel = df.set_index(["unit", "time"]).sort_index()
panel["const"] = 1
mod = PanelOLS.from_formula(
"y ~ 1 + did + x1 + x2 + EntityEffects + TimeEffects",
data=panel,
)
res = mod.fit(cov_type="clustered", cluster_entity=True)
print(res)
4. 事件研究法(动态效应)
构造相对政策时点 $k=t-T_i$,回归:
$$ Y_{it}=\alpha_i+\gamma_t+\sum_{k \neq -1}\beta_k 1{event_time=k}+\varepsilon_{it} $$
- 省略 $k=-1$ 作为基期;
- 政策前 $\beta_k$ 应接近 0;
- 政策后 $\beta_k$ 展示动态影响路径。
5. 实务陷阱
- 处理时点错位导致“伪动态效应”;
- 标准误未聚类导致显著性夸大;
- 处理组与对照组构成差异过大。
结论应建立在“识别假设 + 诊断图 + 稳健性”的组合证据上。