当前位置:   article > 正文

02 固定效应模型与Stata实现

固定效应模型

1 什么是固定效应

我们经常会往模型中加入一系列虚拟变量作为控制变量以达到控制某些特征的目的,这些虚拟变量就叫做固定效应。比如加行业固定效应、年份固定效应、地区固定效应,实则都是加入一连串的行业/年份/地区虚拟变量作为控制变量,以达到对行业/年份/地区特征的控制。

对于一般的双向固定效应模型,估计方法仍然是普通最小二乘法,基本形式是:
固定效应模型
其中Xit是我们关注的核心解释变量或处理变量,Zit是一组控制变量。ui和vt是个体效应和时期效应,二者分别用于控制个体层面不可观测的非时变的因素和同一年份不随个体变化的因素。

2 “个体固定效应模型”和“双向固定效应模型”

2.1 个体固定效应模型

将个体固定效应控制至所研究的最低层面,就构成我们常说的个体固定效应模型。(因为在本领域以公司研究为主,因此通常就以个体固定效应代指公司个体固定效应) 控制个体固定效应有两种理解方法:

  • 组内离差;

  • 类比行业固定效应,在模型中加入公司个体固定效应以控制个体异质性。因此,控制个体固定效应的前提,数据必须是面板数据。否则加入公司特征虚拟变量后,每个公司维度只有一个观测值,是无法进行模型估计的。

2.2 双向固定效应模型

因为公司研究经常使用公司的年度数据,因此在个体固定效应模型的基础上,我们会加入年份固定效应来控制时间变化趋势,就是常说的双向固定效应模型。

3 何时需要加入个体固定效应?

3.1 遗漏变量引起的内生性问题

3.2 如何缓解此类内生性问题?

3.2.1 控制SEX变量

只要我们把SEX给控制住了,那么样本之间的比较就缩小到同性别的观测值维度上,此时可以近似认为Y的不同是由于X引起的,而不是SEX的干扰

3.2.2 加入个体固定效应

理论上而言,只要我们控制的变量足够多,就不会有此类问题。

因为把所有可能共同遗漏的变量全部控制起来,就能保证样本中除了X、Y不一样之外,其余特征均相同(此时可以称之为自然实验)。

但事实上,我们无法控制不可观测变量,再者我们也无法穷尽控制变量。遗漏变量将很可能产生内生性问题。 此时我们可以

加入个体固定效应,一股脑的直接把不随时间变化的公司个体异质性完全控制住

3.3 个体固定效应模型的适用

3.3.1 只有面板数据,才可能会有同一个体具有多个观测值,才能能够进行比较。

3.3.2 数据的变异性

数据中需要有足够的信息,估计才能有效,因此数据要有变化,即计量经济学中所提到的变异性。与上个问题相类似,假使我有面板数据了,但是同一个个体在年度之间的变化并不明显,甚至可能几乎没有差别(组内变异性很小);反而是公司和公司之间的差别更大(组件变异性强),此时,如果加入个体固定效应,估计的其实是组内变异性很小(信息量也就少)。此时,需要根据自己的研究问题和数据情况做出取舍

3.3.3 个体效应究竟是否存在?

对于这个问题,通常需要进行豪斯曼检验,或者F检验,来确定使用随机效应模型(RE)、固定效应模型(FE)抑或不控制个体固定效应(POLS)。但实际操作中,这些检验都是不报告的,最简单的方法就是不管三七二十一,直接上固定效应模型(FE),因为FE总是有效的;

那为什么大多数文献通常用的是混合OLS(POLS),仅控制到行业层面呢?很可能是控制到个体层面结果不好,仅此而已;

而随机效应模型(RE)则在公司研究领域较少出现,一般不用。

4 Stata实现

因为我们常用的都是公司年度数据,因此以双向固定效应模型为例:

4.1 LSDV法(Least squares dummy variable)

4.1.1 模型

LSDV模型
注意,若有i个个体,则要添加i-1个代表个体效应的0-1变量,否则会有多重共线性(已知任意i-1个个体,剩下的都能预测出)。那被去掉的第i个个体的个体效应如何体现呢?就通过β0来体现,实际上,对于每一个个体,都有唯一的截距项体现其个体效应。

