断点回归(regression discontinuity design)学习笔记

您所在的位置:网站首页 分组回归什么意思 断点回归(regression discontinuity design)学习笔记

断点回归(regression discontinuity design)学习笔记

2024-02-02 07:03| 来源: 网络整理| 查看: 265

本篇博文主要是对断点回归的一些学习和总结~ 学习材料如下: 1 断点回归设计RDD分类与操作案例 2 RDD断点回归, Stata程序百科全书式的宝典 3 断点回归设计的前沿研究现状, RDD 4 让“跳跃”更有意义:断点回归设计(RDD) 5 连玉君老师教程: Stata: 断点回归 (RDD) 教程 6 怎么用通俗的语言解释断点回归?它与DID的区别是什么 7 Watering Down Environmental Regulation in China,Guojun He, Shaoda Wang, Bing Zhang,The Quarterly Journal of Economics, Volume 135, Issue 4, November 2020, Pages 2135–2185,

重点推荐学习材料1 3 5 7,7是一篇2020年在QJE发表的一篇论文,个人认为这篇论文思路很清楚,内容很丰富,值得学习!

断点回归学习笔记 1 断点回归介绍1.1 断点回归的产生1.2 断点回归的模型设计1.2.1 精确断点回归设计(SRD)1.2.2 模糊断点回归设计 (FRD) 1.3 断点回归估计思路和方法1.4 RDD与DID的区别 2 断点回归过程2.1 回归语法2.2 回归常用过程2.2.1 图形观察处理变量在断点c处是否存在跳跃2.2.2 平均处理效应估计2.2.3 检验控制变量(协变量)在断点处不存在跳跃2.2.4 检验处理变量D和结果变量Y在断点以外的其他点不存在跳跃2.2.5 检验分组变量在断点处的概率密度函数是连续的2.2.6 样本及带宽选择检验 3 论文学习3.1 论文摘要3.2 论文研究思路3.3 论文思路的代码实现

1 断点回归介绍 1.1 断点回归的产生

因果分析与政策效应评估是经济分析最为关注的核心问题,然而我们运用计量模型进行因果分析的总是囿于在于模型的内生性问题。

常用的解决原理是借助准自然实验 (quasiexperiment) 的思想评估不同政策的处理效应, 试图获得一致 (consistent) 或者无偏 (unbiased) 估计量。

进而发展出的方法有 工具变量 (Instrumental variables) 、匹配和加权估计法 (matching and reweighting) 、倍差法 (difference-in-difference) 和断点回归设计 (regression discontinuity design)。

对于断点回归(RDD),和其他方法相比, 学术界普遍认为运用断点回归设计更接近准自然实验, 估计的结果更加准确,原因在于其设计思想。

设计思想:其基本思想是存在一个连续变量, 该变量能决定个体在某一临界点两侧接受政策干预的概率, 由于X在该临界点两侧是连续的, 因此个体针对X的取值落入该临界点任意一侧是随机发生的, 即不存在人为操控使得个体落入某一侧的概率更大, 则在临界值附近构成了一个准自然实验。

**举例1:**在一条河流随机设置一个水质监测点,设置水质监测点10公里范围内的以上为上游,以下为下游。可以以RDD研究在水质监测点的上下游对企业绩效的影响。因为在10公里范围内,可以默认为企业的其他因素相似(当然也会控制一些固定效应)

**举例2:**一本线附近,刚刚考上和差一点考上可以设计RDD模型来研究考上一本对未来收入的影响。因为在分数范围内,可以默认为考生的其他方面相似(当然也会控制一些特征)

由此, 近年来越来越多的实证文献依赖断点回归设计进行政策效应评估。

1.2 断点回归的模型设计

断点回归的基本思想是基于连续变量x随机划定组别,因而我们一般将该==连续变量X称为分组变量 (assignment variable) ==。

按照在断点处个体得到处理效应概率的变化特征可以分为两种类型:一种类型是精确断点回归设计 (sharp regression discontinuity design, 以下简称SRD) , 和模糊断点回归设计 (fuzzy regression discontinuity, 以下简称FRD) 。

精确断点回归设计(SRD):特征是在断点 (也就是上面所说的临界点) X=c处, 个体接受政策干预的概率从0跳跃到1;糊断点回归设计(FRD):在断点X=c处, 个体接受政策干预的概率从a变为b, 其中a≠b。 下面具体解释 1.2.1 精确断点回归设计(SRD)

