计量经济学:合成控制法原理、估计与安慰剂检验
1. 何时用合成控制
当只有一个或少数处理对象,且传统 DID 的平行趋势较难成立时,SCM 常更有解释力。
核心思想是:用对照组加权组合出一个“最像处理组处理前路径”的合成对象。
2. 基本形式
设处理组处理前结果向量为 $X_1$,对照组矩阵为 $X_0$,权重向量为 $W$:
$$ W^*=\arg\min_W (X_1-X_0W)‘V(X_1-X_0W) $$
约束:$w_j\ge 0$ 且 $\sum_j w_j=1$。
处理后效应估计为:
$$ \hat\tau_t = Y_{1t} - \sum_j w_j^* Y_{jt} $$
3. Python 最小实现思路
import numpy as np
import cvxpy as cp
# X1: (k, 1), X0: (k, J)
w = cp.Variable(X0.shape[1])
objective = cp.Minimize(cp.sum_squares(X1.flatten() - X0 @ w))
constraints = [w >= 0, cp.sum(w) == 1]
prob = cp.Problem(objective, constraints)
prob.solve()
w_star = w.value
synthetic_y = Y0 @ w_star # Y0: (T, J)
effect = Y1 - synthetic_y # Y1: (T,)
4. 推断与稳健性
SCM 常用安慰剂(placebo)推断:
- 把每个对照组依次当作“伪处理组”。
- 重复构造其合成对照。
- 比较真实处理效应与伪效应分布位置。
此外建议报告:
- 处理前拟合误差(RMSPE)。
- 剔除关键供体后的 leave-one-out 稳健性。
- 不同预测变量集合下的结果稳定性。
5. 常见误区
- 处理前拟合很差却直接解释处理后差异。
- 忽略供体池选择对结果的结构性影响。
- 把 SCM 当作“自动因果工具”,不讨论制度背景。
合成控制法的说服力,来自“处理前拟合质量 + 安慰剂对比 + 制度叙事一致性”。