冲击模型(DID、事件研究等)“有解”但样本“不平衡” ≠ 结果一定偏误,而是需要分三步处理:
1️⃣ 先诊断:到底是“面板稀疏”还是“缺失非随机”?
2️⃣ 再补救:用“多期DID + 插补/固定效应/加权”三板斧,把不平衡带来的偏差降到最低。
3️⃣ 最后报告:在正文 & 附录给出 平衡性检验 + 稳健性。
下面给可复制代码+写作模板,直接落地。
① 10 秒诊断:缺失类型
情形 | 命令 | 判断标准 |
面板稀疏(MCAR) | xtdescribe | 缺失与时间/处理状态无关 |
缺失非随机(MNAR) | ttest x, by(missing) | 缺失组/非缺失组基线特征显著不同 |
② 三板斧补救
✅ 多期DID(Callaway & Sant’Anna)
不要求平衡面板,直接适用:
stata
* 安装最新版 didnet install did, from("https://raw.githubusercontent.com/friosavila/playingwith/master")
* 跑多期DIDdidregress (y x1 x2) (treat), group(city) time(year) method(cs)
✅ 插补 + 双向固定效应(TWFE)
先用 mi impute chained 插补,再跑 DID:
stata
mi set widemi register imputed y x1 x2mi impute chained (regress) y x1 x2 = z1 z2, add(20)mi estimate: xtreg y treat##post x1 x2 i.year i.id, fe cluster(id)
✅ 逆概率加权(IPW)
把“是否观测”做 logit,生成权重:
stata
logit observed i.treat##i.year x1 x2predict p, prgen w = 1/pxtreg y treat##post x1 x2 [pw=w], fe cluster(id)
③ 报告模板(正文+附录)
“由于企业进入退出导致面板非平衡,我们首先使用 Callaway & Sant’Anna 多期DID,无需强制平衡即给出 ATT。其次,采用 MI 插补和 IPW 加权,结果保持一致(附录表 A5)。平衡性检验表明,缺失组与非缺失组在基线特征上无显著差异(p>0.10),进一步验证了结论稳健性。”
④ 一句话总结
不平衡面板 ≠ 不能用 DID,只要 先诊断缺失机制 → 选多期DID或插补/加权 → 报告平衡性检验,就能让审稿人放心。