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

如何在R中遍历dataframe按分组运行多元回归?

R 分组多元回归实现方案

两种常用实现方式如下,核心逻辑均为先按指定字段拆分数据集,再对每个子集迭代拟合回归,无需手动编写for循环处理分组逻辑:

方案1:tidyverse 生态实现(代码简洁,结果易规整)

该方案使用purrr包的map函数实现迭代(本质是优化版的lapply),配合broom包可直接输出规整的回归结果数据框:

# 加载依赖包
library(tidyverse)
library(broom)

# 分组拟合回归
reg_results <- your_data %>%
  group_by(Category, Zone, Season) %>%
  nest() %>%
  mutate(
    # 对每个分组拟合多元回归
    reg_model = map(data, ~ lm(Value ~ P1 + P2 + P3, data = .x)),
    # 提取回归系数、p值、标准误等指标
    coef_info = map(reg_model, tidy),
    # 提取R方、F值、残差自由度等模型拟合指标
    fit_info = map(reg_model, glance)
  )

# 展开为系数结果数据框
coef_df <- reg_results %>% unnest(coef_info)
# 展开为拟合指标数据框
fit_df <- reg_results %>% unnest(fit_info)

方案2:base R 原生lapply实现(无需额外安装依赖包)

# 按三个分组字段拆分数据集为列表,drop=TRUE自动过滤不存在的空分组
group_list <- split(your_data, list(your_data$Category, your_data$Zone, your_data$Season), drop = TRUE)

# 迭代每个分组拟合回归
model_list <- lapply(group_list, function(sub_df) {
  lm(Value ~ P1 + P2 + P3, data = sub_df)
})

# 查看指定分组的回归结果示例
summary(model_list[["Blue.D1.Winter"]])

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 06:12:03