来自 断点回归设计RDD分类与操作案例 (1)举例引入 考察上大学对工资收入的影响。假设上大学与否(Di)完全取决于由高考成绩xi是否超过500分: 在这里插入图片描述 (1)Di 是 关于 x的确定函数,与其他无关,独立于工资收入。 (2)无法采用PSM+DID,因为重叠假定不满足,所有处理组都大于500分,所有控制组都小于500分。 (3)对于高考成绩为498,499,500,或501的考生,可以认为他们在各 方面(包括可观测变量和不可观测变量)都没有系统差异。 (4)他们高考成绩的细微差异只是由于“上帝之手”随机抽样的结果,导致成绩为500或501的考生上大学(进入处理组),而成绩为498或499的考生落榜(进入控制组)。 (5)因此,由于制度原因,仿佛对高考成绩在小领域500-s,500+s]之间的考生进行了随机分组,故可视为准实验( quasi experiment)。 (6)由此,由于存在随机分组,故可一致地估计在x=500附近的局部平均处理效应(Local Average Treatment Effect,LATE) 在这里插入图片描述 (2)模型设计 一般地, 假设断点为某常数c,而分组规则为: 在这里插入图片描述 假设在实验之前,结果变量y与x之间存在如下线性关系: . 在这里插入图片描述 假设处理效应为正,则y; 与x之间的线性关系在x=c处就存在一个向上跳 跃(jump)的断点。 在这里插入图片描述 但通常为了估计跳跃点的小于,我们会减去c 在这里插入图片描述 由此,断点回归可视为“局部随机试验”(Local randomized experiment);可通过考察协变量在断点两侧的分布是否有差异来检验随机性。

注意:但断点回归仅推断在断点处的因果关系,不能推广到其他样本值,故外部有效性受局限。

存在问题: 1)使用方程(1)估计精确断点回归,存在两个问题: ➢ 如果回归函数包含高次项,比如二次项(x-c)2, 则会导致遗漏偏差。 ➢ 既然断点回归是局部的随机实验,则原则上只应使用断点附近的观测 值,但方程(1)却使用了整个样本。 2)存在内生分组危险。如果个体知道分组规则,可能会通过自身努力而完全控制分组变量。因而,我们常用的解决方法是在断点处观察x的分布是否均匀。除此,也可检验协变量的连续分布。

常用汇报操作 1)分别汇报三角核和矩形核的局部线性回归结果(后者等价于线性参数回归 2)分别汇报使用不同带宽的结果(比如,最优带宽及其二分之一或两倍带宽) 3)分别汇报包含协变量与不包含协变量的情形 4)进行模型设定检验,包括检验分组变量与协变量的条件密度是否在断点处连续

1.2.2 模糊断点回归设计 (FRD)

模糊断点回归的特征是,在断点x=c处,个体得到处理的概率从a跳跃到b,其中0 local hrobust=`h'*0.25*`i' rdrobust y1 xc ,h(`hrobust') estimates store hrob`i' } //输出图形 local vlist "hrob1 hrob2 hrob3 hrob4 hrob5 hrob6 hrob7 hrob8 " coefplot `vlist' , yline(0) drop(_cons) vertical ************************** * 样本选择的敏感性检验 ************************** /* 1 由于越接近断点的样本,越有动机去人为操控,我们删除最接近断点的样本,来观察回归是否显著(甜甜圈效应, donut hole approach ) 2 如果仍旧存在,说明即使存在人为操控,断点效应仍旧存在 3 分别删除了断点附近 5%,10%,15%,25% 和 30% 的样本,进行了 6 组稳健性检验。图形给出了回归系数和 95% 的置信区间 4 在删除 20% 及以下时,回归结果都保持显著 */ use "RDD_simu_data0.dta", clear sum xc local xcmax=r(max) //1 forvalues i=1(1)6{ local j=`xcmax'*0.05*`i' rdrobust y1 xc if abs(xc)>`j' estimates store obrob`i' } //输出图形 local vlist "obrob1 obrob2 obrob3 obrob4 obrob5 obrob6 " coefplot `vlist' , yline(0) drop(_cons) vertical 3 论文学习

Watering Down Environmental Regulation in China,Guojun He, Shaoda Wang, Bing Zhang,The Quarterly Journal of Economics, Volume 135, Issue 4, November 2020, Pages 2135–2185 是一篇很经典的RDD检验论文,而且作者研究设计和想法都很新颖,强烈推介阅读学习。

3.1 论文摘要

本文基于中国地表水监测系统利用断点回归设计估计了环境规制对企业生产率的影响。水质监测数据对于上级政府评价地方官员至关重要,并且水质监测站只能监测来自上游的排放,地方政府有更强的激励对那些刚好处在监测站上游的企业实施更加严格的排放控制政策。利用这一断点,作者发现处在上游的企业的TFP平均比下游企业低了 27 % 。 基于此估计测算,中国水污染减排计划(2016-2020)将会导致10,000亿元的工业产值损失。

3.2 论文研究思路

在这里插入图片描述

3.3 论文思路的代码实现

论文数据及代码,作者都提供了!!

