視覺化單車租賃的預測結果
在前一個練習中,你用標準的「實際值 vs. 預測值」散佈圖來視覺化單車模型的預測。由於單車租賃資料是時間序列,你可能也會想知道模型隨時間的表現。在這個練習中,你會在 8 月的前 14 天中,逐小時比較預測值與實際租賃量。
為了建立圖表,你將使用 tidyr::pivot_longer()(docs)把 bikesAugust 中的預測值與實際值合併到同一個欄位。pivot_longer() 的引數包含:
- 要轉寬為長的資料框(在管線中隱含傳入)
- 要彙整成單一欄位的欄名(關鍵字「cols」)。
- 要建立的鍵欄位名稱——其中包含被彙整欄位的名稱(關鍵字「names_to」)。
- 要建立的值欄位名稱——其中包含被彙整欄位的數值(關鍵字「values_to」)。
你會用轉換後的資料框,將實際與預測的租賃計數作為時間的函數來比較。時間指標 instant 是從資料蒐集開始以來的觀測次數。範例程式碼把 instant 轉換為以天為單位,從 0 開始。
已預先載入含有預測值(bikesAugust$pred)的 bikesAugust 資料框。
本練習屬於課程
R 中的監督式學習:回歸
練習說明
- 填入空格,繪製 8 月前 14 天逐小時的預測與實際計數。
- 將
instant從小時轉換為天的單位 - 對
cnt與pred欄位執行pivot_longer(),輸出到名為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")