Visualiseer de voorspellingen voor de fietsverhuur
In de vorige oefening visualiseerde je de voorspellingen van het fietsmodel met de standaard scatterplot "uitkomst vs. voorspelling". Omdat de fietsverhuurgegevens tijdreeksdata zijn, wil je misschien weten hoe het model presteert in de tijd. In deze oefening vergelijk je de voorspellingen en de daadwerkelijke verhuur per uur, voor de eerste 14 dagen van augustus.
Voor de plot gebruik je de functie tidyr::pivot_longer() (docs) om de voorspelde en werkelijke waarden uit bikesAugust te bundelen in één kolom. pivot_longer() neemt als argumenten:
- Het "brede" data frame dat je wilt pivottan (impliciet via een pipe)
- De namen van de kolommen die in één kolom moeten worden samengebracht (keyword "cols").
- De naam van de sleutelkolom die wordt aangemaakt – bevat de namen van de samengebrachte kolommen (keyword "names_to").
- De naam van de waardekolom die wordt aangemaakt – bevat de waarden van de samengebrachte kolommen (keyword "values_to").
Je gebruikt het gepivotte data frame om de werkelijke en voorspelde verhuuraantallen als functie van de tijd te vergelijken. De tijdsindex instant telt het aantal observaties sinds het begin van de dataverzameling. De voorbeeldcode zet de instants om naar dagen, beginnend bij 0.
Het bikesAugust-data frame, met de voorspellingen (bikesAugust$pred), is al ingeladen.
Deze oefening maakt deel uit van de cursus
Supervised Learning in R: Regressie
Oefeninstructies
- Vul de lege plekken in om de voorspellingen en werkelijke aantallen per uur te plotten voor de eerste 14 dagen van augustus.
- zet
instantom naar dagen in plaats van uren - gebruik
pivot_longer()om de kolommencntenpredsamen te voegen in een kolomvalue, met een sleutelvaluetype. filter()voor de eerste twee weken van augustus- Plot
valueals functie vaninstant(dag).
- zet
Ziet het model de algemene tijdspatronen in de fietsverhuur?
Praktische interactieve oefening
Probeer deze oefening eens door deze voorbeeldcode in te vullen.
# 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")