************************** Figure 4 RD on TFP ***************************** use "tfp_small_QJE_final.dta",clear // resid1_tfpop_s 是 Station FE + industry FE absorbed 的TFP GAP winsor2 resid1_tfpop_s , replace cuts(0.5 99.5) trim /* 1 绘制了对数TFP(吸收站固定效应和行业固定效应)对“到相应监视站的距离”的图。 2 每个点代表距离范围内公司的平均对数TFP;还显示了它们的90%置信区间。 3 拟合曲线覆盖在图形上,以说明监测站周围的不连续性。 */ **污染行业 preserve rdplot resid1_tfpop_s distance_new if neg_ind0==1 & abs(distance_new) rdrobust `y' distance_new if neg_ind0==1, kernel(`kvar') all vce(cluster site_id) outreg2 using $result/T2_localRD, excel addtext(Kernel Type, `e(kernel)') addstat(bandwidth, e(h_l)) ctitle(`y'_p) dec(2) append } } local kernelfn "tri epa uni" foreach y of var tfpop_s resid1_tfpop_s resid2_tfpop_s { foreach kvar of local kernelfn { rdrobust `y' distance_new if neg_ind0==0, kernel(`kvar') all vce(cluster site_id) outreg2 using $result/T2_localRD, excel addtext(Kernel Type, `e(kernel)') addstat(bandwidth, e(h_l)) ctitle(`y'_np) dec(2) append } } **Insert Table xmluse $result/T2_localRD.xml, doctype(excel) sheet(Sheet1) cells(A2:FZ100) allstring missing nocompress clear export excel using $result/Tables_TFP.xlsx, sheet("T2_localRD", replace) ************************** Figure 5 .Estimates by Year***************************** use "graph_by_year",clear replace b_lower = b-1.83*std_err // 90的置信区间 replace b_upper = b+1.83*std_err keep if group ==1 // 保留污染行业 twoway (rspike b_upper b_lower year, lp(dash) lc(red)) /// (scatter b year, sort mc(red)) /// (line zero year , sort) , ylabel(-0.8(.4)1.2, labsize(*1)) xlabel(2000(1)2007) /// xline(2002.5, lp(dash_dot)) xline(2005.5, lp(dash)) /// text(1.15 2001 "Scientific Outlook of Development", place(se) box just(left) margin(l+2 t+1 b+1) width(53) bcolor(bluishgray)) /// text(-0.45 2004.5 "11th 5-Year Plan", place(se) box just(left) margin(l+2 t+1 b+1) width(28) bcolor(bluishgray)) /// ytitle("Estimated TFP Effect" " ") title("") yline(0) xtitle("Year") /// legend(order(2 "Estimated Coefficient" 1 "90% CI") pos(6) size(small) symx(medium)) scheme(plotplainblind) graph save $figure/F5_by_year, replace graph export $figure/F5_by_year.png, replace

在这里插入图片描述

