双重差分(DID)
DIDEvent Study

事件研究法:动态效应估计与系数图

事件研究法(Event Study)的完整讲解,包含动态效应估计、系数图绘制、归一化和Leads/Lags设置。

作者:计量科研导航站发布:2025-03-15★★★

本文结构

  1. 原理:事件研究法的模型设定
  2. 直觉:动态效应的经济学含义
  3. 代码:完整 Stata 实现与标准系数图

第一层:原理

事件研究模型

Yit=αi+λt+k=KLβkDi,tk+Xitγ+εitY_{it} = \alpha_i + \lambda_t + \sum_{k=-K}^{L} \beta_k \cdot D_{i,t-k} + X_{it}'\gamma + \varepsilon_{it}
  • Di,tkD_{i,t-k}:处理指示变量的 leads 和 lags
  • βk\beta_k:第 kk 期的动态处理效应
  • 基准期(通常 k=1k = -1)被省略,β1=0\beta_{-1} = 0

系数解读

  • k<0k < 0(leads/处理前):应接近零(平行趋势)
  • k=0k = 0:即时效应
  • k>0k > 0(lags/处理后):滞后效应

第二层:直觉

事件研究法回答的问题是:处理效应是否随时间变化?

在政策评估中,这至关重要:

  • 最低工资政策可能短期无影响但长期降低就业
  • 环境规制可能立即提高成本但逐渐带来创新收益

系数图(coefficient plot)是呈现这一动态过程的标准可视化工具。


第三层:Stata 代码

// ═══════════════════════════════════════════════
// 事件研究法完整实现
// ═══════════════════════════════════════════════
 
clear all
set seed 98765
 
local N = 200
local T = 20
local treat_time = 10
 
set obs `=`N'*`T''
gen id = ceil(_n/`T')
bysort id: gen t = _n
gen treat = (id > `=`N'/2')
 
// 动态处理效应
gen tau = 0
replace tau = 0.5*(t - `treat_time' + 1) if treat & t >= `treat_time'
gen y = 2 + 0.1*t + tau + rnormal(0, 1)
 
// 事件时间
gen rel_time = t - `treat_time'
 
// 生成虚拟变量
tab rel_time if treat, gen(D)
// 省略基准期 rel_time = -1
 
reghdfe y D*, absorb(id t) cluster(id)
 
coefplot, vertical drop(_cons) ///
    yline(0) xline(9.5, lpattern(dash) lcolor(red)) ///
    title("事件研究:动态处理效应") ///
    xtitle("相对时期") ytitle("系数估计")

参考文献

  • Sun, L., & Abraham, S. (2021). Estimating Dynamic Treatment Effects in Event Studies with Heterogeneous Treatment Effects. Journal of Econometrics, 225(2), 175-199.
  • Borusyak, K., Jaravel, X., & Spiess, J. (2024). Revisiting Event-Study Designs. Review of Economic Studies.

关联代码文件