可视化共享单车租赁的预测
在上一个练习中,您使用标准的"真实结果 vs. 预测值"散点图来可视化单车模型的预测。由于单车租赁数据是时间序列数据,您可能更关心模型随时间的表现。在本练习中,您将对比 8 月前 14 天的逐小时预测值和实际租赁量。
为创建该图,您将使用 tidyr::pivot_longer() 函数(文档)将 bikesAugust 中的预测值和实际值整合到一列中。pivot_longer() 的参数包括:
- 需要透视的"宽格式"数据框(在管道中隐式传入)
- 要收集到单列中的列名(关键字 "cols")。
- 要创建的键列名称——包含被收集列的名称(关键字 "names_to")。
- 要创建的值列名称——包含被收集列的数值(关键字 "values_to")。
您将使用透视后的数据框,随时间对比实际与预测的租赁计数。时间索引 instant 表示自数据收集开始以来的观测编号。示例代码将该索引转换为以天为单位的数值,从 0 开始。
已预加载包含预测值(bikesAugust$pred)的 bikesAugust 数据框。
本练习是课程的一部分
R 中的监督学习:回归
练习说明
- 填空以按小时绘制 8 月前 14 天的预测值与实际计数。
- 将
instant从小时转换为天的单位 - 使用
pivot_longer()将cnt和pred两列合并到名为value的列中,键列名为valuetype。 - 使用
filter()过滤出 8 月的前两周 - 将
value作为instant(天)的函数进行绘图。
- 将
模型是否捕捉到了单车租赁的整体时间模式?
交互式实操练习
通过完成这段示例代码来试试这个练习。
# Plot predictions and cnt by date/time
bikesAugust %>%
# set start to 0, convert unit to days
mutate(instant = (instant - min(instant))/24) %>%
# collect cnt and pred into a value column
pivot_longer(cols = c('cnt', 'pred'), names_to = '___', values_to = '___') %>%
filter(instant < 14) %>% # restric to first 14 days
# plot value by instant
ggplot(aes(x = ___, y = ___, color = valuetype, linetype = valuetype)) +
geom_point() +
geom_line() +
scale_x_continuous("Day", breaks = 0:14, labels = 0:14) +
scale_color_brewer(palette = "Dark2") +
ggtitle("Predicted August bike rentals, Quasipoisson model")