如何使用fixest::feols进行固定效应回归时获取截距项?
如何在fixest::feols执行固定效应回归时获取截距项?
用fixest::feols跑固定效应回归时,默认输出里看不到截距项——这是因为固定效应模型会对变量做组内 demean 处理,截距项直接被各组的固定效应吸收了。而Stata的reghdfe会显示的_cons是总体均值截距,你可以按以下方法在R里算出这个值:
第一步:先跑回归并保存模型
先执行回归,把模型存下来方便后续计算:
library(fixest) mod <- feols(Sepal.Length ~ Sepal.Width | Species, iris)
默认输出只会显示解释变量的系数:
Estimate Std. Error t value Pr(>|t|) Sepal.Width 0.803561 0.071397 11.2548 0.0078023 **
第二步:计算对应Stata的_cons(总体均值截距)
Stata里的_cons本质是响应变量的总体均值,减去解释变量系数乘解释变量均值,再减去固定效应的均值。直接按这个逻辑计算即可:
# 计算Sepal.Length的总体均值 y_mean <- mean(iris$Sepal.Length) # 计算系数×Sepal.Width的均值 x_term <- coef(mod) * mean(iris$Sepal.Width) # 提取固定效应并计算均值 fe_mean <- mean(fixef(mod)) # 得到总体截距 cons <- y_mean - x_term - fe_mean cons # 结果为3.38658,和Stata的_cons完全一致
对比Stata的reghdfe结果
在Stata中执行相同逻辑的回归,会直接输出_cons:
ssc install reghdfe use http://www.stata-press.com/data/r17/iris, clear reghdfe seplen sepwid , ab(Species) cl(Species)
输出结果:
| Robust seplen | Coef. Std. Err. t P>|t| [95% Conf. Interval] -------------+---------------------------------------------------------------- sepwid | .8035609 .0713974 11.25 0.008 .4963625 1.110759 _cons | 3.38658 .2182857 15.51 0.004 2.447372 4.325788
额外:获取各组的截距项
如果需要每个物种对应的组内截距,直接用fixef()提取即可:
fixef(mod)
运行后会显示每个Species分组对应的截距值。
内容的提问来源于stack exchange,提问作者Macaulay
相关产品推荐
相关产品推荐

