固定效应的Stata实现
之前讲过,对于如下的一般静态面板模型,我们主要采用固定效应进行估计:
其中,
由于模型(1)属于面板数据模型,因此在使用Stata进行回归分析前,需要先定义面板数据,也就是告诉Stata你的数据是面板数据,从而你才可以使用有关命令。定义面板数据的Stata命令及结果显示如下:
xtset表示设定面板数据,后面紧跟的分别是截面维度和时间维度,顺序不要乱。在这个例子里,截面维度是frdm(法人代码),unbalanced表示该数据为非平衡面板数据,要注意的是,frdm必须为数值型且为整数;时间维度为year(年份),从1999年-2006年。关于数据,这里也有一点要提醒一下,大家不用纠结平衡面板与非平衡面板之差,它们都属于面板数据,适用于完全相同的估计策略。由于平衡面板往往会损失很多样本量,所以若不是有特别要求,一般采用非平衡面板就行。
对于个体固定效应模型,Stata命令及结果显示如下:
xtreg表示对面板数据进行回归,前缀xt可以说是面板数据命令的标志,与OLS的回归命令reg相区别。在这个例子中,被解释变量为exit1,后面4个全是解释变量,fe表示fixed effect,处理的是个体固定效应,r表示robust,即采用聚类稳健标准误,对于面板数据估计,r自动聚类到截面维度,若要更改聚类层面,可以手动将r换成cluster(hy),括号内为想要聚类的层面,比如hy(行业)。关于R-sq,也就是RSquare,这里也要强调一下,可以发现,回归结果显示了三个R-aq,到底应该用哪一个呢?之前讲过,固定效应有三种估计方法,Stata默认的是组内估计(Within estimate),因此这三个R-sq里应该用第一个:within=0.02。不过也有一个“聪明”的办法来识别,即通过命令将回归结果直接导出到word,然后再看软件给出的是哪一个R-sq(导出回归结果的命令之前有提过,像outreg2以及esttab等都能很好实现)。
回忆一下组间估计的原理就会发现,组间估计存在一个较大的缺陷,那就是不能估计模型中已经观测到的不变因素(通过去均值被消掉了),比如性别,比如民族。如果这些不变因素恰是研究关注的重点,那该怎么办呢?这个时候可以采用固定效应估计的第三种方法:最小二乘虚拟变量法(LSDV),也就是手动控制住所有的个体效应,命令如下:
这个时候不再有fe,从而也不再用xtreg,i.frdm表示根据个体(截面)变量frdm自动生成虚拟变量,i.frdm具有等同于fe的效果。由于这个时候采用的是OLS估计,因而不变因素也能得到回归系数。不过,虽然LSDV的操作很简单,但是一般情况下并不推荐使用,因为会损失大量的自由度(个体太多,会生成过多的虚拟变量)以及增加Stata的运行时间。
在更多的时候,会同时存在个体效应和时间效应,因而更为通常的是采用双向固定效应估计(所谓双向就是同时考虑了这两种效应)。由于fe已经解决了个体效应,因而只需要在原有命令上考虑时间效应即可,处理时间效应的方法就是LSDV。双向固定效应的命令如下:
只需要在fe前面加入i.year,就能够控制住时间效应。时间效应的估计结果如下:
由于使用的这个数据的时间是1999年至2006年,因此i.year自动生成了7个(n-1个)年份虚拟变量。年份期间明明有8年,为什么只生成了7个虚拟变量呢?关于这一点,需要尤为强调一下:之所以这样处理,是为了避免陷入“虚拟变量陷阱”。什么叫虚拟变量陷阱呢?举个例子,对于两个互相排斥的属性——性别(人妖除外),设置变量sex,sex=1表示男性,sex=0表示女性,这个时候只需要在模型中加入sex即可。但如果又额外设置变量sex2,sex2=1表示女性,sex2=0表示男性,且同时将sex和sex2加入模型,结果会怎样呢?sex+sex2=1对于所有个体永远成立,也就说说,存在完全多重共线性。回忆一下之前讲过的OLS的假设,其中之一就是不能存在完全多重共线性。
关于时间固定效应的处理,还做一点补充。i.year是一种简便的做法,但不是唯一做法。另外的做法是先生成所有年份的虚拟变量:
这个时候会在数据集里自动生成以year为前缀的8个年份变量,如下所示:
然后再在命令中进行处理:
注意,这里只加入了7个虚拟变量(n-1个)。上面的命令还可以写成:
year*表示将所有以year为前缀的变量加入到模型,这种方式下毫无疑问会存在严格多重共线性,如软件给出的note所示。因此,Stata在估计时会自动omitted掉个别虚拟变量以便进行估计,如下所示: