一文读懂断点回归分析设计(附动作建议+平滑性检验案例)
一文读懂断点回归分析设计
在过去的二十年里,人们对回归不连续性设计(RDD,断点回归分析设计)的兴趣日益浓厚。不过,它并不总是那么受欢迎。
这种方法可以追溯到大约六十年前的教育心理学家唐纳德坎贝尔Donald Campbell,他用它写了几项研究,从Thistlehwaite和Campbell(1960)开始。在一篇关于RDD思想史的精彩文章中,库克(2008)记录了它的社会演变。尽管坎贝尔为倡导其有用性并了解其特性做出了许多努力,但RDD除了一些博士生和一些论文之外并没有流行起来。
为了了解它的日益普及,让我们按年份查看Google学术搜索中提到“回归不连续设计”一词的论文数量(见图1)。Thistlehwaite和Campbell(1960)对使用他的设计的更广泛的学者群体没有影响,证实了库克(2008)所写的内容。RDD第一次出现在经济学界是一篇未发表的计量经济学论文(Goldberger 1972)。从1976年开始,RDD终于首次获得了两位数的年使用量,之后它开始缓慢上升。但在大多数情况下,采用速度非常缓慢。
图1.. 随时间推移的回归不连续性
但从1999年开始,情况发生了变化。就在这一年,著名的(Quarterly Journal of Economics)上的几篇著名论文复活了这种方法。
这些论文是Angrist和Lavy(1999)和Black(1999),两年后是Hahn,Todd和Klaauw(2001)。
Angrist和Lavy(1999)研究了班级规模对学生成绩的影响,使用了以色列公立学校的一个不寻常的特征,当学生人数超过特定阈值时,该特征会创建较小的班级。*
布莱克(1999)使用了一种RDD方法,创造性地利用学区分区造成的地理层面的不连续性来估计人们为更好的学校付费的意愿。1999年标志着该设计广泛采用的分水岭。
Lee和Lemieux在2010年发表在《经济文献杂志》上的一篇文章在一年内被引用了近4,000次,有近1,500篇新论文提到了这种方法。到2019年,RDD产量将超过5,600。该设计今天非常受欢迎,并且没有放缓的迹象。
但是,从1972年到1999年是一段很长的时间,现在被认为是具有观测数据的最可信的研究设计之一。
RDD之所以对许多人如此有吸引力,是因为它能够令人信服地消除选择偏差。
这种吸引力部分是由于许多人认为其潜在的识别假设更容易接受和评估。使选择偏倚无能为力,该程序能够恢复给定单位的平均处理效果。该方法基于一个简单直观的思想。
我们利用我们对处理选择的知识来估计平均处理效果。因为我们知道处理分配的概率在C0,那么我们的工作就是比较C0上下的人,估计一种称为局部平均治疗效果或LATE的特定平均治疗效果(Guideo W. Imbens and Angrist 1994)。
因为我们没有重叠或“共同支持”,所以我们必须依靠外推法,这意味着我们正在比较运行变量不同值的单位。它们仅在限制中重叠为X从任一方向接近截止点。用于RDD的所有方法都是尽可能干净地处理外推偏差的方法。
断点回归分析设计系列检验
结果变量与配置变量图
可以进行图形分析--分配变量与结果变量,主要检查分配变量与结果变量存在断点
系列检验包括
首先检验分配变量是否满足连续性
然后检查其他控制变量是否存在断点需要满足连续性
最后进行证伪检验一虚伪的断点检验。
内生分组检验
控制变量检验
RDD 有效的第二个条件是其余控制变量不能够在截断点附近存在明显的断点, 否则无法判断断点的产生究竟是由于断点的原因导致的,还是由其他控制变量的因 果 关系所导致。对此,我们对其余控制变量在临界点附近的连续性进行检验
断点回归操作动作建议
在进行断点回归(RD)设计时,一般有如下步骤:
1、参考变量分布连续性检验/检验内生分组
这里检验内生分组,即主要检验配置变量,其实就是RD中个体是否将自行进入断点两侧,决定是否进入实验的,并是否存在某种跳跃性的变化。如果存在内生分组,个体将自行进入实验,导致在断点两侧的分布不均匀,这样分组变量x的密度函数f(x)在x=c处不连续,出现左右极限不相等的情况。
McCrary(2008)提出了一种核密度函数的检验方法(命令是DCdensity,介绍见下述操作),将参考变量划分成不同的区间并计算各区间中的个体数量,如果个体能够操纵参考变量,我们将能观测到断点左右个体数量有较大差别,比如很多个体通过操纵到了断点的右侧,那么,在断点右侧的区间中个体数量可能将大大超过断点左侧区间中个体的数量,利用带宽选择和曲线拟合方法, 可以检验在断点处c是否存在跳跃 。
2、检查为精确断点回归还是模糊断点回归分析
检验处理变量是否完全由“某连续变量是否超过某一断点”所决定,如果个体被处理的概率从0跳跃为1,即为精确断点回归,如果个体被处理的概率从 a跳跃为 b,0<a<b<1,则为模糊断点回归。
3、图形分析
画出结果变量与参考变量之间的关系图,如果是模糊断点,再画出原因变量与参考变量的关系图,呈现结果变量和原因变量在断点处行为,为断点回归设计提供理论支撑。
4、检验结果对不同带宽、不同多项式次数的稳健性
设置不同带宽,通过选择最优带宽,再检验并选择相对应的模型。stata断点回归命令有相关的操作选项。另外还有图形选择(在最优带宽处画线),可以考虑加协变量进行选择。
5、检验其他影响结果变量的因素(协变量),在断点处是否存在跳跃
检验协变量在断点处是否存在跳跃,若是存在跳跃,说明该协变量的条件密度函数在断点处不是连续的,需要剔除。若将存在跳跃的协变量剔除。则需要重新选择最优带宽再重新进行断点回归分析。
5、显著性检验
模型估计完成后,可以进行下列模型设定检验,以判断估计结果的稳健性(见赵西亮编著的《基本有用的计量经济学》)
(1)协变量连续性检验,也称为伪结果检验( pseudo outcome)。以协变量 作为伪结果,利用与前面相同的方法,检验相应的RDD估计量是否显著,如果 显著说明这些协变量不符合连续性假设,上文的RDD估计量可能存在问题。
(2)参考变量分布连续性检验,如果参考变量分布连续,意味着在断点处个体没有精确操纵参考变量的能力,局部随机化假设成立,从而保证断点附近左右样本能够代表断点处的总体。(此处与检验内生分组一致)
(3)伪断点检验( pseudo cutoff point)。在参考变量的其他位置,比如断点 左右两侧中点位置作为伪断点,利用同样的方法估计RDD估计量,我们知道在 伪断点干预效应为零,如果发现伪断点的RDD估计量不为零,则说明我们的RDD设计可能有问题,可能混杂了其他未观测因素的影响,得到的因果效应可能是由其他未观测混杂的跳跃造成的,而不完全是干预的影响
(4)带宽选择的敏感性检验。选择不同的带宽对RDD估计量进行重新估 计,检验估计结果是否有较大的变量,如果差异较大,尤其是影响方向有变化说明RDD设计可能有问题。
上述显著性检验其实在前面进行分析时候已经部分有所提及需要进行检验的。
断点回归设计前提条件检验:检验内生分组
在进行断点回归(RD)设计时,样本数据需要满足一定的前提条件,比如,断点两侧除断点(Cutoff)处理效应外,其他因素需保持平衡(滑)以及不存在Selective Sorting。
而断点回归的前提假设:Wi的条件密度在X=c0处连续。另外进行断点分析前,需要首先考察变量分组变量是否有内生分组的存在,意思就是样本个体事先知道分组原则等信息,然后通过自身选择来选择是否进入处理组,这样的内生分组将导致断点回归失效。
本文提供一种基于断点两侧样本分布密度来进行检验的方法:McCrary(2008)。它主要通过考察分布变量的密度函数在断点处是否连续进而实现检验样本是否存在选择性偏误,主要分为两步检验:第一步,将分组变量在断点处两侧尽量等距离细分,并计算每组的标准化频率;第二步,使用三角核估计进行局部线性回归,并计算密度函数估计值,然后检验密度函数在断点c处是否连续。
McCrary(2008)可以通过非官方命令DCdensity来实现,其中DC表示Discontinuity,可以来检验分组变量的密度函数在断点处是否连续。依此判断,是否存在内生分组问题。
该命令的下载地址为:https://eml.berkeley.edu/~jmccrary/DCdensity/
断点回归平滑性检验
在进行断点回归(RD)设计时,一般需要检验参考变量分布连续性检验/检验内生分组
这里检验内生分组,即主要检验配置变量,其实就是RD中个体是否将自行进入断点两侧,决定是否进入实验的,并是否存在某种跳跃性的变化。如果存在内生分组,个体将自行进入实验,导致在断点两侧的分布不均匀,这样分组变量x的密度函数f(x)在x=c处不连续,出现左右极限不相等的情况。
McCrary(2008)提出了一种核密度函数的检验方法(命令是DCdensity,介绍见下述操作),将参考变量划分成不同的区间并计算各区间中的个体数量,如果个体能够操纵参考变量,我们将能观测到断点左右个体数量有较大差别,比如很多个体通过操纵到了断点的右侧,那么,在断点右侧的区间中个体数量可能将大大超过断点左侧区间中个体的数量,利用带宽选择和曲线拟合方法, 可以检验在断点处c是否存在跳跃 。
案例数据
Cattaneo, Frandsen和Titiunik构建的数据集(2015),其中包括1914-2010年期间美国参议院在任优势的衡量。
该数据包含以下两个变量的1390个观察值的数据框架。
其包含两个变量vote和margin,vote表示某次选举民主党在州参议院的席位占比,margin表示上次选举中获得相同参议院席位的边际收益,其中大于0表示民主党胜出,反之则为失败。
将vote作为被解释变量,margin作为解释变量,即可研究民主党赢得参议院席位对于在下次选举中获得相同席位的影响。
1、绘图
可以直接使用histogram命令来绘制配置变量的连续性直方图
use "E:\stata\data\rdrobust_rdsenate.dta"
. ed
. desc
Contains data from E:\stata\data\rdrobust_rdsenate.dta
Observations: 1,390
Variables: 2 28 Nov 2012 11:45
-------------------------------------------------------------------------------------------------------------------------------------
Variable Storage Display Value
name type format label Variable label
-------------------------------------------------------------------------------------------------------------------------------------
margin float %9.0g Democratic margin of victory at t (previous election for same seat)
vote float %9.0g Democratic vote share at t+2
-------------------------------------------------------------------------------------------------------------------------------------
Sorted by:
. histogram margin , lcolor ( brown ) fcolor ( gs16 ) title ( "Senate_selection" ) xtitle ( "margin" )
(bin=31, start=-100, width=6.4516129)
.
用图形来观测断点处频数的变化和断点两侧的一个变化情况,它的一个优点是简单直观,缺点是由于在不同组间距中间的样本数量不同,因此是很难直观上观测连续性相关的一个属性。
结果为:
通过这个代码我们可以看见分配变量,也就是在临界点处连续性,临界值两侧没有明显的波动,说明分配变量的密度函数的满足连续性
2、麦克拉瑞检验
McCrary(2008)可以通过非官方命令DCdensity来实现,其中DC表示Discontinuity,可以来检验分组变量的密度函数在断点处是否连续。依此判断,是否存在内生分组问题。
该命令的下载地址为:https://eml.berkeley.edu/~jmccrary/DCdensity/
然后将该命令的DCdensity.ado下载安装或者复制到C:\ado\plus,Mac系统的需要自己sysdir查询外部命令安装路径,自行复制下载。命令语法格式为:
DCdensity assign_var,breakpoint(#) generate(Xj Yj r0 fhat se_fhat) graphname(filename)
其中,assign_var 为分组变量,必选项breakpoint(#)用来指定断点位置,generate(Xj Yj r0 fhat se_fhat)用来指定输出变量名,graphname用来命名指定密度函数图。
代码为:
DCdensity margin , breakpoint ( 0 ) gen ( Xj Yj r0 fhat se_fhat )
结果为
. DCdensity margin , breakpoint ( 0 ) gen ( Xj Yj r0 fhat se_fhat )
Using default bin size calculation, bin size = 1.84133021
Using default bandwidth calculation, bandwidth = 25.8493835
Discontinuity estimate (log difference in height): -.100745626
(.117145041)
Performing LLR smoothing.
110 iterations will be performed
...........
可以看出断点两侧密度函数估计值的置信区间有很大部分重叠,所以断点两侧的密度函数不存在显著差异,检验结果为不存在内生分组,可以继续进行断点回归分析。
3、 rdcont 命令
rdcont语法格式为:
rdcont running_var [if] [in], [options]
选项含义为:
options Description
--------------------------------------------------------------------------
Options
alpha(real) specifies critical value for calculation of
optimal bandwidth
threshold(real) specifies cutoff value for the test
qobs(real) specifies # of observations closest to cutoff
------------------------------------------------------------------------
具体表示为:alpha(real) 指定计算最优带宽的临界值 Threshold (real)指定测试的截止值 qobs(real)指定最接近截止点的观测值
案例代码为:
clear
set more off
capture log close
//cd "..." //Change to working directory
log using "rdcont_example.smcl", replace
********************************************************************************
//Bugni & Canay (2019) RDD Continuity test on Lee(2008)
********************************************************************************
use table_two_final.dta, clear //Loading data
capture program drop rdcont //Installing rdcont program
//Approximate Sign-Test | Bugni & Canay
rdcont difdemshare if use==1
return list
log off
使用上述案例数据进行操作的代码为:
rdcont margin , threshold ( 0 )
结果为
rdcont margin , threshold ( 0 )
RDD non-randomized approximate sign test
Running variable: margin
Cutoff c = 0 | Left of c Right of c Number of obs = 1390
-------------------+---------------------- q = 67
Number of obs | 640 750
Eff. number of obs | 30 37
Eff. neighborhood | -1.347 1.329
-------------------+----------------------
p-value | 0.464
断点回归在指定测试的临界值0处的P值为0.464,不能拒绝原假设,说明所以断点两侧的密度函数不存在显著差异,是连续的。
4、rddensity命令
语法格式为:
rddensity var [if] [in] [, c(#) p(#) q(#) kernel(kernelfn)
fitselect(fitmethod) hl(#) hr(#) hscale(#) bwselect(bwmethod)
vce(vcemethod) all ]
操作1、使用默认选项进行操作Manipulation test using default options:
rddensity margin
use "E:\stata\data\rdrobust_rdsenate.dta"
. rddensity margin
Computing data-driven bandwidth selectors.
RD Manipulation Test using local polynomial density estimation.
Cutoff c = 0.000 | Left of c Right of c Number of obs = 1390
----------------------+---------------------- Model = unrestricted
Number of obs | 640 750 BW method = comb
Eff. Number of obs | 408 460 Kernel = triangular
Order loc. poly. (p) | 2 2 VCE method = jackknife
Order BC (q) | 3 3
Bandwidths (hl,hr) | estimated estimated
Bandwidth values | 19.841 27.119
Running variable: margin.
---------------------------------------------
Method | T P>|T|
----------------------+----------------------
Robust Bias-Corrected | -0.8753 0.3814
---------------------------------------------
由于上述稳健的偏差校正(bias-corrected )统计量 取值为-0.8753 ,而其对应的概率值为0.3814。因此接受原假设,认为断点两侧密度函数满足连续性。不存在内生分组问题。
操作2、Manipulation test using all three method available:
. rddensity margin, all
结果为
. rddensity margin, all
Computing data-driven bandwidth selectors.
RD Manipulation Test using local polynomial density estimation.
Cutoff c = 0.000 | Left of c Right of c Number of obs = 1390
----------------------+---------------------- Model = unrestricted
Number of obs | 640 750 BW method = comb
Eff. Number of obs | 408 460 Kernel = triangular
Order loc. poly. (p) | 2 2 VCE method = jackknife
Order BC (q) | 3 3
Bandwidths (hl,hr) | estimated estimated
Bandwidth values | 19.841 27.119
Bandwidth scales | 0.500 0.500
Running variable: margin.
---------------------------------------------
Method | T P>|T|
----------------------+----------------------
Conventional | -1.6506 0.0988
Undersmoothed | -0.8944 0.3711
Robust Bias-Corrected | -0.8753 0.3814
---------------------------------------------