R语言迭代替换因变量建模输出broom::glance结果的实现方法
R实现批量线性回归并汇总结果
我们可以通过purrr包的迭代功能替代重复的复制粘贴操作,具体实现步骤如下:
- 加载依赖包
library(tidyverse) library(broom)
- 预处理数据,提前将v2、v3转为因子类型,避免迭代中重复处理
df <- df %>% mutate(across(c(v2, v3), as.factor))
- 批量拟合模型并汇总结果
# 定义所有待拟合的因变量名称 dv_list <- paste0("q", 1:5) # 迭代拟合每个模型,自动汇总结果 model_result <- map_dfr(dv_list, function(cur_dv) { # 生成自变量列表:排除id列和当前的因变量,避免因变量同时进入自变量 iv_list <- setdiff(names(df), c("id", cur_dv)) # 构建当前模型的回归公式 cur_formula <- reformulate(termlabels = iv_list, response = cur_dv) # 拟合模型+提取统计量+标注当前因变量 lm(cur_formula, data = df) %>% glance() %>% mutate(dv = cur_dv) })
最终得到的model_result就是包含5行统计结果的tibble,其中dv列标注了每行对应的因变量名称。
如果偏好更简洁的管道式写法,可以合并为以下代码:
model_result <- paste0("q", 1:5) %>% map_dfr(~ lm(reformulate(setdiff(names(df), c("id", .x)), response = .x), data = df) %>% glance() %>% mutate(dv = .x))
内容的提问来源于stack exchange,提问作者C.Robin
相关产品推荐
相关产品推荐

