Visualisera förutsägelserna för cykeluthyrning
I föregående övning visualiserade du cykelmodellens förutsägelser med ett vanligt spridningsdiagram av utfall mot förutsägelse. Eftersom cykeluthyrningsdatan är tidsseriedata kan det vara intressant att se hur modellen presterar över tid. I den här övningen jämför du förutsägelserna och de faktiska uthyrningarna per timme, för de första 14 dagarna i augusti.
För att skapa diagrammet använder du funktionen tidyr::pivot_longer() (dokumentation) för att samla de förutsagda och faktiska värdena från bikesAugust i en enda kolumn. pivot_longer() tar följande argument:
- Den "breda" dataram som ska pivoteras (implicit i en pipe)
- Namnen på de kolumner som ska samlas i en enda kolumn (nyckelordet "cols").
- Namnet på nyckelkolumnen som ska skapas – innehåller namnen på de insamlade kolumnerna (nyckelordet "names_to").
- Namnet på värdekolumnen som ska skapas – innehåller värdena från de insamlade kolumnerna (nyckelordet "values_to").
Du använder den pivoterade dataramen för att jämföra faktiska och förutsagda uthyrningsantal över tid. Tidsindexet instant räknar antalet observationer sedan datainsamlingen startade. Exempelkoden konverterar dessa tidpunkter till dagenheter med start från 0.
Dataramen bikesAugust, med förutsägelserna (bikesAugust$pred), är förinstallerad.
Den här övningen är en del av kursen
Övervakad inlärning i R: Regression
Övningsinstruktioner
- Fyll i luckorna för att plotta förutsägelserna och de faktiska antalen per timme för de första 14 dagarna i augusti.
- Konvertera
instanttill dagenheter i stället för timmar. - Använd
pivot_longer()på kolumnernacntochpredtill en kolumn kalladvalue, med en nyckel kalladvaluetype. - Använd
filter()för att välja ut de första två veckorna av augusti. - Plotta
valuesom en funktion avinstant(dag).
- Konvertera
Fångar modellen de allmänna tidsmönstren i cykeluthyrningen?
Interaktiv övning med praktiskt arbete
Testa den här övningen genom att slutföra den här exempelkoden.
# 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")