【问题标题】:Adding predictions to tidy models and plotting将预测添加到整洁的模型并绘图
【发布时间】:2021-06-12 23:23:09
【问题描述】:

我的目标很简单,它是预测(使用置信区间)来自许多线性模型的未来值,然后用 ggplot2 将它们绘制成对真实数据的扩展。

我有一个包含四个变量的数据集:面积(因子)、日期、系列(标称;A、B 等)和值(连续)。我使用 broom、tidyr 和 purrr 估计了每个区域系列组合的简单线性模型:

  group_by(area, series) %>%
  nest()

le_model<-function(df){
  lm(value ~ date, data=df)
}


models <-by_area_series %>% 
  mutate(leGrad=map(data, le_model))


models<-models%>%
  mutate(
    tidy_le = map(leGrad, broom::tidy),
    glance_le = map(leGrad, broom::glance),
    augment_le = map(leGrad, broom::augment),
    rsq_le = glance_le %>% map_dbl("r.squared"),
  )

我在现有数据范围内有新的日期,例如 new.dates=data.frame(date=c((Sys.Date()+7), (Sys.Date()+10), (Sys.Date()+14)))

我希望在每个新日期为每个模型预测相应的值,并将数据和预测绘制在同一个图上(按区域包裹的面),所以我需要将预测及其 SE 放回相同的数据集(我想)。到目前为止,我刚刚添加了这个:

  predict((lm(value~date, data=df)), newdata=new.dates, se.fit=T)
}
preds<-by_area_series %>%
  mutate(preds = map(data, pred))

我一直在摆弄像 preds[4][[1]][[1]]$fit 这样的列表符号,但我无法找到一个在一次调用中适用于所有模型的简洁解决方案。

任何帮助 a) 将预测值及其 SE 整齐地放入原始数据中,然后 b) 使用 ggplot2 在同一图上绘制 lm 和预测值非常感谢!

【问题讨论】:

    标签: r tidyr purrr lm broom


    【解决方案1】:

    如果没有 reprex,就很难展示可复制的解决方案。但是您应该能够使用predict,就像您从models 对象而不是by_area_series 数据中使用整洁、浏览、扩充一样。在此处使用选项获取预测值和 se:https://parsnip.tidymodels.org/reference/predict.model_fit.html

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-04-23
      • 2018-09-30
      • 2017-01-24
      • 1970-01-01
      • 2022-11-25
      • 2021-11-03
      • 1970-01-01
      相关资源
      最近更新 更多