如何对R中lfe包的felm对象进行两回归模型的F检验?
解决
lfe包felm模型的模型比较问题 我完全懂你碰到的这个痛点——用lfe的felm()处理带大量固定效应的回归后,平时lm模型用得顺手的anova()直接失效,手动编程又太麻烦。其实lfe包本身和一些配套工具已经提供了现成的解决方案,不用自己从头写:
1. 用lfe自带的anova.felm方法直接比较嵌套模型
因为你的两个模型是嵌套关系(model1是model2去掉X2、X3后的简化版),lfe包专门实现了针对felm对象的anova方法,直接调用就行:
library(lfe) # 先拟合你的两个模型 model1 <- felm(Y ~ X1 | fixedeffects, data = data) model2 <- felm(Y ~ X1 + X2 + X3 | fixedeffects, data = data) # 直接比较两个嵌套模型 anova(model1, model2)
这个输出会给出似然比检验(LR test)的结果,帮你判断加入X2、X3后模型是否显著更优。
2. 用waldtest()做联合显著性检验
如果更关注“X2和X3是否联合显著”(这和嵌套模型检验是等价的),可以用lfe包的waldtest()函数直接检验model2中这两个变量的联合效应:
# 检验model2中X2和X3的联合显著性 waldtest(model2, c("X2", "X3"))
这个方法本质上和anova检验的结论一致,只是输出形式更聚焦于变量的显著性。
3. 用AIC/BIC进行模型选择
如果想从信息准则的角度比较模型,felm对象也支持标准的AIC()和BIC()函数,直接传入多个模型就能对比:
# 对比两个模型的AIC和BIC AIC(model1, model2) BIC(model1, model2)
数值更小的模型通常更优,这个方法适合非嵌套模型的比较,但对你的嵌套模型同样适用。
为什么常规anova()不行?因为felm对象的内部结构和lm差异很大,常规方法没有针对它做适配,但lfe包已经把这些常用的模型比较功能都封装好了,不用自己造轮子~
内容的提问来源于stack exchange,提问作者wolfsatthedoor
相关产品推荐
相关产品推荐

