【发布时间】: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 和预测值非常感谢!
【问题讨论】: