计量经济学:匹配估计与双重稳健 AIPW
1. 识别前提
在观测数据中估计处理效应,常依赖:
- 可忽略性(给定协变量后处理分配近似随机)。
- 重叠性(每个样本有非零概率进入处理/对照)。
匹配通过“找相似对照”降低选择偏差,AIPW 则进一步结合结果模型提高稳健性。
2. 匹配估计
倾向得分定义为:
$$ e(X)=P(D=1\mid X) $$
常见流程:
- 估计倾向得分(logit/probit)。
- 最近邻匹配或卡尺匹配。
- 评估匹配后协变量平衡(SMD)。
- 在匹配样本上估计 ATT/ATE。
3. AIPW 双重稳健
AIPW 估计量可写为:
$$ \hat\tau_{AIPW}=\frac{1}{n}\sum_i\left[\hat m_1(X_i)-\hat m_0(X_i)+\frac{D_i(Y_i-\hat m_1(X_i))}{\hat e(X_i)}-\frac{(1-D_i)(Y_i-\hat m_0(X_i))}{1-\hat e(X_i)}\right] $$
性质:只要倾向得分模型或结果回归模型其中一个设定正确,就可一致估计。
4. Python 示例(简化)
import numpy as np
from sklearn.linear_model import LogisticRegression, LinearRegression
X = df[["x1", "x2", "x3"]].values
D = df["treat"].values
Y = df["y"].values
# 1) 倾向得分模型
ps = LogisticRegression(max_iter=1000).fit(X, D).predict_proba(X)[:, 1]
ps = np.clip(ps, 1e-3, 1 - 1e-3)
# 2) 结果模型
m1 = LinearRegression().fit(X[D == 1], Y[D == 1])
m0 = LinearRegression().fit(X[D == 0], Y[D == 0])
mu1 = m1.predict(X)
mu0 = m0.predict(X)
# 3) AIPW
tau = np.mean(mu1 - mu0 + D * (Y - mu1) / ps - (1 - D) * (Y - mu0) / (1 - ps))
print("AIPW ATE:", tau)
5. 诊断重点
- 重叠性诊断:倾向得分分布是否严重分离。
- 平衡性诊断:匹配/加权后 SMD 是否显著下降。
- 极端权重处理:截尾或稳定化,避免方差爆炸。
6. 写作建议
- 先报告可比性改善证据,再报告处理效应。
- 同时给出匹配估计与 AIPW 估计,比较方向与量级。
- 说明潜在未观测混杂风险,并给出敏感性分析思路。
双重稳健不是“无需假设”,而是把模型错设风险分散到两条路径上。