作者:秦利宾 (厦门大学)
编者按:本文整理自「Sergio Correia: reghdfe | Frequently Asked Questions」,特此致谢!
目录
1. 为什么会报告 fixed effect nested within cluster?
2. 四个 ,选择哪个?
3. 在结果报告中,如何自动添加固定效应?
4. 相关推文
当变量同时出现在 vce(cluster ...)
和 absorb(...)
,或者 cluster variable 比 fixed effect variable 范围更大 (例如,聚类到年份和控制月度固定效应) 时,reghdfe
命令就会报告 FE nested within cluster...
。
reghdfe
命令在计算 VCE 矩阵时,它是通过对近似 VCE 矩阵进行小样本调整得到。这个调整依赖于被模型吸收的自由度,或者可以说是由于控制固定效应损失的自由度。在一般情况下,损失的自由度是和固定效应的数量对应的,但是当固定效应变量也是聚类变量 (或者聚类变量范围更大) 时,我们不计算由于固定效应损失的自由度。
实际上,由于 cluster–robust standard errors 已经在相同水平上就行了调整,上述做法可以避免对固定效应的双重惩罚。当然,这并不是 reghdfe
命令独有的,xtreg
和 xtivreg2
命令同样适用。
例如,当控制了 turn 和 trunk 固定效应,以及在聚类到 turn 时,我们在计算自由度时,并不考虑由于 turn 固定效应损失的自由度。
. sysuse auto.dta, clear
. reghdfe price weight length, absorb(turn trunk) vce(cluster turn)
(output omitted)
Absorbed degrees of freedom:
-----------------------------------------------------+
Absorbed FE | Categories - Redundant = Num. Coefs |
-------------+---------------------------------------|
turn | 13 13 0 *|
trunk | 13 0 13 |
-----------------------------------------------------+
* = FE nested within cluster; treated as redundant for DoF computation
在回归分析中,reghdfe
会计算四个 ,分别为 、、、以及 。前两者的主要问题是,在固定效应较多的模型中,其值大小往往由固定效应所驱动,与我们感兴趣的变量相关性较小。一个解决办法是,利用剔除固定效应的变量进行回归,此时计算的 即为 。
总之,如果想获取感兴趣变量的 ,或者说不是由固定效应所驱动的 ,那么我们应该使用更加合理的 。关于 和 的区别,以往教材有过详细介绍,这里不再赘述。
reghdfe
附带了一个比较神秘的命令 estfe
,该命令允许固定效应以 Frim FE = Yes/NO 的形式呈现在最终的回归结果中。例如,对于以下命令语句:
estfe m*, labels(turn 'Turn FE' trunk 'Trunk FE' foreign 'Foreign FE')
其作用是,将 turn、trunk、foreign 等固定效应,以 Turn FE=Yes/No、Trunk FE=Yes/No、Foreign FE=Yes/No 等方式呈现在回归结果中。在执行完上述命令之后,我们仅需在相关输出命令中加上 indicate(r(indicate_fe))
语句即可。当然,我们也可以通过命令语句 indicate('Length Controls=length')
,使得 length 变量以 Length Controls=Yes/No 的方式呈现在结果中。
* Setup
sysuse auto, clear
* Run and store regressions
reghdfe price weight length, a(turn)
estimates store m1
reghdfe price weight length, a(turn trunk)
estimates store m2
reghdfe price weight length, a(turn foreign)
estimates store m3
* Prepare estimates for -estout-
estfe m*, labels(turn 'Turn FE' trunk 'Trunk FE' foreign 'Foreign FE')
return list
* Run estout/esttab/reg2docx
// esttab m*, indicate('Length Controls=length' `r(indicate_fe)')
* Return stored estimates to their previous state
// estfe m*, restore
reg2docx m1 m2 m3 using tmp.docx, replace indicate('Length Controls=length' `r(indicate_fe)')
esttab
输出结果:
------------------------------------------------------------
(1) (2) (3)
price price price
------------------------------------------------------------
weight 5.703*** 5.688*** 5.741***
(5.17) (4.37) (5.44)
_cons -3473.3 -2627.7 -1847.5
(-0.61) (-0.30) (-0.34)
Length Con~s Yes Yes Yes
Turn FE Yes Yes Yes
Trunk FE No Yes No
Foreign FE No No Yes
------------------------------------------------------------
N 70 65 70
------------------------------------------------------------
t statistics in parentheses
* p<0.05, ** p<0.01, *** p<0.001
reg2docx
输出结果:
Note:产生如下推文列表的 Stata 命令为:
lianxh reghdfe 结果输出, m
安装最新版lianxh
命令:
ssc install lianxh, replace
联系客服