一、DID 在顶刊中的地位
双重差分是现代实证社科研究最核心的准实验方法之一,被广泛使用于:
- • American Economic Review
- • Quarterly Journal of Economics
- • American Political Science Review
- • American Sociological Review
双重差分(Difference-in-Differences, DID)的核心目标不是“做回归”,而是:
利用“时间变化 + 组别差异”构造反事实。
二、识别逻辑:从反事实到平行趋势
在社会科学中,我们关注的核心问题往往是:
某项政策是否“导致”某种结果变化?
但现实世界中,政策并非随机分配,因此无法直接观察反事实。
设:
DID 估计量为:
即:
“处理组变化”减去“对照组变化”
真正的关键在于一个假设:
平行趋势假设(Parallel Trends Assumption)
平行趋势图示

顶刊论文几乎都会做两件事:
三、平行趋势如何检验
方法一:图形检验(必要但不充分)
import matplotlib.pyplot as pltdf.groupby(['year','treatment'])['outcome'].mean().unstack().plot()plt.axvline(policy_year, linestyle='--')plt.show()
顶刊逻辑:
方法二:回归形式的前趋势检验(更严谨)
构造 leads:
如果处理前系数显著 ≠ 0,则平行趋势可能不成立。
在 Python 中可使用:
四、基准模型(Two-way Fixed Effects)
标准顶刊基准形式:
Python 实现:
from linearmodels.panel import PanelOLSimport statsmodels.api as smdf = df.set_index(['id','year'])model = PanelOLS.from_formula('outcome ~ 1 + treatment*post + controls + EntityEffects + TimeEffects',data=df)res = model.fit(cov_type='clustered', cluster_entity=True)print(res.summary)
注意几个顶刊标准:
- 3. cluster 标准误(通常按个体或政策单元)
五、结果如何解读(高阶写法)
不要写:
“系数为0.05,在1%显著”
要写:
“该政策使处理组结果变量平均提高5%,相当于基准均值的12%。”
顶刊表达包括:
- • 经济意义(economic magnitude)
六、是否需要稳健性检验?
答案是:必须。
没有稳健性检验的DID,不可能进入顶级期刊。
常见稳健性包括:
示例:假政策年份
df['fake_post'] = (df['year'] >= fake_year).astype(int)
如果假政策显著,说明模型存在问题。
七、异质性分析
DID 只是平均效应。
顶刊更关心:
形式:
Python:
df['interaction'] = df['did'] * df['high_group']
八、动态效应(Event Study)
这是现代DID的标准配置。
画出:
看是否:
这是目前 AER / QJE 论文的常规做法。