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

如何在R语言中便捷构建并检验多个回归模型

批量构建线性模型并完成检验的便捷方法

当然有啦!完全不用手动逐个编写重复代码,利用R的列表遍历工具就能高效完成批量构建模型和后续检验的工作,下面是具体实现步骤:

1. 批量构建线性模型

首先,我们可以把需要作为响应变量的列名存成一个向量,然后用lapply(或者purrr包的map函数)遍历这个向量,自动生成所有需要的线性模型:

# 先定义需要作为响应变量的列名
response_vars <- c("A", "B", "C")

# 用lapply批量构建模型
models <- lapply(response_vars, function(var) {
  # 动态拼接公式:响应变量 ~ X
  lm(formula = paste(var, "~ X"), data = modData)
})

# 给模型列表命名,方便后续快速定位
names(models) <- response_vars

这样你就得到了一个包含所有模型的列表,比如models$A就是原来的md1,models$B对应md2,非常直观。如果你习惯用purrr包,代码会更简洁:

library(purrr)

models_purrr <- map(response_vars, ~ lm(paste(.x, "~ X"), data = modData)) %>%
  set_names(response_vars)

2. 批量执行Shapiro残差正态性检验

有了模型列表后,同样用遍历工具批量运行Shapiro检验:

# 批量生成Shapiro检验结果
shapiro_results <- lapply(models, function(model) {
  shapiro.test(residuals(model))
})

# 查看单个模型的检验结果,比如A模型
shapiro_results$A

用purrr的写法是:

shapiro_purrr <- map(models_purrr, ~ shapiro.test(residuals(.x)))

3. 批量执行Box-Cox变换检验

Box-Cox检验需要用到MASS包的boxcox()函数,同样可以批量处理,并且自动生成每个模型的检验图:

library(MASS)

# 批量运行Box-Cox检验并绘图
boxcox_results <- lapply(models, function(model) {
  boxcox(model, plotit = TRUE)
})

执行这段代码后,R会依次弹出每个模型的Box-Cox检验图,同时检验结果会被存在boxcox_results列表里方便后续查看。用purrr的写法类似:

boxcox_purrr <- map(models_purrr, ~ boxcox(.x, plotit = TRUE))

这种方法最大的好处是扩展性极强——如果后续需要增加更多响应变量,只需要修改response_vars向量即可,完全不用重复编写模型构建和检验的代码!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 06:40:37