Page QiView

计量经济学:RDD 断点回归设计与稳健性检验

计量经济学:RDD 断点回归设计与稳健性检验

1. 识别直觉

RDD 适用于处理变量在阈值处决定政策暴露的情形。
如果个体无法精确操纵阈值附近取值,那么阈值两侧足够接近的样本可近似看作随机分配。

2. 参数与模型

设运行变量为 $R_i$,阈值为 $c$,处理指示为 $D_i=\mathbf{1}(R_i\ge c)$。
局部平均处理效应(sharp RDD)为:

$$ \tau = \lim_{r\downarrow c} E[Y_i\mid R_i=r]-\lim_{r\uparrow c} E[Y_i\mid R_i=r] $$

实践中常用局部线性回归并加核权重:

$$ Y_i = \alpha + \tau D_i + \beta_1(R_i-c)+\beta_2 D_i(R_i-c)+u_i $$

3. Python 示例(局部线性 + 不同带宽)

import numpy as np
import pandas as pd
import statsmodels.formula.api as smf


def fit_local_rdd(df, y, running, cutoff, bw):
    d = df.copy()
    d = d[np.abs(d[running] - cutoff) <= bw].copy()
    d["treat"] = (d[running] >= cutoff).astype(int)
    d["r_centered"] = d[running] - cutoff

    model = smf.ols(
        f"{y} ~ treat + r_centered + treat:r_centered",
        data=d,
    ).fit(cov_type="HC1")
    return model.params["treat"], model.bse["treat"], len(d)

for bw in [2, 4, 6]:
    tau, se, n = fit_local_rdd(df, y="outcome", running="score", cutoff=60, bw=bw)
    print(f"bw={bw}, tau={tau:.4f}, se={se:.4f}, n={n}")

4. 关键诊断

  1. McCrary 密度检验:看阈值附近是否有人为操纵。
  2. 协变量连续性检验:预处理变量在阈值处不应突变。
  3. 带宽敏感性:不同带宽结果应方向一致。
  4. 多项式阶数稳健性:避免高阶多项式外推。

5. 实务结论写法

  1. 先交代阈值规则与制度背景。
  2. 报告主规格(数据驱动带宽)与替代规格(更窄/更宽带宽)。
  3. 报告图形证据(bin scatter + 局部拟合)与操纵检验。

RDD 的可信度来自“局部可比性 + 系统稳健性检验”,而不是一条显著系数。