Page QiView

计量经济学:匹配估计与双重稳健 AIPW

计量经济学:匹配估计与双重稳健 AIPW

1. 识别前提

在观测数据中估计处理效应,常依赖:

  1. 可忽略性(给定协变量后处理分配近似随机)。
  2. 重叠性(每个样本有非零概率进入处理/对照)。

匹配通过“找相似对照”降低选择偏差,AIPW 则进一步结合结果模型提高稳健性。

2. 匹配估计

倾向得分定义为:

$$ e(X)=P(D=1\mid X) $$

常见流程:

  1. 估计倾向得分(logit/probit)。
  2. 最近邻匹配或卡尺匹配。
  3. 评估匹配后协变量平衡(SMD)。
  4. 在匹配样本上估计 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. 诊断重点

  1. 重叠性诊断:倾向得分分布是否严重分离。
  2. 平衡性诊断:匹配/加权后 SMD 是否显著下降。
  3. 极端权重处理:截尾或稳定化,避免方差爆炸。

6. 写作建议

  1. 先报告可比性改善证据,再报告处理效应。
  2. 同时给出匹配估计与 AIPW 估计,比较方向与量级。
  3. 说明潜在未观测混杂风险,并给出敏感性分析思路。

双重稳健不是“无需假设”,而是把模型错设风险分散到两条路径上。