如何批量运行单变量逻辑回归并整理结果为DataFrame?
批量单变量回归与结果整合实现方案
一、批量运行单变量回归
无需手动逐个定义模型,通过遍历自变量列表自动生成所有单变量模型:
首先加载所需工具包(补充broom用于提取模型结果,dplyr用于数据处理):
library(AICcmodavg) library(ggplot2) library(tidyr) library(dplyr) library(broom) # 加载示例数据 data(diamonds) # 注意:如果是logistic回归,因变量需为二分类变量,示例中用price作为连续变量仅作演示,实际logistic回归需改为类似`glm(vs ~ mpg, data=mtcars, family=binomial())`的写法
定义自变量列表,批量生成模型:
# 指定需要进行单变量回归的自变量 predictors <- c("cut", "depth", "clarity", "carat", "color") # 批量生成模型列表并命名 model_list <- lapply(predictors, function(x) { formula <- as.formula(paste("price ~", x)) glm(formula, data = diamonds) }) names(model_list) <- predictors
二、提取回归系数、SE、p值并整理为DataFrame
用broom::tidy()批量提取每个模型的关键统计量,合并为统一表格:
# 提取所有模型的系数信息 coef_table <- map_dfr(model_list, tidy, .id = "Predictor") # 过滤截距项(仅保留自变量的结果) coef_table <- coef_table %>% filter(term != "(Intercept)") %>% select(Predictor, term, estimate, std.error, p.value) %>% rename(Estimate = estimate, `Std. Error` = std.error, `p-value` = p.value)
三、扩展AIC表格并整合所有指标
先生成AICc模型选择表格,再与系数统计表格合并,得到包含模型选择指标和回归显著性的完整结果:
# 生成AICc表格并整理列名 aic_table <- aictab(cand.set = model_list, modnames = names(model_list)) %>% as.data.frame() %>% select(Modnames, Delta_AICc, AICcWt, LL) %>% rename(Predictor = Modnames, `Delta AICc` = Delta_AICc, `AICc Weight` = AICcWt, LogLikelihood = LL) # 合并AIC信息与系数统计量 final_table <- left_join(aic_table, coef_table, by = "Predictor") # 查看最终整合结果 print(final_table)
额外说明
- 若需执行标准logistic回归,需在
glm()函数中添加family = binomial()参数; broom包的tidy()函数支持绝大多数统计模型的结果标准化提取,是批量处理模型输出的高效工具;- 整合后的表格同时包含模型拟合优度(AIC相关)和变量显著性(系数、p值),便于一次性分析所有单变量模型的表现。
内容的提问来源于stack exchange,提问作者sscoresby
相关产品推荐
相关产品推荐

