R:超快速计算固定效应
STATA中常用的处理面板模型的命令有很多,一般在大数据集时为了追求速度,会考虑使用reg2hdfe命令。但是在对工企、海关这样大数据集跑模型时,仍然非常非常慢。我使用的是Stata-MP-15,基本上仅加入两个固定效应的模型,电脑要跑将近30秒,如果多再加入几个固定效应,或者再加入联合固定效应,速度基本上要到好几分钟。更夸张的是,如果改成跑panel-iv,即用ivreg2hdfe命令,上面的时间还要double,10分钟出一个是常有的事。这在需要跑多个回归时,简直让人难以忍受。如果你使用的是SE版,上述时间大概还要继续加倍,经常一个模型开始跑了,就可以随手打开平板上的电视剧了。
如果是做DID,跑安慰剂检验的时候,5分钟跑一个模型,然后循环500次。。。然后不行,我得再试试另一种模型设定。。ok,又是2500分钟。如果和我一样面临这样问题的时候,请果断换工具吧。
在R中,过往一般会使用PLM包来做面板,不出意料,比reg2hdfe还慢,尤其是换标准误的时候,每次还需要重新掉用lmtest包再重新跑一次,plm对付小数据集还行,对大数据集无疑是噩梦。
在此介绍一个R的较新的计算固定效应模型的package:fixest,看名字就很快,Fast Fixed-Effects Estimation固定效应,底层是C++,运算速度可以用极速来形容。一般本都是秒出结果,敲下回车的瞬间即能看到结果固定效应,即便是reg2hdfe最慢的情形,IVpanel+四个联合固定效应+四个联合固定效应组合的标准误,也仅仅跑了35秒。
最后fixest自带多线程,无与伦比。
记录一些常见用法备查:
library(fixest)
# 四个fe
fe_mode = feols(y ~ x | fe1+fe2+fe3+fe4, data)
# The clustering can be done on one (se="cluster"), two (se="twoway")
# three (se="threeway") or up to four (se="fourway") variables
summary(feols, se = "fourway")
# 也可以
fe_mode = feols(y ~ x | fe1+fe2+fe3+fe4, data,cluster = "指定fe")
fe_mode = feols(y ~ x | fe1+fe2+fe3+fe4, data,cluster = ~fe1+fe2+fe3+fe4) # 带公式时使用~
# 联合固定效应 Combining several fixed-effects (fe1^fe2^fe3...)
fe_combin = feols(y ~ x | fe1^fe2, data)
fe_combin = feols(y~x | fe1^fe2, data, cluster = ~fe1^fe2)
# Varying slopes (fe[x]),假设控制变量x2随时间变化而变化
fe_var = feols(y ~ x | fe[x2], data)
# panel-iv与查看一阶段
fe_iv <- feols(y ~ 外生控制变量 |fe1+fe2+..| 内生变量 ~ IV, data, cluster = )
fitstat(fe_iv, ~ ivf1 + ivwald1 + ivf2 + ivwald2, cluster = )
# 输出结果
# 该包无法和stargazer联用,但是该包自带了输出的函数,可以输出LaTex格式表格
etable(fe_iv, tex = TRUE)
# Extracting the fixed-effects coefficients,比如看年度固定效应系数,城市固定效应系数
fixedEffects = fixef(fe_iv)
summary(fixedEffects)
plot(fixedEffects)
# Base DID 和 Staggered difference-in-differences
限时特惠:本站每日持续更新海量设计资源,一年会员只需29.9元,全站资源免费下载
站长微信:ziyuanshu688