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

在R语言中用group_by生成分组回归预测值时遇报错的技术问询

问题解决:按分组生成回归预测值

错误原因分析

你的代码存在三个核心问题:

  1. group_by()后直接调用glm()不符合dplyr分组逻辑,glm不会自动识别分组,需要用分组映射类函数处理
  2. glm的data参数指定了全局的df,没有使用分组后的子数据集,导致模型未按city分组拟合
  3. mutate中predict(glm)的调用方式错误,未传入正确的模型对象和对应分组的数据

正确实现方法

方法1:使用do()函数(传统分组建模方式)

df_1 <- df %>%
  group_by(city) %>%
  do({
    # 对当前分组的数据集拟合模型
    model <- glm(death ~ gender + age, data = ., family = "poisson")
    # 给当前分组数据添加预测值列
    mutate(., death_p = predict(model, newdata = .))
  }) %>%
  ungroup()

方法2:使用nest() + map()(现代tidyverse推荐方式)

这种方式更清晰,适合复杂分组建模场景:

library(purrr) # 需要加载purrr包,tidyverse套件已包含

df_1 <- df %>%
  group_by(city) %>%
  # 将每个分组的数据集打包为列表列
  nest() %>%
  # 对每个分组数据拟合glm模型
  mutate(model = map(data, ~glm(death ~ gender + age, data = ., family = "poisson"))) %>%
  # 用对应分组的模型对该组数据做预测
  mutate(death_p = map2(data, model, ~predict(.y, newdata = .x))) %>%
  # 展开列表列,恢复原始行结构
  unnest(c(data, death_p)) %>%
  ungroup()

额外提示

注意:你的因变量death是0-1二分类变量,通常更适合使用family = "binomial"(逻辑回归)来建模,泊松回归更适合计数型因变量。如果业务场景确实需要泊松回归,可以忽略此提示。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 22:42:16