正在加载中...

展开本页目录
算法教程RDD-回归不连续(RDD)

RDD-回归不连续(RDD)

No.055 · 在线教程

回归不连续设计(Regression Discontinuity Design, RDD)是一类基于阈值分配机制的准实验因果推断方法。当处理变量由运行变量是否跨过断点所决定时,断点附近样本在可观测和不可观测因素上可近似视为可比,从而可以识别局部因果效应。当前系统实现的是 Sha…

55-RDD-回归不连续(RDD)

1. 方法概述

回归不连续设计(Regression Discontinuity Design, RDD)是一类基于阈值分配机制的准实验因果推断方法。当处理变量由运行变量是否跨过断点所决定时,断点附近样本在可观测和不可观测因素上可近似视为可比,从而可以识别局部因果效应。当前系统实现的是 Sharp RDD(锐断点设计),适用于“是否接受政策/补贴/资格”由阈值严格决定的研究场景。

设样本为

$$ \mathcal{D}=\{(x_i,y_i)\}_{i=1}^{n},\quad x_i\in\mathbb{R},\ y_i\in\mathbb{R} \tag{1} $$

其中,\(x_i\) 为运行变量(running variable),\(y_i\) 为结果变量(outcome)。

2. 识别框架与处理分配

设断点为 \(c\),Sharp RDD 的处理分配规则为

$$ D_i=\mathbf{1}(x_i\ge c) \tag{2} $$

在连续性假设下,断点处局部平均处理效应(LATE)定义为

$$ \tau=\lim_{x\to c^+}\mathbb{E}[Y\mid X=x]-\lim_{x\to c^-}\mathbb{E}[Y\mid X=x] \tag{3} $$

为便于估计,常将运行变量中心化:

$$ \tilde x_i=x_i-c \tag{4} $$

3. 局部多项式估计

系统在带宽 \(h\) 内分别对断点左右两侧进行核加权局部多项式回归。设多项式阶数为 \(p\),左侧与右侧的目标函数分别为

$$ \hat\beta_-= \arg\min_{\beta_-} \sum_{i:\,-h\le \tilde x_i<0} K\!\left(\frac{\tilde x_i}{h}\right) \left(y_i-\sum_{j=0}^{p}\beta_{-,j}\tilde x_i^j\right)^2 \tag{5} $$

$$ \hat\beta_+= \arg\min_{\beta_+} \sum_{i:\,0\le \tilde x_i\le h} K\!\left(\frac{\tilde x_i}{h}\right) \left(y_i-\sum_{j=0}^{p}\beta_{+,j}\tilde x_i^j\right)^2 \tag{6} $$

断点处左右极限由截距项给出,故估计量为

$$ \hat\tau=\hat\beta_{+,0}-\hat\beta_{-,0} \tag{7} $$

系统采用加权最小二乘(WLS)求解,若权重为 \(w_i\),对应实现为

$$ X_i^*=\sqrt{w_i}X_i,\quad y_i^*=\sqrt{w_i}y_i \tag{8} $$

在左右侧独立得到截距标准误后,处理效应标准误近似为

$$ \mathrm{SE}(\hat\tau)=\sqrt{\mathrm{SE}(\hat\beta_{+,0})^2+\mathrm{SE}(\hat\beta_{-,0})^2} \tag{9} $$

统计检验量为

$$ t=\frac{\hat\tau}{\mathrm{SE}(\hat\tau)} \tag{10} $$

双侧 p 值为

$$ p=2\left(1-\Phi\left(|t|\right)\right) \tag{11} $$

系统默认给出 95% 置信区间:

$$ \hat\tau\pm 1.96\cdot \mathrm{SE}(\hat\tau) \tag{12} $$

4. 核函数与带宽

系统支持三种核函数:

三角核 $$ K(u)=\max(1-|u|,0) \tag{13} $$

Epanechnikov 核 $$ K(u)=\max\left(0,\frac{3}{4}(1-u^2)\right) \tag{14} $$

均匀核 $$ K(u)=\mathbf{1}(|u|\le 1) \tag{15} $$