对于时间效应,如果样本是以天为单位的股票数据,day的范围跨越了365天,用LSDV就会生成364个虚拟变量,导致结果十分冗长,此时可以用固定效应模型(4.2)来解决这一问题。

4.1.2 stata命令

* LSDV法
reg y x controls i.stkcd i.year, cluster(stkcd) // 以”i.“形式加入一系列虚拟变量,但是不生成这些虚拟变量。模型存在双因素效应
reg y x controls i.stkcd, cluster(stkcd) // 模型存在个体效应
reg y x controls i.year, cluster(stkcd) // 模型存在时间效应
xi: reg y x controls i.stkcd i.year, cluster(stkcd) // 加入xi,就是在加入虚拟变量的基础上还会创建这些虚拟变量,个人一般不用。

* 组内估计法
xtset stkcd year // 需要先设定面板数据
xtreg y x controls i.year, fe robust // fe代表固定效应模型

* 其他方法
areg、reghdfe等,后续比较其特点
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12

因为数据往往存在异方差、自相关等问题,导致估计的标准误不准确,所以我们会使用稳健标准误来替代原始标准误。如代码中使用的**robust(异方差稳健标准误) 和 cluster(聚类文件标准误)**代表的是采用稳健标准误的不同形式。其中reg+cluster(stkcd) 等价于 xtreg,fe + robust,是目前论文中常用的比较稳健的标准误了,同样,也是比较难显著。稳健和显著很难两全。后面会介绍我对这些robust、cluster、vce(cluster)等option的理解;

通过上述分析得知,没有生成虚拟变量的个体(如个体1)的个体效应,通过常数项(结果中的_cons)体现

4.2 固定效应模型fixed effects model

4.2.1 模型

思路:减去组内平均值,消除个体效应

4.2.1.1 存在个体效应
step1 以每个个体为一组,求自变量和因变量的平均值,得到没有时间标识的平均值

固定效应模型step1
在这里插入图片描述
①是自变量的平均值,求法同因变量
②是每个个体效应的平均值,由于ui不随时间变化,因此平均值就为ui
③是其他效应的平均值,求法同因变量

step2 作差剔除个体效应ui,并OLS回归

在这里插入图片描述

4.2.1.1 存在时间效应
step1 以每个时间为一组,求自变量和因变量的平均值,得到没有个体标识的平均值
step2 作差剔除时间效应vt,并OLS回归

在这里插入图片描述

4.2.1.1 存在双因素效应

双因素效应的固定效应模型

step1 以每个个体为一组,求自变量和因变量的平均值,得到没有个体标识的平均值

注意,对每一个个体平均来说,得到的v拔都等于时间效应的平均值,即(v1+v2+……+vT)/T

step2 以每个时间为一组,求自变量和因变量的平均值,得到没有时间标识的平均值

注意,对每一个时间平均来说,得到的u拔都等于时间效应的平均值,即(u1+u2+……+uT)/N

step3 对所有数据求平均值,则Y Xi u v均只能得到一个平均值,即Y拔 Xi拔 u拔 v拔
step4 剔除时间效应、个体效应平均值,加上总体平均值,并用OLS回归

4.2.2 stata命令

* 法1 xtreg 
xtset stkcd year // 需要先设定面板数据
xtreg y x controls, fe  robust // 单因素个体效应模型
xtreg y x controls, fe i(year) robust // 单因素时间效应模型
xtreg y x controls i.year, fe robust // xtreg不能单独进行双因素模型回归,只能和之前的LSDV方法结合

* 法2 reghdfe
reghdfe y x controls, absorb(stock, year)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

5 命令比较——用reg、xtreg、areg还是reghdfe?

三种命令自变量结果t值和系数都是一样的.
区别就在于结果报告的冗长程度。其中,reg最为朴实无华,会全部报告

5.3 reg和reghdfe(LSDV)

