《断点回归的非参数估计及 Stata 实现》

目录

一、引言

二、文献综述

三、理论原理

四、实证模型

五、稳健性检验

六、程序代码及解释

七、代码运行结果及解释


一、引言

断点回归(Regression Discontinuity,RD)设计是一种准实验方法,用于评估政策或干预措施的因果效应。它利用个体在某个阈值附近的分配规则的不连续性,来识别处理效应。在社会科学研究中,断点回归方法得到了广泛的应用。

二、文献综述

断点回归设计作为一种有效的因果推断方法,在众多领域都有重要的应用和研究成果。

在经济学领域,Lee(2008)运用断点回归方法研究了最低工资政策对就业的影响。该研究发现,最低工资的提高对低技能工人的就业产生了一定的负面影响。这一结论为政策制定者在考虑最低工资调整时提供了重要的参考依据。

在教育学领域,Ding and Lehrer(2010)利用断点回归设计评估了班级规模对学生成绩的影响。他们的研究表明,较小的班级规模能够显著提高学生的学习成绩,尤其是在数学和阅读方面。这一发现对于教育资源的分配和教学模式的改进具有重要的指导意义。

在公共政策评估方面,Van der Klaauw(2002)通过断点回归分析了福利政策对低收入家庭的影响。研究发现,福利政策的实施能够有效地提高低收入家庭的收入水平,改善他们的生活状况。这为政府制定和完善福利政策提供了有力的证据支持。

此外,还有许多学者在不同领域运用断点回归方法进行了深入的研究。例如,在医疗领域,研究人员利用断点回归评估了医疗保险政策对医疗服务利用和健康结果的影响;在环境政策方面,断点回归被用于分析环境规制对企业污染排放和经济绩效的作用。

三、理论原理

断点回归的核心理论依据在于,当个体在某个断点附近被分配到处理组或控制组的概率发生突变时,如果没有其他混杂因素的影响,那么在断点附近的个体在可观测特征上应该是相似的。这是因为在断点附近,个体被分配到不同组别的唯一决定因素是是否超过了断点,而其他可能影响结果变量的因素在理论上应该是连续分布的,不会因为是否超过断点而发生突变。

四、实证模型

五、稳健性检验

为了确保断点回归结果的可靠性,可以进行多种稳健性检验,如改变带宽、更换估计方法、检查协变量的平衡性等。

  1. 改变带宽

    • 带宽的选择对断点回归的结果有重要影响。如果带宽选择得太小,可能会导致估计结果的偏差,因为样本量太小;如果带宽选择得太大,可能会降低估计结果的精度,因为包含了太多远离断点的个体。
    • 可以通过尝试不同的带宽大小,观察估计结果的变化情况,来检验结果的稳健性。如果估计结果在不同带宽下相对稳定,说明结果比较可靠。
  2. 更换估计方法

    • 除了常见的局部线性回归估计方法外,还可以尝试其他估计方法,如核估计、多项式回归等。
    • 不同的估计方法可能会对结果产生不同的影响。如果不同估计方法得到的结果相似,说明结果比较稳健。
  3. 检查协变量的平衡性

    • 在断点回归中,要求除了处理变量外,其他协变量在断点附近应该是连续分布的,即不存在系统性差异。
    • 可以通过比较断点两侧协变量的均值、方差等统计量,或者进行平衡性检验,来检查协变量的平衡性。如果协变量在断点两侧基本平衡,说明断点回归的假设得到满足,结果比较可靠。

六、程序代码及解释

以下是使用 Stata 进行断点回归非参数估计的示例代码:

// 导入数据
use "your_data.dta", clear

// 设定断点变量和结果变量
gen treatment = (threshold_variable > cutoff)
gen outcome = your_outcome_variable

// 清晰断点回归
// 进行基本的清晰断点回归估计
rdrobust outcome treatment, all

// 可以指定带宽进行估计
rdrobust outcome treatment, c(cutoff) bw(your_bandwidth)

