Aan de slagGa gratis aan de slag

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

Cursus bekijken

Oefeninstructies

  • Vul de lege plekken in om de voorspellingen en werkelijke aantallen per uur te plotten voor de eerste 14 dagen van augustus.
    • zet instant om naar dagen in plaats van uren
    • gebruik pivot_longer() om de kolommen cnt en pred samen te voegen in een kolom value, met een sleutel valuetype.
    • filter() voor de eerste twee weken van augustus
    • Plot value als functie van instant (dag).

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")
Code bewerken en uitvoeren