#文章首发于公众号“如风起”。
原文链接:
小白学统计|面板数据分析与Stata应用笔记(八)mp.weixin.qq.com
本期内容:面板门限模型
面板数据分析与Stata应用笔记整理自慕课上浙江大学方红生教授的面板数据分析与Stata应用课程,笔记中部分图片来自课程截图。
笔记内容还参考了陈强教授的《高级计量经济学及Stata应用(第二版)》
我们在做经验研究的时候通常遵循这样的几个步骤:
- 首先,是分析研究我们关注的核心变量对被解释变量产生的影响(这个影响是一个平均效应);
- 其次,是进行对估计的模型进行稳健性检验,从不同的角度来探讨这个平均效应的结果是否稳健;
- 然后,是机制分析,探讨研究我们所关注的核心解释变量是如何影响被解释变量的;
- 最后,是异质性分析,探讨关键的解释变量在不同的条件下可能会对被解释变量产生什么样的影响。
本篇笔记的内容面板门限模型实际上就是做异质性分析。
寻找异质性的典型的处理方法有:
- 在模型中加入解释变量的二次项,以查看解释变量和被解释变量之间是否存在“U”型或倒“U”型的关系。
- 将交互项引入模型。
- 对数据进行分组回归。
需要注意的是,上述的对异质性处理的方法可能会存在高度共线性的问题,从而使得变量不再显著。此外,在对数据的分组上也存在一定的困难。于是,面板门限模型便成为了一种较好的异质性分析的方法。
一、门限回归
在回归分析中,我们常常关心模型系数的估计值是否稳定,即如果将整个样本分成若干个子样本(subsample)分别进行回归,是否还能够得到大致相同的估计系数。对于时间序列数据,这意味着经济结构是否随着时间的推移而改变;对于横截面数据,比如,样本中有男性与女性,则可以根据性别将样本一分为二,分别估计男性样本与女性样本。
如果用来划分样本的变量不是离散型变量而是连续变量,比如,企业规模、人均国民收入,则需要给出一个划分的标准,即“门限(门槛)值”(threshold level)。
在应用研究中,门限变量的应用是非常的广泛。经济规律可能是非线性的,其函数形式可能会依赖于某个变量(称为“门限变量”)而改变。
- 比如,人们常常怀疑大企业与小企业的投资行为不同,那么如何区分大企业与小企业呢?
- 另外,受到流动性约束(liquidity constraint)的企业与没有流动性约束企业的投资行为也可能不同,如何通过债务股本比(debt to equity ratio)或其他指标来区分这两类企业?
- 再比如,发达国家与发展中国家的经济增长规律可能不同,如何通过人均国民收入这一指标来区分一个国家发达与否?
对门限模型的拟合,传统的做法是,由研究者主观(随意)地确定一个门限值,然后根据此门限值把样本一分为二(或分成更多子样本)。这种方法既不对门限值进行参数估计,也不对其显著性进行统计检验。
显然,这样得到的结果并不可靠。为此,Hansen(2000)提出“门限(门槛)回归”(threshold regression),以严格的统计推断方法对门限值进行参数估计与假设检验。
假设样本数据为
![]()
,其中
![]()
为用来划分样本的“门限变量”(threshold variable),
![]()
可以是解释变量的一部分。考虑以下门限回归模型:
![]()
(1)
其中,
![]()
为待估计的门限值,
![]()
为外生解释变量,与扰动项
![]()
不相关。上面的分段函数可以合并写为:
![]()
(2)
其中,
![]()
为示性函数,即如果括号中的表达式为真,则取值为1;反之,取值为0。显然,这是一个非线性回归,因为它无法写成参数
![]()
的线性函数。可以用非线性最小二乘法(NLS)来估计,即最小化残差平方和。
事实上,如果
![]()
的取值已知,则可以通过定义
![]()
与
![]()
,将上述方程转换为参数为
![]()
的线性回归模型:
![]()
(3)
因此,在实际计算中,通常分两步来最小化残差平方和从而确定门限值
![]()
的取值,即首先给定
![]()
的取值,对方程(3)进行OLS估计得到残差平方和关于
![]()
的函数
![]()
;其次,选择
![]()
使得
![]()
最小化。
二、面板数据的门限回归
对于面板数据
![]()
,其中
![]()
表示个体,
![]()
表示时间,Hansen(1999)考虑了如下的固定效应(fix effects)门限回归模型:
![]()
(4)
其中,
![]()
为门限变量(可以是解释变量
![]()
的一部分),
![]()
为待估计的门限值,扰动项
![]()
为独立同分布的。
假设解释变量
![]()
为外生变量,与扰动项
![]()
不相关。因此,
![]()
不包含被解释变量
![]()
的滞后值,
不是动态面板。个体截距项
![]()
的存在表明,这是固定效应模型。使用示性函数
![]()
,可以将模型更简洁地表示为
![]()
(5)
关于门限值
![]()
的确定,在实际研究中,我们首先将样本按照门限变量
![]()
的大小进行升序排列,需要注意的是,为了使得到的门限值有意义,排列时忽略
![]()
最大的
![]()
个样本和最小的
![]()
个样本,仅以中间的样本作为门限值的候选范围。
为了提高门限值估计的精确度,Hansen在门限回归中使用了“格栅搜索法”(Grid Search)来连续给出门限回归中的候选门限值
![]()
。首先,以0.0025作为格栅化水平将候选门限值范围进行格栅化处理;然后,用格栅化得到的全部格栅点作为候选门限值
![]()
,并分别进行回归计算出相对应的模型的残差平方和,选择使模型残差平方和最小的候选门限值作为回归估计的真实门限值。
类似的,可以考虑多门限的面板回归模型。以两个门限值为例:
![]()
(6)
其中,门限值
![]()
,同样地,可以将这个模型转换为离差形式,并仍用两步法进行估计。首先,给定
![]()
,使用OLS估计离差模型,得到残差平方和
![]()
。其次,选择
![]()
使得
![]()
最小化。
三、面板单门限模型的两大检验
在找出门限值
![]()
之后,我们还需要进行
两大检验来查看这个门限效应是否真实存在。
1、门限效应的显著性检验
门限效应显著性检验的原假设与备择假设分别为:
如果面板单门限模型估计的两个分组系数是相同的,那就没有必要分组进行面板门限模型的估计。
对门限效应显著性的检验,可以构造似然比统计量
![]()
,通过自助法获得
![]()
对应的P值,如果P值小于0.1,则拒绝原假设,认为存在门限效应。
2、门限估计值的真实性(一致性)检验
对门限估计值的真实性进行检验,即检验
![]()
。
Hansen(1996)使用极大似然法检验门限值,构造似然比检验统计量为
![]()
。
Hansen(2000)计算了置信区间,即在显著性水平为时
![]()
,当
![]()
,不能拒绝原假设,认为门限估计值的真实性是显著的。
这一步,我们可以通过画出
![]()
与水平线
![]()
的图像,来更加形象化的看到
![]()
值在什么水平范围之内。
当
![]()
取值分别为10%、5%与1%时,对应的值分别为:6.53、7.35和10.59。
四、面板门限模型操作xthreg命令介绍
xthreg命令需要在Stata 13.0及以上版本才能安装使用,且xthreg只能估计基于平衡面板数据的固定效应面板门限模型。
首次使用xthreg命令需要使用命令【findit xthreg】进行安装。
通过【help xthhreg】我们可以查看命令xthreg的详细使用信息。
xthreg命令的格式为:
【xthreg depvar [indepvars] [if] [in], rx(varlist) qx(varname) [thnum(#) grid(#) trim(numlist) bs(numlist) thlevel(#) gen(newvarname) noreg nobslog thgiven options]】
其中,“depvar”为被解释变量、“[indepvars]”为除去体制依赖变量外的解释变量;选项“rx(varlist)”中放入体制依赖变量,即依赖于门限变量的核心解释变量;选项“qx(varname)”中放入门限变量;选项“thnum(#)”中放入门限数,xthreg最多可以估计三个门限值;选项“grid(#)”中放入格栅点数目,默认为300;选项“trim(numlist)”为上下删去观测值的比例,选取剩下比例的值作为搜索门限值的范围,“trim”中填写的内容需要与门限数对应,假设我们删去头尾1%的样本观测值,如果门限数为1,则填写为“trim(0.01)”,如果门限数为2,则填写“trim(0.01 0.01)”,如果门限数为3,则填写“trim(0.01 0.01 0.01)”;选项“bs(numlist)”是自助抽样的次数,用于门限效应的检验,一般设为300;选项“thlevel(#)”为设定置信水平,一般为95%;选项“gen(newvarname)”是为面板门限模型中的门限变量所在的区间生成虚拟变量;选项“thgive”表示如果加上“thgive”选项则第二个门限值或第三个门限值的估计可以根据之前的结果进行拟合。
此外,运行xthreg命令可以存储的结果如下:
五、面板单门限模型的实现与检验
以Hansen(1999)研究的投资对现金流的敏感性是否受到融资约束的影响为例对面板单门限模型进行拟合与检验。数据集是一个包含美国565家企业、15年数据的微观企业数据集。
参照Hansen(1999)构造的面板数据双门限模型,我们构造面板数据单门限模型如下:
其中,被解释变量
![]()
为投资资本比;
![]()
为总市值价值与资产的比值;
![]()
为长期负债率,是对融资约束的衡量;
![]()
是现金流与总资产的比值,是我们应该关注的核心解释变量。模型中的异质性因素为融资约束(长期负债率)
![]()
,Hansen使用
![]()
的滞后一期作为门限变量。通过命令【use hansen1999.dta】将数据集导入Stata中。
我们使用命令【des】查看数据集的信息。
此外,我们还可以使用tabstat命令进行描述性统计,tabstat可以报告变量在不同分位数的取值。
使用命令【tabstat i q1 c1 d1,s(min p25 p50 p75 max) format(%6.3f) c(s)】
接下来,我们对面板数据单门限模型进行估计。
使用命令
【xthreg i q1 q2 q3 d1 qd1,rx(c1) qx(d1) thnum(1) grid(400) trim(0.01) bs(300)】
其中,被解释变量为i,除体制依赖变量外的解释变量q1 q2 q3 d1 qd1,体制依赖变量c1,门限变量d1(这里异质性因素在模型中既作为控制变量又作为门限变量,一般情况下是不这么做的)。命令中,我们设置格点数为400,将升序后的门限变量上下各删去1%,进行自助抽样300次。
由估计结果我们可以看到,上图中第一个表格显示了门限值为0.0154。第二个表格是对门限效应的检验,表格上方显示自助抽样数bootstrap为300,检验结果显示通过自助法获得的p值为0,远小于0.1,所以拒绝线性模型的原假设,认为存在门限效应。
在估计结果中,虚拟变量取值为0时表示融资约束小于门限值0.0154的情形,这时所对应的系数为融资约束较低时现金流对投资的影响;取值为1时表示融资约束大于门限值0.0154的情形,所对应的系数为融资约束较高时现金流对投资的影响。
观察系数估计的结果,可以看到系数的估计结果和我们预期的结果相符合,融资约束较高时现金流对投资的影响更大,这是因为融资约束较高时,企业就很难从外面获得投资所需要的自己,所以企业投资时就更多的依赖于内部的现金流。
接下来 我们使用命令【_matplot】画出似然比函数LR与水平线
![]()
的图像,对门限估计值的真实性进行检验。
_matplot e(LR),columns(1 2) yline(7.35,lpattern(dash)) connect(direct) msize(small) mlabp(0) mlabs(zero) ytitle("LR Statistics") xtitle("Threshold") recast(line) name(LR)
通过上述图像我们可以直观的看到,似然比统计量LR是门限变量的函数, 的值为 为5%时的取值为7.35,当LR小于7.35时我们便确定了门限值的置信区间,令LR=0,即可确定所对应的门限值为0.0154。
六、面板多门限模型的实现与检验
xthreg命令最多可以估计三个门限模型。我们首先估计三门限模型。
xthreg i q1 q2 q3 d1 qd1,rx(c1) qx(d1) thnum(3) grid(400) trim(0.01 0.01 0.05) bs(0 300 300) thgive
因为我们已经知到存在第一个门限,所以对第一个门限其自助数可以设为0,即选项“bs(#)”设置为bs(0 300 300),这样可以节省模型拟合时间;选项“thgive”表示在第一个门限值给定的情况下,寻找第二、第三个门限值,不加“xtgive”即重头开始估计。
由运行结果的第一部分我们可以看到三个门限值的取值以及相应的显著性检验。可以看到,第一个门限值为0.0154,第二个门限值为0.5418,第三个门限值为0.4778。观察门限效应的检验结果可以看到,第一个和第二个门限效应检验所对应的p值均小于0.1而第三个门限效应检验的p值为0.57大于0.1,所以,可以认为存在双门限效应而不存在三门限效应。
上述的结果是三门限模型系数估计的结果,按融资约束的三个门限值将样本分为了四个组,从而得到不同的影响程度。
绘制LR统计量的图像对三个门限估计值的真实性进行检验。
_matplot e(LR21),columns(1 2) yline(7.35,lpattern(dash)) connect(direct) msize(small) mlabp(0) mlabs(zero) ytitle("LR Statistics") xtitle("First Threshold") recast(line) name(LR21) nodraw
_matplot e(LR22),columns(1 2) yline(7.35,lpattern(dash)) connect(direct) msize(small) mlabp(0) mlabs(zero) ytitle("LR Statistics") xtitle("Second Threshold") recast(line) name(LR22) nodraw
_matplot e(LR3),columns(1 2) yline(7.35,lpattern(dash)) connect(direct) msize(small) mlabp(0) mlabs(zero) ytitle("LR Statistics") xtitle("Third Threshold") recast(line) name(LR3) nodraw
graph combine LR21 LR22 LR3,cols(1)
可以看到,第一个门限与第二个门限的LR图像均与水平线有交点,分别确定了两个门限值的置信区间,所以通过了显著性的检验,而第三个门限的LR图像并没有与水平线出现交点,所以第三门限未能通过显著性的检验。
综上,我们最终应当拟合一个双门限模型。
所以,我们运行命令【xthreg i q1 q2 q3 d1 qd1,rx(c1) qx(d1) thnum(2) grid(400) trim(0.01 0.01) bs(300 300)】对面板数据双门限模型进行估计拟合。
实例分析中的代码
use hansen1999.dta
des
help tabstat
tabstat i q1 c1 d1,s(min p25 p50 p75 max) format(%6.3f) c(s)
xthreg i q1 q2 q3 d1 qd1,rx(c1) qx(d1) thnum(1) grid(400) trim(0.01) bs(300)
_matplot e(LR),columns(1 2) yline(7.35,lpattern(dash)) connect(direct) msize(small) mlabp(0) mlabs(zero) ytitle("LR Statistics") xtitle("Threshold") recast(line) name(LR)
xthreg i q1 q2 q3 d1 qd1,rx(c1) qx(d1) thnum(3) grid(400) trim(0.01 0.01 0.05) bs(0 300 300) thgive
_matplot e(LR21),columns(1 2) yline(7.35,lpattern(dash)) connect(direct) msize(small) mlabp(0) mlabs(zero) ytitle("LR Statistics") xtitle("First Threshold") recast(line) name(LR21) nodraw
_matplot e(LR22),columns(1 2) yline(7.35,lpattern(dash)) connect(direct) msize(small) mlabp(0) mlabs(zero) ytitle("LR Statistics") xtitle("Second Threshold") recast(line) name(LR22) nodraw
_matplot e(LR3),columns(1 2) yline(7.35,lpattern(dash)) connect(direct) msize(small) mlabp(0) mlabs(zero) ytitle("LR Statistics") xtitle("Third Threshold") recast(line) name(LR3) nodraw
graph combine LR21 LR22 LR3,cols(1)
xthreg i q1 q2 q3 d1 qd1,rx(c1) qx(d1) thnum(2) grid(400) trim(0.01 0.01) bs(300 300)