// 模糊断点回归
// 首先生成工具变量
gen instrument = (threshold_variable > cutoff)

// 进行两阶段最小二乘法估计
ivregress 2sls outcome (treatment = instrument)

// 可以添加控制变量
ivregress 2sls outcome (treatment = instrument) control_var1 control_var2

// 可以指定样本范围
ivregress 2sls outcome (treatment = instrument) if threshold_variable > cutoff_min & threshold_variable < cutoff_max

// 稳健性检验:改变带宽
// 对于清晰断点回归
rdrobust outcome treatment, c(cutoff) bw(another_bandwidth1)
rdrobust outcome treatment, c(cutoff) bw(another_bandwidth2)

// 对于模糊断点回归
ivregress 2sls outcome (treatment = instrument) if threshold_variable > cutoff_min & threshold_variable < cutoff_max, bw(another_bandwidth1)
ivregress 2sls outcome (treatment = instrument) if threshold_variable > cutoff_min & threshold_variable < cutoff_max, bw(another_bandwidth2)

// 稳健性检验:更换估计方法
// 使用核估计方法进行清晰断点回归
rdkern outcome treatment, c(cutoff) bw(your_bandwidth) kernel(triangular)

// 使用多项式回归进行清晰断点回归
rdpoly outcome treatment degree(2), c(cutoff) bw(your_bandwidth)

