如何用lapply批量运行lfe包中的felm多结果变量模型?
批量运行lfe::felm模型的实现方法
完全可行,利用lapply配合自定义函数就能轻松实现批量运行,具体代码结构如下:
步骤1:定义结果变量列表
先把需要循环的结果变量名称存成一个字符向量:
outcomes <- c("outcome1", "outcome2", "outcome3") # 可根据实际需求添加更多变量
步骤2:编写批量运行模型的函数
写一个接收结果变量名的函数,动态生成felm所需的公式并运行模型:
library(lfe) run_felm_model <- function(outcome) { # 动态构建felm的公式格式:结果变量 ~ 协变量 | 固定效应 | 工具变量(此处为0) | 聚类变量 model_formula <- reformulate( termlabels = c("mainx + cov1 + cov2 + cov3", "fe", "0", "clustercov"), response = outcome, sep = " | " ) # 运行模型并返回结果 felm(formula = model_formula, data = df) }
步骤3:批量运行所有模型
用lapply遍历结果变量列表,得到一个包含所有模型结果的列表:
# 批量运行模型 models <- lapply(outcomes, run_felm_model) # 给模型列表命名,方便后续按结果变量名调用 names(models) <- outcomes
后续使用示例
- 调用单个模型:
models[["outcome1"]] - 批量绘制残差图:
lapply(models, function(mod) { plot(residuals(mod), main = paste("残差图:", names(mod))) })
内容的提问来源于stack exchange,提问作者flâneur
相关产品推荐
相关产品推荐