5.3.1 reg(普通估计)

  • reg是最为朴实无华的命令,无论需要控制什么固定效应,直接往模型中以控制变量形式加入即可,Stata均会报告其回归系数。想知道被个体固定效应吸收掉的变量的估计系数用reg

5.3.2 reghdfe(多维估计,个人非常喜欢的命令)

  • reghdfe主要用于实现多维固定效应线性回归。
  • 有些时候,我们需要控制多个维度(如城市-行业-年度)的固定效应, 此时,areg的absorb选项中只能加入一个固定效应,如果要加入更多固定效应,除非只能以i.形式加入控制变量,但是这样就与reg、xtreg一样,显的冗余了,且运行速度会很慢;
  • reghdfe解决的就是这一痛点,其在运行速度方面远远优于xtreg等命令。
  • 怎么在reghdfe中引入固定效应:absorb(absvars)
    • 可以包含多维固定效应,即 absorb (var1,var2,var3,…)。若想保存对某变量的固定效应,则运行命令absorb (var1,var2,FE3=var3) , 变量 FE3 将保存对 var3 的固定效应估计结果。
    • 可以包含不同效应间的交互影响,即absorb(var1#var2)。
    • 值得注意的是,reghdfe 允许定类变量 (categorical variable) 与连续性变量 (continuous variable) 进行交互,即 absorb(i.var1#c.var2) 。实证中很少引入这样的交互项。但如果对该问题感兴趣,可参考 Duflo (2014) 。

5.2 xtreg, fe(组内估计)

  • xtreg, fe是固定效应模型的官方命令,使用这一命令估计出来的系数是最为纯正的固定效应估计量(组内估计量)
  • 在使用xtreg命令之前,首先需要使用xtset命令进行面板数据声明,定义截面(个体)维度和时间维度;
  • xtreg实现个体固定效应估计必须要跟fe,如果不跟fe,默认为采用随机效应模型进行估计(re)
  • 对于不随时间变化的个体异质性都会被fe吸收,比如SOE一般不随时间变化,个体固定效应实际上已经包含了SOE的信息,所以采用xtreg, fe后,SOE将会出现“omit”,表示由于多重共线性被自动省略了。
  • 如果要额外控制其他固定效应,必须要在控制变量中加入该效应,比如我需要额外控制年份、地区,命令应当誊写为:
xtreg invest mvalue kstock i.province i.year, fe
  • 1

6 怎么检验使用固定效应模型还是混合模型

在这里插入图片描述
当固定效应存在时用固定效应模型
那么怎么判断固定效应存在→F检验

6.1 通过F检验判断

6.1.1 单因素效应直接看P值

在固定效应模型结果的最下方,有F值的大小和P值,如P=0.0000<0.05,拒绝原假设→适用固定效应模型
在这里插入图片描述

6.1.2 双因素效应

在这里插入图片描述
双因素效应结果最下方的P值代表个体效应,仅能用于判断是否存在个体效应
怎么检验时间效应呢?使用stata命令testparm,检验所有的时间虚拟变量系数是否都为0。如下,P=0.0742>0.05,不能拒绝原假设,即不存在时间效应。

testparm i.year  //检验所有的时间虚拟变量系数是否都为0
  • 1

在这里插入图片描述

本文参考:

  1. 【Stata笔记01期】固定效应模型与Stata实现 https://mp.weixin.qq.com/s/CW766iT3XhwZGj8SH6d-2Q
    https://mp.weixin.qq.com/s/fFI0RX9zoYWp7Elku-tXPA
  2. 【Stata笔记02期】估计固定效应,用reg、xtreg、areg还是reghdfe?
    面板数据6 固定效应:LSDV、固定效应原理和Stata指令、F检验(视频 https://www.bilibili.com/video/BV1H3411u7YV
  3. CSDN博主「a useful man」的原创文章。原文链接:https://blog.csdn.net/sinat_23971513/article/details/125957018
本文内容由网友自发贡献,转载请注明出处:https://www.wpsshop.cn/w/2023面试高手/article/detail/299406
推荐阅读
相关标签
  

闽ICP备14008679号