如何将fixest包femlm的估计结果接入texreg生成LaTeX对比表?
使用texreg整合fixest::femlm估计结果的解决方案
要将fixest包的femlm模型结果与其他模型(如estimatr的lm_robust)一起通过texreg生成LaTeX表格,你需要为femlm对象编写并注册自定义的extract方法,步骤如下:
1. 加载必要包
确保提前加载fixest和texreg:
library(fixest) library(texreg)
2. 编写自定义extract函数
这个函数会从femlm对象中提取texreg所需的关键统计量(系数、标准误、p值、拟合优度、观测数等),还可选择性加入固定效应信息:
extract.femlm <- function(model, include.adjr2 = TRUE, include.nobs = TRUE, include.fixef = TRUE, ...) { # 提取系数、标准误和p值 coefs <- coef(model) se <- sqrt(diag(vcov(model))) pvalues <- 2 * pnorm(abs(coefs / se), lower.tail = FALSE) # 拟合优度指标 r2 <- model$r2 adjr2 <- model$r2.adj nobs <- model$nobs # 构建基础结果列表 result <- list( coefficients = coefs, se = se, pvalues = pvalues, r.squared = r2, adj.r.squared = adjr2, nobs = nobs ) # 可选:加入固定效应信息 if (include.fixef) { fixef_vars <- model$fixef_vars if (length(fixef_vars) > 0) { result$additional <- list( "固定效应" = paste(fixef_vars, collapse = ", ") ) } } # 根据参数移除不需要的指标 if (!include.adjr2) result$adj.r.squared <- NULL if (!include.nobs) result$nobs <- NULL return(result) }
3. 注册extract方法
和你处理lm_robust的方式类似,通过setMethod将自定义函数注册为femlm对象的提取方法:
setMethod("extract", signature = "femlm", definition = extract.femlm)
4. 测试使用
现在可以将femlm模型与其他模型一起传入texreg生成表格:
# 示例数据与模型 data(iris) iris$Species <- factor(iris$Species) # 拟合femlm模型(带固定效应) fe_model <- femlm(Sepal.Length ~ Sepal.Width + Petal.Length | Species, data = iris) # 拟合lm_robust模型(来自estimatr) library(estimatr) robust_model <- lm_robust(Sepal.Length ~ Sepal.Width + Petal.Length, data = iris) # 生成LaTeX表格 texreg(list(robust_model, fe_model), caption = "模型结果对比", label = "tab:model_compare")
自定义调整建议
- 如果不需要固定效应信息,调用
texreg时可添加参数include.fixef = FALSE,或修改extract.femlm函数默认值。 - 若需加入其他统计量(如聚类标准误说明、F统计量),可在函数中提取
model对象的对应属性(如model$vcov_type获取标准误类型)并添加到result$additional列表中。 - 若模型使用了聚类标准误,
vcov(model)会自动返回正确的方差协方差矩阵,无需额外修改函数。
内容的提问来源于stack exchange,提问作者Grillo
相关产品推荐
相关产品推荐

