在R中用lfe包felm函数获取固定效应回归截距项
用lfe包felm函数获取面板固定效应回归的截距项 & 关于summary输出的说明
嘿,刚好碰到过类似的问题,我来给你拆解一下:
一、怎么获取截距项?
felm默认是不包含截距的,而且当模型里加入固定效应时,截距还会和固定效应共线导致无法直接估计,得分两种情况处理:
1. 模型不含固定效应:直接手动加截距
如果你只是做普通的OLS回归(没有固定效应项),只需要在外生变量部分加上+1,就能像lm一样得到截距:
# 加载包 library(lfe) library(data.table) # 构造示例数据 set.seed(123) dt <- data.table( id = rep(1:10, each = 5), year = rep(2018:2022, 10), x = rnorm(50), y = 2 + 0.5*x + rnorm(50) ) # 带截距的普通回归 fit_simple <- felm(y ~ x + 1, data = dt) # 提取截距 coef(fit_simple)["(Intercept)"]
这时候summary输出里就会显示(Intercept)的估计值。
2. 模型含固定效应:通过固定效应计算总体截距
当你加入个体/时间固定效应时,总体截距会和固定效应共线,felm会自动剔除它。这时候要得到总体截距,得借助getfe()函数提取固定效应,再计算均值:
# 带个体固定效应的回归 fit_fe <- felm(y ~ x | id, data = dt) # 提取个体固定效应的估计值 fe_estimates <- getfe(fit_fe) # 计算固定效应的均值,这就是总体截距 overall_intercept <- mean(fe_estimates$effect) print(overall_intercept)
或者你可以用预测值验证:当x=0时,每个个体的预测值就是其固定效应,取均值就是总体截距:
pred <- predict(fit_fe, newdata = data.table(id = unique(dt$id), x = 0)) mean(pred)
二、关于summary()处理felm对象的说明
你看到的文档里那句话意思是:虽然felm是专门处理高维固定效应的工具,但它的summary()输出在自由度、R²这些统计量的计算逻辑上,和我们熟悉的lm完全一致。
举个例子:lm计算残差自由度是用样本量减去估计的系数个数,felm也是这么做的——哪怕你控制了成百上千个固定效应,它在summary里不会把固定效应的个数从自由度里扣除,而是保持和lm相同的计算方式,这样你不用重新适应新的统计量解读逻辑,直接用熟悉的方式理解结果就行。
内容的提问来源于stack exchange,提问作者Sholom
相关产品推荐
相关产品推荐

