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

R语言数据框按Date分组做线性回归后如何调用模型计算预测值

R分组回归后调用列表列模型计算预测值的修正方案

错误原因

  • 代码中的mod是列表列,每个元素存储对应日期分组的回归模型,mutate默认的向量化操作无法直接遍历列表列元素调用predict函数
  • predict.lm的newdata参数要求传入数据框格式,直接传入Rate向量不符合参数要求

修正代码

方案1:基于rowwise逐行处理(适配原有代码逻辑)

library(dplyr)

test = data.frame(Date = c(as.Date("2010-10-10"), as.Date("2010-10-10"), as.Date("2010-12-10"), as.Date("2010-12-10")), Rate = c(0.1, 0.15, 0.16, 0.2), FCF = c(100,200,150,250))

output = test %>% 
  group_by(Date) %>% 
  do(mod = lm(FCF ~ Rate, data = .)) %>% 
  left_join(test, ., by = "Date") %>%
  # 启用逐行运算模式
  rowwise() %>%
  mutate(Value = predict(mod, newdata = data.frame(Rate = Rate))) %>%
  ungroup()

方案2:嵌套数据框方案(更符合tidyverse设计规范,效率更高)

library(dplyr)
library(tidyr)
library(purrr)

test = data.frame(Date = c(as.Date("2010-10-10"), as.Date("2010-10-10"), as.Date("2010-12-10"), as.Date("2010-12-10")), Rate = c(0.1, 0.15, 0.16, 0.2), FCF = c(100,200,150,250))

output = test %>%
  nest(data = -Date) %>%
  mutate(
    mod = map(data, ~lm(FCF ~ Rate, data = .x)),
    Value = map2(mod, data, ~predict(.x, newdata = .y))
  ) %>%
  unnest(c(data, Value))

两种方案运行后都可以得到每行数据对应分组回归模型的预测值。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.21 21:24:08