创建预测与观察的置信区间图(confidence graph)

您好,感谢您的时间和考虑,

您好,感谢您的时间和考虑,

我想用 ggplot 重新创建这个图表。顶部的蓝点是我拟合模型na_lmod的预测值,较低的红色值是多年来一个城市log_trip的观测值。

你能帮我结合这三个功能 ggplot(平滑 / 点),预测和某种 dplyr 过滤器或东西吗?

这段代码给了我想要的感兴趣的城市的log_tripyear,但我很难把它绘制成图表。filter(transit, msaid == "Denver")[,c("log_trip", "year")]

enter image description here

期望输出:

enter image description here

0

这里有一个例子。首先,我将生成一些数据并估计模型。

library(tidyverse)
set.seed(123)
dat <- expand.grid(city = LETTERS[1:10], 
                   year = 2006:2018)
dat$log_trip <- log(abs(dat$year * .05 + rnorm(nrow(dat), 0, 100)))
dat$year <- as.factor(dat$year)
mod <- lm(log_trip ~ year, data=dat)

接下来,我们需要制作一些用于预测的数据。对于此模型,由于year是其中唯一的变量,因此此假设数据中只有year。如果模型中有其他变量,则需要将它们保持在某个(大概是中心)值不变,例如平均值。

pred_dat <- data.frame(year = factor(2006:2018))

然后,我们可以生成具有置信度和预测区间的预测:

preds <- predict(mod, newdata=pred_dat, interval="confidence")
preds2 <- predict(mod, newdata=pred_dat, interval="prediction")
preds <- as.data.frame(preds)

接下来,我们将预测间隔放入press数据帧中。

preds$lwr_pred <- preds2[,2]
preds$upr_pred <- preds2[,3]
pred_dat <- bind_cols(pred_dat, preds)

接下来,我们将预测数据和来自一个城市的观测数据(在本例中为“A”)连接起来。

pred_dat <- left_join(pred_dat, dat %>% filter(city == "A"))

对于绘图,我们需要将year从一个因子转换为数字,然后我们可以制作绘图:

pred_dat  %>% 
  mutate(year = as.numeric(as.character(year))) %>% 
  ggplot() + 
  geom_ribbon(aes(x=year, ymin = lwr_pred, ymax=upr_pred, fill="Prediction"),  alpha=.25) + 
  geom_ribbon(aes(x=year, ymin = lwr, ymax=upr, fill="Confidence"),  alpha=.25) + 
  scale_fill_manual(values=c("blue", "gray65")) + 
  geom_point(aes(x=year, y=fit, color="Predicted")) + 
  geom_point(aes(x=year, y=log_trip, colour="Observed (City A)")) + 
  scale_colour_manual(values=c("red", "blue")) + 
  scale_x_continuous(breaks=2006:2018) + 
  labs(colour="Points", fill = "Intervals", x="Year", y="Predicted Values") + 
  theme_clic()

创建于 2022-05-12 由reprex package(v2.0.1)

本站系公益性非盈利分享网址,本文来自用户投稿,不代表码文网立场,如若转载,请注明出处

(79)
如何使用链接 /api加入新的Google组
上一篇
Oracle云中 IAM、IDCS和OCI的区别
下一篇

相关推荐

发表评论

登录 后才能评论

评论列表(57条)