R:断点回归分析设计
计量经济学服务中心专辑汇总!计量百科·资源·干货:
Stata |Python |Matlab |Eviews |R Geoda |ArcGis |GeodaSpace |SPSS 一文读懂 |数据资源 |回归方法 |网络爬虫 门限回归 |工具变量 |内生性 |空间计量 因果推断 |合成控制法 |倾向匹配得分 |断点回归 |双重差分 面板数据 | 动态面板数据
断点回归的基本命令是rd,另外,还有一些其他命令,例如rdrobust、rdlocrand、rddensity等等。本文主要介绍R语言中的rdrobust。
rdrobust有两个配套命令:rdbwselect用于带宽选择,rdplot用于RD绘图(详细信息请参见Calonico、Cattaneo和Titiunik [2015a])。
1、rdbwselect
下载安装方法为:
install.packages('rdrobust')
library(rdrobust)
rdrobust语法格式为:
rdbwselect(y, x, c = NULL, fuzzy = NULL, deriv = NULL, p = NULL, q = NULL, covs = NULL, covs_drop = TRUE, kernel = 'tri', weights = NULL, bwselect = 'mserd', vce = 'nn', cluster = NULL, nnmatch = 3, scaleregul = 1, sharpbw = FALSE, all = NULL, subset = NULL, masspoints = 'adjust', bwcheck = NULL, bwrestrict = TRUE, stdvars = FALSE)
选项含义为:
y表示因变量。
x表示驱动变量(又称使动变量)。
c指定RD中断点位置;默认值是c = 0。
fuzzy指定用于实现模糊RD估计的处理状态变量,默认是Sharp RD设计,因此不使用此选项。
cov表示指定用于估计和推断的附加协变量。
kernel是用来构造局部多项式估计器的核函数。选项有三角形(默认选项)、epanechnikov和uniform。
weights是用于估计过程的可选加权的变量。单位权重乘以核函数。
bwselect指定要使用的带宽选择过程。
2、rdrobust
语法含义为:
rdrobust(y, x, c = NULL, fuzzy = NULL,
deriv = NULL, p = NULL, q = NULL,
h = NULL, b = NULL, rho = NULL, covs = NULL, covs_drop = TRUE,
kernel = 'tri', weights = NULL, bwselect = 'mserd',
vce = 'nn', cluster = NULL,
nnmatch = 3, level = 95, scalepar = 1, scaleregul = 1,
sharpbw = FALSE, all = NULL, subset = NULL,
masspoints = 'adjust', bwcheck = NULL,
bwrestrict = TRUE, stdvars = FALSE)
选项含义为:
y表示因变量。
x表示驱动变量(又称使动变量)。
c指定RD中断点位置;默认值是c = 0。
fuzzy指定用于实现模糊RD估计的处理状态变量,默认是Sharp RD设计,因此不使用此选项。
covs表示指定用于估计和推断的附加协变量。
p指定用于构造点估计器的局部多项式的阶数;默认值是p = 1(本地线性回归)。
q指定用于构造偏差校正的局部多项式的顺序;默认值是q = 2(局部二次回归)。
h指定用于构造RD点估计器的主要带宽。如果没有指定,带宽h将由同伴命令rdbwselect计算。如果指定了两个带宽,第一个带宽用于低于截止值的数据,第二个带宽用于高于截止值的数据。
b指定用于构造偏差校正估计器的偏差带宽。如果没有指定,带宽b将由同伴命令rdbwselect计算。如果指定了两个带宽,第一个带宽用于低于截止值的数据,第二个带宽用于高于截止值的数据。
3、rdplot
语法含义为
rdplot(y, x, c = 0, p = 4, nbins = NULL, binselect = 'esmv', scale = NULL, kernel = 'uni', weights = NULL, h = NULL, covs = NULL, covs_eval = 0, covs_drop = TRUE, support = NULL, subset = NULL, hide = FALSE, ci = NULL, shade = FALSE, title = NULL, x.label = NULL, y.label = NULL, x.lim = NULL, y.lim = NULL, col.dots = NULL, col.lines = NULL)
选项含义为
rdplot函数可用于RD结果的可视化,其语法与rdrobust或者rdrobust相同
y表示因变量。
x表示驱动变量(又称使动变量)。
c指定RD中断点位置;默认值是c = 0。
p指定用于近似控制单元和处理单元的总体条件平均函数的全局多项式的阶数;默认值是p = 4。
binselect指定选择容器数量的过程。
4、案例
rdrobust采用Calonico, Cattaneo和Titiunik (2014a)、Calonico, Cattaneo和Farrell(2018)、Calonico, Cattaneo, Farrell和Titiunik(2019)和Calonico, Cattaneo和Farrell(2020)开发的鲁棒偏差校正置信区间和推理程序,实现了局部多项式回归不连续(RD)点估计。它还计算可供选择的估计和推理程序,在文献中。
配套命令有:rdbwselect用于数据驱动带宽选择,rdplot用于数据驱动RD图(详见Calonico, Cattaneo and Titiunik (2015a))。
这个命令的详细介绍在Calonico, Cattaneo和Titiunik (2015b)和Calonico, Cattaneo, Farrell和Titiunik(2017)中给出。配套的Stata包在Calonico, Cattaneo和Titiunik (2014b)中有描述。
有关更多细节,以及用于分析RD设计的相关Stata和R包,请访问https://sites.google.com/site/rdpackages/
Cattaneo, Frandsen和Titiunik构建的数据集(2015),其中包括1914-2010年期间美国参议院在任优势的衡量。
该数据包含以下两个变量的1390个观察值的数据框架。
其包含两个变量vote和margin,vote表示某次选举民主党在州参议院的席位占比,margin表示上次选举中获得相同参议院席位的边际收益,其中大于0表示民主党胜出,反之则为失败。
将vote作为被解释变量,margin作为解释变量,即可研究民主党赢得参议院席位对于在下次选举中获得相同席位的影响。具体操作代码如下
4.1导入数据
data(rdrobust_RDsenate)
4.2最优带宽
rdbwselect(y = rdrobust_RDsenate$vote, x = rdrobust_RDsenate$margin, all = TRUE) summary()
结果为:
> rdbwselect(y = rdrobust_RDsenate$vote, x = rdrobust_RDsenate$margin, all = TRUE)
Call: rdbwselect
Number of Obs. 1297
BW type All
Kernel Triangular
VCE method NN
Number of Obs. 595 702
Order est. (p) 1 1
Order bias (q) 2 2
Unique Obs. 595 665
=======================================================
BW est. (h) BW bias (b)
Left of c Right of c Left of c Right of c
=======================================================
mserd 17.754 17.754 28.028 28.028
msetwo 16.170 18.126 27.104 29.344
msesum 18.365 18.365 31.319 31.319
msecomb1 17.754 17.754 28.028 28.028
msecomb2 17.754 18.126 28.028 29.344
cerrd 12.407 12.407 28.028 28.028
certwo 11.299 12.667 27.104 29.344
cersum 12.834 12.834 31.319 31.319
cercomb1 12.407 12.407 28.028 28.028
cercomb2 12.407 12.667 28.028 29.344
=======================================================
4.3 参数估计
rdrobust(y = rdrobust_RDsenate$vote, x = rdrobust_RDsenate$margin) %>% summary()
Call: rdrobust
Number of Obs. 1297BW type mserdKernel TriangularVCE method NN
Number of Obs. 595 702Eff. Number of Obs. 360 323Order est. (p) 1 1Order bias (q) 2 2BW est. (h) 17.754 17.754BW bias (b) 28.028 28.028rho (h/b) 0.633 0.633Unique Obs. 595 665
============================================================================= Method Coef. Std. Err. z P>|z| [ 95% C.I. ] ============================================================================= Conventional 7.414 1.459 5.083 0.000 [4.555 , 10.273] Bias-Corrected 7.507 1.459 5.146 0.000 [4.647 , 10.366] Robust 7.507 1.741 4.311 0.000 [4.094 , 10.919] =============================================================================
4.4 绘图
rdplot(rdrobust_RDsenate$vote, rdrobust_RDsenate$margin, p = 3, x.label = 'Margin', y.label = 'Vote')