************************** Table 2. Within Firm RD ***************************** use "T2_MDRD.dta", clear *****Install MDRD package net describe mdrd, from(https://sites.google.com/site/r4ribas/codes/packages) net install mdrd, force from(https://sites.google.com/site/r4ribas/codes/packages) ****Polluting industries cap erase $result/DID_tfp_p.xml cap erase $result/DID_tfp_p.txt mdrd resid2_tfpop_s distance_new if neg_ind0==1, time(post03) all kernel(tri) outreg2 using $result/DID_tfp_p, excel addtext(Kernel Type, `e(kernel)') ctitle(p_tfp) dec(2) append mdrd resid2_tfpop_s distance_new if neg_ind0==1, time(post03) all kernel(epa) outreg2 using $result/DID_tfp_p, excel addtext(Kernel Type, `e(kernel)') ctitle(p_tfp) dec(2) append mdrd resid2_tfpop_s distance_new if neg_ind0==1, time(post03) all kernel(uni) outreg2 using $result/DID_tfp_p, excel addtext(Kernel Type, `e(kernel)') ctitle(p_tfp) dec(2) append ****Non-Polluting industries cap erase $result/DID_tfp_np.xml cap erase $result/DID_tfp_np.txt mdrd resid2_tfpop_s distance_new if neg_ind0==0, time(post03) all kernel(tri) outreg2 using $result/DID_tfp_np, excel addtext(Kernel Type, `e(kernel)') ctitle(np_tfp) dec(2) append mdrd resid2_tfpop_s distance_new if neg_ind0==0, time(post03) all kernel(epa) outreg2 using $result/DID_tfp_np, excel addtext(Kernel Type, `e(kernel)') ctitle(np_tfp) dec(2) append mdrd resid2_tfpop_s distance_new if neg_ind0==0, time(post03) all kernel(uni) outreg2 using $result/DID_tfp_np, excel addtext(Kernel Type, `e(kernel)') ctitle(np_tfp) dec(2) append ************************** Table 3. THE UPSTREAM–DOWNSTREAM GAP IN INPUT AND OUTPUT LEVELS ***************************** *********** Post-2003 Results *********** use "channels_QJE_final.dta", clear *** Create Table *** cap erase $result/TS_Channel.txt cap erase $result/TS_Channel.xml /* Panel A: Output levels (downstream minus upstream) RD in profit (10k RMB) RD in value-added (log) Panel B: Input levels (downstream minus upstream) RD in # of employees (log) RD in capital stock (log) RD in intermediate input (log) Panel C: Single factor productivity (downstream minus upstream) RD in (VA/employee) (log) RD in (VA/capital stock) (log) */ foreach y of var resid1_lrze resid1_lnv resid1_lnl resid1_lnk resid1_lnm resid1_lnv_l resid1_lnv_k{ rdrobust `y' distance_new if neg_ind0==1, kernel(tri) all vce(cluster site_id) outreg2 using $result/TS_Channel, excel addtext(Kernel Type, `e(kernel)') ctitle( `y') dec(2) append rdrobust `y' distance_new if neg_ind0==1, kernel(epa) all vce(cluster site_id) outreg2 using $result/TS_Channel, excel addtext(Kernel Type, `e(kernel)') ctitle( `y') dec(2) append rdrobust `y' distance_new if neg_ind0==1, kernel(uni) all vce(cluster site_id) outreg2 using $result/TS_Channel, excel addtext(Kernel Type, `e(kernel)') ctitle( `y') dec(2) append } xmluse $result/TS_Channel.xml, doctype(excel) sheet(Sheet1) cells(A2:FZ100) allstring missing nocompress clear export excel using $result/Tables_TFP.xlsx, sheet("TS_Channel", replace) *********** Pre-2003 Results *********** use "$data/channels_Pre_QJE_final.dta",clear cap erase $result/TS_Channel_Pre.txt cap erase $result/TS_Channel_Pre.xml foreach y of var resid1_lrze resid1_lnv resid1_lnl resid1_lnk resid1_lnm resid1_lnv_l resid1_lnv_k { rdrobust `y' distance_new if neg_ind0==1, kernel(tri) all vce(cluster site_id) outreg2 using $result/TS_Channel_Pre, excel addtext(Kernel Type, `e(kernel)') ctitle( `y') dec(2) append rdrobust `y' distance_new if neg_ind0==1, kernel(epa) all vce(cluster site_id) outreg2 using $result/TS_Channel_Pre, excel addtext(Kernel Type, `e(kernel)') ctitle( `y') dec(2) append rdrobust `y' distance_new if neg_ind0==1, kernel(uni) all vce(cluster site_id) outreg2 using $result/TS_Channel_Pre, excel addtext(Kernel Type, `e(kernel)') ctitle( `y') dec(2) append } xmluse $result/TS_Channel_Pre.xml, doctype(excel) sheet(Sheet1) cells(A2:FZ100) allstring missing nocompress clear export excel using $result/Tables_TFP.xlsx, sheet("TS_Channel_Pre", replace) ************************** Abatement in production process ***************************** use "abatement_QJE_final.dta",clear cap erase $result/T_abatement.txt cap erase $result/T_abatement.xml ** reduced production hours rdrobust resid1_hours distance_new, kernel(tri) all vce(cluster site_id) outreg2 using $result/T_abatement, excel addtext(Kernel Type, `e(kernel)') ctitle(resid prod hours) dec(0) replace rdrobust resid1_hours distance_new, kernel(epa) all vce(cluster site_id) outreg2 using $result/T_abatement, excel addtext(Kernel Type, `e(kernel)') ctitle(resid prod hours) dec(0) append rdrobust resid1_hours distance_new, kernel(uni) all vce(cluster site_id) outreg2 using $result/T_abatement, excel addtext(Kernel Type, `e(kernel)') ctitle(resid prod hours) dec(0) append ** reduced water usage (changing towards less water-intensive technologies) rdrobust resid1_log_water distance_new, kernel(tri) all vce(cluster site_id) outreg2 using $result/T_abatement, excel addtext(Kernel Type, `e(kernel)') ctitle(resid log water input) dec(2) append rdrobust resid1_log_water distance_new, kernel(epa) all vce(cluster site_id) outreg2 using $result/T_abatement, excel addtext(Kernel Type, `e(kernel)') ctitle(resid log water input) dec(2) append rdrobust resid1_log_water distance_new, kernel(uni) all vce(cluster site_id) outreg2 using $result/T_abatement, excel addtext(Kernel Type, `e(kernel)') ctitle(resid log water input) dec(2) append ********End-of-the-Pipe Technology******** **upstream firms own more abatement machines rdrobust resid1_machine distance_new , kernel(tri) all vce(cluster site_id) outreg2 using $result/T_abatement, excel addtext(Kernel Type, `e(kernel)') ctitle(resid abate machine) dec(2) append rdrobust resid1_machine distance_new , kernel(epa) all vce(cluster site_id) outreg2 using $result/T_abatement, excel addtext(Kernel Type, `e(kernel)') ctitle(resid abate machine) dec(2) append rdrobust resid1_machine distance_new , kernel(uni) all vce(cluster site_id) outreg2 using $result/T_abatement, excel addtext(Kernel Type, `e(kernel)') ctitle(resid abate machine) dec(2) append **upstream firms have higher abatement capacity rdrobust resid1_total_capacity distance_new , kernel(tri) all vce(cluster site_id) outreg2 using $result/T_abatement, excel addtext(Kernel Type, `e(kernel)') ctitle(resid abate capacity) dec(0) append rdrobust resid1_total_capacity distance_new , kernel(epa) all vce(cluster site_id) outreg2 using $result/T_abatement, excel addtext(Kernel Type, `e(kernel)') ctitle(resid abate capacity) dec(0) append rdrobust resid1_total_capacity distance_new , kernel(uni) all vce(cluster site_id) outreg2 using $result/T_abatement, excel addtext(Kernel Type, `e(kernel)') ctitle(resid abate capacity) dec(0) append ****** Insert Table ***** xmluse $result/T_abatement.xml, doctype(excel) sheet(Sheet1) cells(A2:FZ100) allstring missing nocompress clear export excel using $result/Tables_TFP.xlsx, sheet("T_abatement", replace) ************************** THE UPSTREAM–DOWNSTREAM GAP IN EMISSIONS ***************************** use "water_emission_QJE_final.dta", clear ** Local Linear RD Results for Emission ** cap erase $result/T_localRD_emission.xml cap erase $result/T_localRD_emission.txt foreach y of var resid_log_cod resid_log_cod_intensity resid_log_nh resid_log_nh_intensity resid_log_waste_water resid_log_waste_water_intensity { rdrobust `y' distance_new , kernel(tri) all vce(cluster site_id) outreg2 using $result/T_localRD_emission, excel addtext(Kernel Type, `e(kernel)') ctitle(`y') dec(2) append rdrobust `y' distance_new , kernel(epa) all vce(cluster site_id) outreg2 using $result/T_localRD_emission, excel addtext(Kernel Type, `e(kernel)') ctitle(`y') dec(2) append rdrobust `y' distance_new , kernel(uni) all vce(cluster site_id) outreg2 using $result/T_localRD_emission, excel addtext(Kernel Type, `e(kernel)') ctitle(`y') dec(2) append } ***** Placebo Pollutants ***** use "air_emission_QJE_final.dta", clear foreach y of var resid_log_so2 resid_log_nox { rdrobust `y' distance_new , kernel(tri) all vce(cluster site_id) outreg2 using $result/T_localRD_emission, excel addtext(Kernel Type, `e(kernel)') ctitle(`y') dec(2) append rdrobust `y' distance_new , kernel(epa) all vce(cluster site_id) outreg2 using $result/T_localRD_emission, excel addtext(Kernel Type, `e(kernel)') ctitle(`y') dec(2) append rdrobust `y' distance_new , kernel(uni) all vce(cluster site_id) outreg2 using $result/T_localRD_emission, excel addtext(Kernel Type, `e(kernel)') ctitle(`y') dec(2) append } ****** Insert Table ***** *** Insert all the Tables *** xmluse $result/T_localRD_emission.xml, doctype(excel) sheet(Sheet1) cells(A2:FZ100) allstring missing nocompress clear export excel using $result/Tables_TFP.xlsx, sheet("T_localRD_emission", replace) ***************************** Emission Fee ***************************** cap erase $result/TS_Fee.txt cap erase $result/TS_Fee.xml * Authomatic bandwidth models: foreach y of var resid1_l_pwf { rdrobust `y' distance_new , bwselect(certwo) kernel(tri) all vce(cluster site_id) outreg2 using $result/TS_Fee, excel addtext(Kernel Type, `e(kernel)') ctitle( `y') dec(2) append rdrobust `y' distance_new , bwselect(certwo) kernel(epa) all vce(cluster site_id) outreg2 using $result/TS_Fee, excel addtext(Kernel Type, `e(kernel)') ctitle( `y') dec(2) append rdrobust `y' distance_new, bwselect(certwo) kernel(uni) all vce(cluster site_id) outreg2 using $result/TS_Fee, excel addtext(Kernel Type, `e(kernel)') ctitle( `y') dec(2) append } xmluse $result/TS_Fee.xml, doctype(excel) sheet(Sheet1) cells(A2:FZ100) allstring missing nocompress clear export excel using $result/Tables_TFP.xlsx, sheet("TS_Fee", replace) ***************************** Table Political Incentive *********************** use "PE_QJE_final.dta",clear cap erase $result/T_political.txt cap erase $result/T_political.xml * in years when the prefecture party secretary has strong promotion incentives, effect size is larger local kernelfn "tri epa uni" * Authomatic bandwidth models: foreach y of var resid1_tfpop_s { foreach kvar of local kernelfn { rdrobust `y' distance_new if neg_ind0==1 & party_inc ==1, kernel(`kvar') all vce(cluster site_id) outreg2 using $result/T_political, excel addtext(Kernel Type,(off) `e(kernel)') addstat(bandwidth, e(h_l)) ctitle(`y'_high) dec(2) append } } foreach y of var resid1_tfpop_s { foreach kvar of local kernelfn { rdrobust `y' distance_new if neg_ind0==1 & party_inc ==0,kernel(`kvar') all vce(cluster site_id) outreg2 using $result/T_political, excel addtext(Kernel Type, `e(kernel)') addstat(bandwidth, e(h_l)) ctitle(`y'_low) dec(2) append } } foreach y of var resid1_tfpop_s { foreach kvar of local kernelfn { rdrobust `y' distance_new if neg_ind0==0 & party_inc ==1, kernel(`kvar') all vce(cluster site_id) outreg2 using $result/T_political, excel addtext(Kernel Type, `e(kernel)') addstat(bandwidth, e(h_l)) ctitle(`y'_high) dec(2) append } } foreach y of var resid1_tfpop_s { foreach kvar of local kernelfn { rdrobust `y' distance_new if neg_ind0==0 & party_inc ==0, kernel(`kvar') all vce(cluster site_id) outreg2 using $result/T_political, excel addtext(Kernel Type, `e(kernel)') addstat(bandwidth, e(h_l)) ctitle(`y'_low) dec(2) append } } xmluse $result/T_political, doctype(excel) sheet(Sheet1) cells(A2:FZ100) allstring missing nocompress clear export excel using $result/Tables_TFP.xlsx, sheet("T_political", replace) ***************************** Table Political Incentive ***************************** ***** Auto vs. Manual Stations ***** use "auto_QJE_final.dta",clear cap erase $result/T_auto.txt cap erase $result/T_auto.xml * Authomatic bandwidth models: //污染行业 foreach y of var resid1_tfpop_s { rdrobust `y' distance_new if neg_ind0==1 & automatic==1, kernel(tri) all vce(cluster site_id) outreg2 using $result/T_auto, excel addtext(Kernel Type, `e(kernel)') addstat(bandwidth, e(h_l)) ctitle(`y'_p) dec(2) append rdrobust `y' distance_new if neg_ind0==1 & automatic==1, kernel(epa) all vce(cluster site_id) outreg2 using $result/T_auto, excel addtext(Kernel Type, `e(kernel)') addstat(bandwidth, e(h_l)) ctitle(`y'_p) dec(2) append rdrobust `y' distance_new if neg_ind0==1 & automatic==1, kernel(uni) all vce(cluster site_id) outreg2 using $result/T_auto, excel addtext(Kernel Type, `e(kernel)') addstat(bandwidth, e(h_l)) ctitle(`y'_p) dec(2) append } foreach y of var resid1_tfpop_s { rdrobust `y' distance_new if neg_ind0==1 & automatic==0, kernel(tri) all vce(cluster site_id) outreg2 using $result/T_auto, excel addtext(Kernel Type, `e(kernel)') addstat(bandwidth, e(h_l)) ctitle(`y'_p) dec(2) append rdrobust `y' distance_new if neg_ind0==1 & automatic==0, kernel(epa) all vce(cluster site_id) outreg2 using $result/T_auto, excel addtext(Kernel Type, `e(kernel)') addstat(bandwidth, e(h_l)) ctitle(`y'_p) dec(2) append rdrobust `y' distance_new if neg_ind0==1 & automatic==0, kernel(uni) all vce(cluster site_id) outreg2 using $result/T_auto, excel addtext(Kernel Type, `e(kernel)') addstat(bandwidth, e(h_l)) ctitle(`y'_p) dec(2) append } // 非污染行业 foreach y of var resid1_tfpop_s { rdrobust `y' distance_new if neg_ind0==0 & automatic==1, kernel(tri) all vce(cluster site_id) outreg2 using $result/T_auto, excel addtext(Kernel Type, `e(kernel)') addstat(bandwidth, e(h_l)) ctitle(`y'_p) dec(2) append rdrobust `y' distance_new if neg_ind0==0 & automatic==1, kernel(epa) all vce(cluster site_id) outreg2 using $result/T_auto, excel addtext(Kernel Type, `e(kernel)') addstat(bandwidth, e(h_l)) ctitle(`y'_p) dec(2) append rdrobust `y' distance_new if neg_ind0==0 & automatic==1,bwselect(msecomb1) kernel(uni) all vce(cluster site_id) outreg2 using $result/T_auto, excel addtext(Kernel Type, `e(kernel)') addstat(bandwidth, e(h_l)) ctitle(`y'_p) dec(2) append } foreach y of var resid1_tfpop_s { rdrobust `y' distance_new if neg_ind0==0 & automatic==0, kernel(tri) all vce(cluster site_id) outreg2 using $result/T_auto, excel addtext(Kernel Type, `e(kernel)') addstat(bandwidth, e(h_l)) ctitle(`y'_p) dec(2) append rdrobust `y' distance_new if neg_ind0==0 & automatic==0, kernel(epa) all vce(cluster site_id) outreg2 using $result/T_auto, excel addtext(Kernel Type, `e(kernel)') addstat(bandwidth, e(h_l)) ctitle(`y'_p) dec(2) append rdrobust `y' distance_new if neg_ind0==0 & automatic==0, kernel(uni) all vce(cluster site_id) outreg2 using $result/T_auto, excel addtext(Kernel Type, `e(kernel)') addstat(bandwidth, e(h_l)) ctitle(`y'_p) dec(2) append } xmluse $result/T_auto.xml, doctype(excel) sheet(Sheet1) cells(A2:FZ100) allstring missing nocompress clear export excel using $result/Tables_TFP.xlsx, sheet("T_auto", replace) ********** SOE vs. Private Firms ********** use "soe_vs_private_QJE_final", clear cap erase $result/T_soe_vs_private.txt cap erase $result/T_soe_vs_private.xml rdrobust resid1_tfpop_s distance_new if neg_ind0==1 & soe == 0, kernel(tri) all vce(cluster site_id) outreg2 using $result/T_soe_vs_private, excel addtext(Kernel Type, `e(kernel)') addstat(bandwidth, e(h_l)) ctitle(pe_tfpop_p) dec(2) append rdrobust resid1_tfpop_s distance_new if neg_ind0==1 & soe == 0, kernel(epa) all vce(cluster site_id) outreg2 using $result/T_soe_vs_private, excel addtext(Kernel Type, `e(kernel)') addstat(bandwidth, e(h_l)) ctitle(pe_tfpop_p) dec(2) append rdrobust resid1_tfpop_s distance_new if neg_ind0==1 & soe == 0, kernel(uniform) all vce(cluster site_id) outreg2 using $result/T_soe_vs_private, excel addtext(Kernel Type, `e(kernel)') addstat(bandwidth, e(h_l)) ctitle(pe_tfpop_p) dec(2) append rdrobust resid1_tfpop_s distance_new if neg_ind0==0 & soe == 0, kernel(tri) all vce(cluster site_id) outreg2 using $result/T_soe_vs_private, excel addtext(Kernel Type, `e(kernel)') addstat(bandwidth, e(h_l)) ctitle(pe_tfpop_np) dec(2) append rdrobust resid1_tfpop_s distance_new if neg_ind0==0 & soe == 0, kernel(epa) all vce(cluster site_id) outreg2 using $result/T_soe_vs_private, excel addtext(Kernel Type, `e(kernel)') addstat(bandwidth, e(h_l)) ctitle(pe_tfpop_np) dec(2) append rdrobust resid1_tfpop_s distance_new if neg_ind0==0 & soe == 0, kernel(uniform) all vce(cluster site_id) outreg2 using $result/T_soe_vs_private, excel addtext(Kernel Type, `e(kernel)') addstat(bandwidth, e(h_l)) ctitle(pe_tfpop_np) dec(2) append rdrobust resid1_tfpop_s distance_new if neg_ind0==1 & soe == 1, kernel(tri) all vce(cluster site_id) outreg2 using $result/T_soe_vs_private, excel addtext(Kernel Type, `e(kernel)') addstat(bandwidth, e(h_l)) ctitle(pe_tfpop_p) dec(2) append rdrobust resid1_tfpop_s distance_new if neg_ind0==1 & soe == 1, kernel(epa) all vce(cluster site_id) outreg2 using $result/T_soe_vs_private, excel addtext(Kernel Type, `e(kernel)') addstat(bandwidth, e(h_l)) ctitle(pe_tfpop_p) dec(2) append rdrobust resid1_tfpop_s distance_new if neg_ind0==1 & soe == 1, kernel(uniform) all vce(cluster site_id) outreg2 using $result/T_soe_vs_private, excel addtext(Kernel Type, `e(kernel)') addstat(bandwidth, e(h_l)) ctitle(pe_tfpop_p) dec(2) append rdrobust resid1_tfpop_s distance_new if neg_ind0==0 & soe == 1, kernel(tri) all vce(cluster site_id) outreg2 using $result/T_soe_vs_private, excel addtext(Kernel Type, `e(kernel)') addstat(bandwidth, e(h_l)) ctitle(pe_tfpop_np) dec(2) append rdrobust resid1_tfpop_s distance_new if neg_ind0==0 & soe == 1, kernel(epa) all vce(cluster site_id) outreg2 using $result/T_soe_vs_private, excel addtext(Kernel Type, `e(kernel)') addstat(bandwidth, e(h_l)) ctitle(pe_tfpop_np) dec(2) append rdrobust resid1_tfpop_s distance_new if neg_ind0==0 & soe == 1, kernel(uniform) all vce(cluster site_id) outreg2 using $result/T_soe_vs_private, excel addtext(Kernel Type, `e(kernel)') addstat(bandwidth, e(h_l)) ctitle(pe_tfpop_np) dec(2) append *** Insert all the Tables *** xmluse $result/T_soe_vs_private.xml, doctype(excel) sheet(Sheet1) cells(A2:FZ100) allstring missing nocompress clear export excel using $result/Tables_TFP.xlsx, sheet("T_soe_vs_private", replace) ********** Big vs. Small Firms ********** use "big_vs_small_QJE_final", clear cap erase $result/T_big_vs_small.txt cap erase $result/T_big_vs_small.xml rdrobust resid1_tfpop_s distance_new if neg_ind0==1 & firm_big == 0, kernel(tri) all vce(cluster site_id) outreg2 using $result/T_big_vs_small, excel addtext(Kernel Type, `e(kernel)') addstat(bandwidth, e(h_l)) ctitle(pe_tfpop_p) dec(2) append rdrobust resid1_tfpop_s distance_new if neg_ind0==1 & firm_big == 0, kernel(epa) all vce(cluster site_id) outreg2 using $result/T_big_vs_small, excel addtext(Kernel Type, `e(kernel)') addstat(bandwidth, e(h_l)) ctitle(pe_tfpop_p) dec(2) append rdrobust resid1_tfpop_s distance_new if neg_ind0==1 & firm_big == 0, kernel(uniform) all vce(cluster site_id) outreg2 using $result/T_big_vs_small, excel addtext(Kernel Type, `e(kernel)') addstat(bandwidth, e(h_l)) ctitle(pe_tfpop_p) dec(2) append rdrobust resid1_tfpop_s distance_new if neg_ind0==0 & firm_big == 0, kernel(tri) all vce(cluster site_id) outreg2 using $result/T_big_vs_small, excel addtext(Kernel Type, `e(kernel)') addstat(bandwidth, e(h_l)) ctitle(pe_tfpop_np) dec(2) append rdrobust resid1_tfpop_s distance_new if neg_ind0==0 & firm_big == 0, kernel(epa) all vce(cluster site_id) outreg2 using $result/T_big_vs_small, excel addtext(Kernel Type, `e(kernel)') addstat(bandwidth, e(h_l)) ctitle(pe_tfpop_np) dec(2) append rdrobust resid1_tfpop_s distance_new if neg_ind0==0 & firm_big == 0, kernel(uniform) all vce(cluster site_id) outreg2 using $result/T_big_vs_small, excel addtext(Kernel Type, `e(kernel)') addstat(bandwidth, e(h_l)) ctitle(pe_tfpop_np) dec(2) append rdrobust resid1_tfpop_s distance_new if neg_ind0==1 & firm_big == 1, kernel(tri) all vce(cluster site_id) outreg2 using $result/T_big_vs_small, excel addtext(Kernel Type, `e(kernel)') addstat(bandwidth, e(h_l)) ctitle(pe_tfpop_p) dec(2) append rdrobust resid1_tfpop_s distance_new if neg_ind0==1 & firm_big == 1, kernel(epa) all vce(cluster site_id) outreg2 using $result/T_big_vs_small, excel addtext(Kernel Type, `e(kernel)') addstat(bandwidth, e(h_l)) ctitle(pe_tfpop_p) dec(2) append rdrobust resid1_tfpop_s distance_new if neg_ind0==1 & firm_big == 1, kernel(uniform) all vce(cluster site_id) outreg2 using $result/T_big_vs_small, excel addtext(Kernel Type, `e(kernel)') addstat(bandwidth, e(h_l)) ctitle(pe_tfpop_p) dec(2) append rdrobust resid1_tfpop_s distance_new if neg_ind0==0 & firm_big == 1, kernel(tri) all vce(cluster site_id) outreg2 using $result/T_big_vs_small, excel addtext(Kernel Type, `e(kernel)') addstat(bandwidth, e(h_l)) ctitle(pe_tfpop_np) dec(2) append rdrobust resid1_tfpop_s distance_new if neg_ind0==0 & firm_big == 1, kernel(epa) all vce(cluster site_id) outreg2 using $result/T_big_vs_small, excel addtext(Kernel Type, `e(kernel)') addstat(bandwidth, e(h_l)) ctitle(pe_tfpop_np) dec(2) append rdrobust resid1_tfpop_s distance_new if neg_ind0==0 & firm_big == 1, kernel(uniform) all vce(cluster site_id) outreg2 using $result/T_big_vs_small, excel addtext(Kernel Type, `e(kernel)') addstat(bandwidth, e(h_l)) ctitle(pe_tfpop_np) dec(2) append xmluse $result/T_big_vs_small.xml, doctype(excel) sheet(Sheet1) cells(A2:FZ100) allstring missing nocompress clear export excel using $result/Tables_TFP.xlsx, sheet("T_big_vs_small", replace) ********** River Basin: South-North Water Diversion Project ********** use "NSBD_QJE_final", clear cap erase $result/T_localRD_basin.txt cap erase $result/T_localRD_basin.xml * Authomatic bandwidth models: local kernelfn "epa tri uni" foreach y of var resid1_tfpop_s{ foreach kvar of local kernelfn { rdrobust `y' distance_new if neg_ind0==1 & nsbd==0, kernel(`kvar') vce(cluster site_id) outreg2 using $result/T_localRD_basin, excel addtext(Kernel Type, `e(kernel)') addstat(bandwidth, e(h_l)) ctitle(`y'_p) dec(2) append } } foreach y of var resid1_tfpop_s{ foreach kvar of local kernelfn { rdrobust `y' distance_new if neg_ind0==0 & nsbd==0, kernel(`kvar') vce(cluster site_id) outreg2 using $result/T_localRD_basin, excel addtext(Kernel Type, `e(kernel)') addstat(bandwidth, e(h_l)) ctitle(`y'_p) dec(2) append } } foreach y of var resid1_tfpop_s{ foreach kvar of local kernelfn { rdrobust `y' distance_new if neg_ind0==1 & nsbd==1, kernel(`kvar') vce(cluster site_id) outreg2 using $result/T_localRD_basin, excel addtext(Kernel Type, `e(kernel)') addstat(bandwidth, e(h_l)) ctitle(`y'_p) dec(2) append } } foreach y of var resid1_tfpop_s{ foreach kvar of local kernelfn { rdrobust `y' distance_new if neg_ind0==0 & nsbd==1, kernel(`kvar') vce(cluster site_id) outreg2 using $result/T_localRD_basin, excel addtext(Kernel Type, `e(kernel)') addstat(bandwidth, e(h_l)) ctitle(`y'_p) dec(2) append } } xmluse $result/T_localRD_basin.xml, doctype(excel) sheet(Sheet1) cells(A2:FZ100) allstring missing nocompress clear export excel using $result/Tables_TFP.xlsx, sheet("T_localRD_basin", replace)


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3