带宽选择支持 IK、CV、手动指定三种方式。可记一般形式为

$$ h=\arg\min_{b\in\mathcal{H}}\mathcal{J}(b) \tag{16} $$

其中,IK 对应最优带宽准则,CV 对应预测误差最小化,手动方式由研究者给定 \(h\)。

系统还进行带宽稳健性分析(默认倍数 \(m\in\{0.5,0.75,1.0,1.25,1.5\}\)):

$$ h_m=m\cdot h \tag{17} $$

并在每个 \(h_m\) 下重复估计 \(\hat\tau(h_m)\)。

5. McCrary 密度连续性检验

为检验运行变量在断点处是否存在操纵,系统进行密度连续性检验。记断点左右密度估计为 \(\hat f_-(c),\hat f_+(c)\),则对数密度差为

$$ \Delta=\log\hat f_+(c)-\log\hat f_-(c) \tag{18} $$

在简化近似下,统计量为

$$ Z=\frac{\Delta}{\sqrt{1/n_-+1/n_+}} \tag{19} $$

其中 \(n_-,n_+\) 为断点附近左右样本数。双侧 p 值为

$$ p_{mc}=2\left(1-\Phi(|Z|)\right) \tag{20} $$

若 \(p_{mc}>0.05\),通常认为断点处密度连续,不支持显著操纵证据。

6. 协变量平衡检验

对于协变量 \(Z_k\),系统比较断点附近左右侧均值:

$$ \Delta_k=\bar Z_{k,+}-\bar Z_{k,-} \tag{21} $$

并进行 Welch t 检验。若多数协变量在断点处差异不显著,可增强局部可比性的可信度。

7. 与系统一致的实现流程

系统实际流程可概括为:

  1. 读取数据并进行缺失值过滤;
  2. 校验断点是否位于运行变量取值范围内;
  3. 根据带宽策略计算 \(h\),并保证断点两侧最小样本数;
  4. 在 \(|x-c|\le h\) 内做左右局部回归并估计 \(\hat\tau\);
  5. 输出 McCrary 检验、带宽稳健性、协变量平衡检验;
  6. 导出 Excel 与图表,支持复现脚本导出。

8. 输出结果说明(Excel 与图表)

系统在 results/时间戳目录/ 下输出一个 xlsx 和多张图。

8.1 Excel 工作表

  • Parameters:参数设置与输入信息;
  • Estimation:\(\hat\tau\)、SE、置信区间、t、p、断点左右截距、带宽等;
  • Diagnostics:样本规模与 McCrary 检验结果;
  • Forecast:带宽内样本的拟合值(含 left/right 标识);
  • Robustness:不同带宽倍数下的估计结果;
  • CovariateBalance:协变量平衡检验结果;
  • Charts:图表文件路径索引。

8.2 图表文件

系统默认输出如下图表:

  1. 01_rd_plot.png:RDD 散点与左右拟合线;
  2. 02_bandwidth_sensitivity.png:带宽敏感性;
  3. 03_mccrary_test.png:密度连续性检验;
  4. 04_covariate_balance.png:协变量平衡(有协变量时);
  5. 05_residuals.png:残差分布与 Q-Q 图。

9. 论文写作模板

本文采用 Sharp RDD 识别政策阈值附近的局部因果效应。处理变量由运行变量是否跨越断点决定(式(2)),并通过断点左右条件期望差异定义处理效应(式(3))。在估计层面,使用核加权局部多项式回归分别拟合断点两侧函数(式(5)–式(6)),以截距差作为处理效应估计量(式(7)),并报告标准误、t 统计量、p 值与置信区间(式(9)–式(12))。进一步地,通过 McCrary 密度连续性检验(式(18)–式(20))和协变量平衡检验(式(21))验证识别假设,并使用多带宽稳健性分析(式(17))评估估计结果稳定性。

