Kom igångKom igång gratis

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

Visa kurs

Ö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 instant till dagenheter i stället för timmar.
    • Använd pivot_longer() på kolumnerna cnt och pred till en kolumn kallad value, med en nyckel kallad valuetype.
    • Använd filter() för att välja ut de första två veckorna av augusti.
    • Plotta value som en funktion av instant (dag).

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")
Redigera och kör kod