You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在R中高效迭代拟合、诊断、修改并整理线性模型

R批量拟合与管理多模型工作流实现方案

1. 批量拟合模型并统一存储

先定义模型参数清单(响应变量、预测变量、分布族、数据集),用purrr工具批量拟合,将模型及关键信息存入数据框,方便后续统一访问。

示例代码

library(tidyverse)
library(lme4) # 支持广义线性/混合模型,替换为基础stats包可拟合普通线性模型
library(DHARMa)

# 构造模型参数表,支持不同响应变量、预测变量、分布族和数据集
model_specs <- tibble(
  response = c("mpg", "disp", "hp"),
  predictors = c("wt + cyl", "wt + hp", "cyl + am"),
  family = c("gaussian", "gaussian", "poisson"),
  data = list(mtcars, mtcars, mtcars) # 示例统一用mtcars,实际可替换为不同数据集
)

# 批量拟合模型,同步生成公式、AIC等信息
model_results <- model_specs %>%
  mutate(
    formula = map2_chr(response, predictors, ~paste(.x, "~", .y)),
    model = pmap(list(formula, data, family), 
                 ~do.call(glm, list(formula = as.formula(..1), data = ..2, family = ..3))),
    aic = map_dbl(model, AIC)
  )

快速访问模型信息

  • 查看所有模型核心指标:model_results %>% select(response, formula, aic)
  • 提取单个模型对象:model_results$model[[1]]

2. 用DHARMa批量生成诊断图

遍历模型列表,批量生成DHARMa残差诊断图,可选择直接展示或保存到本地文件。

示例代码

# 批量生成诊断图并保存为图片文件
walk2(model_results$model, model_results$response, function(mod, resp) {
  sim_resid <- simulateResiduals(mod)
  # 保存到本地
  png(paste0("dharma_diagnostic_", resp, ".png"), width = 800, height = 600)
  plot(sim_resid, main = paste("Residual Diagnostic: ", resp))
  dev.off()
  
  # 若需直接在控制台展示,删除png()和dev.off()两行即可
})

3. 模型修改与更新

针对需要调整的模型,直接修改参数表中的对应字段,重新拟合后更新结果数据框。

示例代码

# 修改第二个模型的预测变量,新增qsec作为预测项
model_results <- model_results %>%
  mutate(
    predictors = case_when(
      response == "disp" ~ "wt + hp + qsec",
      TRUE ~ predictors
    ),
    formula = map2_chr(response, predictors, ~paste(.x, "~", .y)),
    # 仅重新拟合修改后的模型
    model = if_else(response == "disp",
                    list(glm(as.formula(formula[response == "disp"]), 
                             data = data[[2]], family = family[2])),
                    model),
    aic = map_dbl(model, AIC)
  )

# 验证修改后的模型
summary(model_results$model[[2]])

补充说明

  • 若需拟合混合效应模型,将glm替换为lmer/glmer,同步调整family参数对应分布即可
  • 可扩展参数表字段,比如添加随机效应项、权重参数等,适配更多模型类型
  • 基于model_results中的AIC、BIC等指标,可快速批量筛选最优模型

内容的提问来源于stack exchange,提问作者stb

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.19 21:15:20