10. 实现说明与注意事项

  1. 断点值必须位于运行变量取值区间内部,且断点两侧应有足够样本;
  2. RDD 识别的是断点附近的局部效应,不等同于全样本平均处理效应;
  3. 带宽过大可能引入偏差,带宽过小可能导致方差上升;
  4. 建议在正文报告主带宽结果,在附录报告稳健性和诊断图表。

11. 单篇终审补充

11.1 图题与表题对齐建议

  • 本文档应优先对应真实算法目录 具体的算法2/RDD-回归不连续(RDD)
  • 代表性结果目录建议绑定 具体的算法2/RDD-回归不连续(RDD)/results/RDD分析结果_20260329_165227_271695
  • 表题应直接对应 RDD分析结果_20260329_165227_271695.xlsx 的真实工作表:ParametersEstimationDiagnosticsForecastRobustnessCovariateBalanceCharts
  • 图题应优先绑定该目录下真实图:01_rd_plot.png02_bandwidth_sensitivity.png03_mccrary_test.png04_covariate_balance.png05_residuals.png

11.2 终审说明

  • 当前 RDD 的正式结果目录已经可以形成“xlsx + 图”闭环。
  • 复现脚本可对应 results/repro_rdd_template_20260329_165324.py,其 SRC_FILE 实际写为 rdd_window1_input.csv,属于“results 根目录脚本同目录 CSV 快照复现”口径。
  • 因此论文中若写复现说明,应区分“时间戳结果目录中的正式导出”与“results 根目录中的复现脚本/输入 CSV”,不要将其误写成 repro_inputs 结构。

11.3 全量强化补充

  • 当前 RDD 文档应绑定真实算法目录 具体的算法2/RDD-回归不连续(RDD),代表性主结果目录为 具体的算法2/RDD-回归不连续(RDD)/results/RDD分析结果_20260329_165227_271695
  • 该主目录内工作簿为 RDD分析结果_20260329_165227_271695.xlsx,真实工作表为 ParametersEstimationDiagnosticsForecastRobustnessCovariateBalanceCharts
  • 主图文件与主工作簿同层放置,分别为 01_rd_plot.png02_bandwidth_sensitivity.png03_mccrary_test.png04_covariate_balance.png05_residuals.png。当前主结果目录没有单独 charts/ 文件夹。
  • results 根目录还平铺保留了同名图片、输入 CSV rdd_window1_input.csv、多份 repro_rdd_template_*.py 和多份 pytest 结果簿。这说明 RDD 当前采用“时间戳结果目录 + results 根目录复现入口”的分层结构。
  • 当前主复现入口为 具体的算法2/RDD-回归不连续(RDD)/results/repro_rdd_template_20260329_165324.py,脚本关键输入写法是 SRC_FILE = 'rdd_window1_input.csv'。这属于 results 根目录脚本同目录 CSV 快照复现,不是 repro_inputs 结构。
  • 因此正文与附录必须明确区分两层证据:RDD分析结果_20260329_165227_271695/ 用于承接正式结果簿和正式图,results/ 根目录下的 repro_rdd_template_20260329_165324.py + rdd_window1_input.csv 用于承接复现实验。
  • 若论文写“程序自动导出可移植复现目录”,这里应修正为“当前模块的复现脚本与输入快照位于 results 根目录,而非时间戳结果目录内部”。这是与 CODAS、ANP、FastText 等算法的重要差异。

12. 软件实现核查补充(2026-07)

  • 当前实现的主结果目录应写作 具体的算法2/RDD-回归不连续(RDD)/results/RDD分析结果_20260329_165227_271695,主工作簿为 RDD分析结果_20260329_165227_271695.xlsx
  • 正文应围绕 ParametersEstimationDiagnosticsForecastRobustnessCovariateBalanceCharts 来写,图则对应 01_rd_plot.png02_bandwidth_sensitivity.png03_mccrary_test.png04_covariate_balance.png05_residuals.png
  • results 根目录中的 repro_rdd_template_20260329_165324.py + rdd_window1_input.csv 是复现入口,不应混成主结果目录产物。
  • 这类时间戳目录与根目录复现脚本分离的结构,应在附录中明确写出,避免用户误以为整个工程只有单目录输出。