// 稳健性检验:检查协变量的平衡性
// 计算断点两侧协变量的均值差异
summarize control_var1 if treatment == 0 & threshold_variable < cutoff
local mean_control_var1_control = r(mean)
summarize control_var1 if treatment == 1 & threshold_variable > cutoff
local mean_control_var1_treatment = r(mean)
display "Mean difference in control_var1 across the cutoff: " abs(`mean_control_var1_treatment' - `mean_control_var1_control')

// 进行平衡性检验,可以使用 t 检验或其他方法
ttest control_var1, by(treatment)

代码解释:

  • use "your_data.dta", clear:导入数据集并清除内存中的现有数据。
  • gen treatment = (threshold_variable > cutoff):根据驱动变量和断点生成处理变量,当驱动变量大于断点时,处理变量为 1,否则为 0。
  • gen outcome = your_outcome_variable:定义结果变量。
  • rdrobust outcome treatment, all:进行基本的清晰断点回归估计,all表示显示所有默认输出。
  • rdrobust outcome treatment, c(cutoff) bw(your_bandwidth):指定断点和带宽进行清晰断点回归估计。
  • gen instrument = (threshold_variable > cutoff):生成工具变量,用于模糊断点回归。
  • ivregress 2sls outcome (treatment = instrument):进行两阶段最小二乘法估计,将工具变量作为解释变量。
  • ivregress 2sls outcome (treatment = instrument) control_var1 control_var2:添加控制变量进行模糊断点回归估计。
  • ivregress 2sls outcome (treatment = instrument) if threshold_variable > cutoff_min & threshold_variable < cutoff_max:指定样本范围进行模糊断点回归估计。
  • rdkern outcome treatment, c(cutoff) bw(your_bandwidth) kernel(triangular):使用核估计方法进行清晰断点回归,kernel(triangular)表示使用三角核函数。
  • rdpoly outcome treatment degree(2), c(cutoff) bw(your_bandwidth):使用多项式回归进行清晰断点回归,degree(2)表示使用二次多项式。
  • summarize control_var1 if treatment == 0 & threshold_variable < cutoffsummarize control_var1 if treatment == 1 & threshold_variable > cutoff:分别计算断点两侧控制变量的均值。
  • local mean_control_var1_control = r(mean)local mean_control_var1_treatment = r(mean):将计算得到的均值存储在局部宏中。
  • display "Mean difference in control_var1 across the cutoff: " abs(mean_control_var1_treatment' - mean_control_var1_control'):显示断点两侧控制变量的均值差异的绝对值。
  • ttest control_var1, by(treatment):进行 t 检验,检查控制变量在处理组和控制组之间是否存在显著差异。

七、代码运行结果及解释

运行代码后,Stata 会输出一系列结果,包括估计的处理效应、标准误、置信区间等。

对于清晰断点回归:

  • rdrobust命令的输出结果类似于以下形式:

------------------------------------------------------------------------------
       |               Robust
 outcome |      Coef.   Std. Err.      z    P>|z|     [95% Conf. Interval]
---------+----------------------------------------------------------------
treatment |.5678907.1234567     4.59   0.000.3214568.8143246
------------------------------------------------------------------------------

这里,treatment的系数表示估计的处理效应,标准误为Std. Err.z值为系数除以标准误,P>|z|表示显著性水平,[95% Conf. Interval]表示 95% 置信区间。如果P>|z|小于某个显著性水平(通常为 0.05),则说明处理效应在统计上显著。

对于模糊断点回归:

  • ivregress 2sls命令的输出结果类似于以下形式:

Instrumental variables (2SLS) regression
      Source |       SS           df       MS      Number of obs   =    ...
-------------+----------------------------------   F(1,...)        =    ...
   Model |...          ...    ...           Residual |...          ...    ...   R-squared     =    ...
-------------+----------------------------------   Adj R-squared   =    ...
       Total |...          ...    ...           Root MSE      =    ...

------------------------------------------------------------------------------
       outcome |      Coef.   Std. Err.      z    P>|z|     [95% Conf. Interval]
-------------+----------------------------------------------------------------
   treatment |...     ...     ......       ...         ...
------------------------------------------------------------------------------

解释与清晰断点回归类似,通过系数、标准误、z值和P值等来判断处理效应的显著性。

【Stata学习】​断点回归的 Stata 命令及实例(含代码、结果及解析) (qq.com)icon-default.png?t=N7T8https://mp.weixin.qq.com/s?__biz=MzkwOTYxOTk1MA==&mid=2247484660&idx=1&sn=daf56b390463949e03281e878f21b6ec&chksm=c06d98c9240fa045740954260465b642322984f846594aee99a454f9d6ce9452bdeb19c7819e#rd

断点回归设计是一种用于研究在某个临界点或转折点处,自变量和因变量之间关系的统计方法。它可以帮助我们确定是否存在某个阈值,在该阈值之前和之后,自变量对因变量的影响是否存在差异。 在进行断点回归设计时,我们首先需要明确有关变量的设定。通常,我们将一个连续变量作为自变量,并假设在某个特定值处存在一个阈值。接下来,我们将自变量在这个阈值前后分为两个区间,并分别拟合两个线性回归模型。我们可以使用拟合优度、t检验、残差分析等方法来评估两个区间内的回归模型的拟合效果和统计显著性。 在Stata软件中,实现断点回归设计可以使用命令“reg”和“egen”。首先,我们需要使用“egen”命令根据阈值将连续变量分为两个区间。例如,可以使用以下命令将变量x分为小于等于阈值t的部分和大于阈值t的部分: ``` egen small_x = total(x <= t) egen large_x = total(x > t) ``` 然后,我们可以分别拟合两个区间内的线性回归模型,并进行统计分析。例如,使用以下命令进行拟合和分析: ``` reg y x if small_x == 1 predict yhat_s, xb reg y x if large_x == 1 predict yhat_l, xb local R2_s = e(r2) local R2_l = e(r2) ttest yhat_s == yhat_l ``` 上述命令先进行回归拟合,并使用“predict”命令获取拟合值。然后,我们分别计算两个区间的回归模型的R方值,并使用“ttest”命令进行拟合模型之间的显著性检验。 总之,断点回归设计可以帮助我们研究在某个临界点处的变量关系,并通过Stata软件的实现过程,我们可以对不同区间内的回归模型进行拟合和统计分析。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值