ПочатиПочніть безкоштовно

Візуалізуйте прогнози оренди велосипедів

У попередній вправі ви візуалізували прогнози моделі для велосипедів за допомогою стандартної діаграми розсіювання «фактичне значення vs. прогноз». Оскільки дані про оренду велосипедів є часовими рядами, може бути цікаво подивитися, як модель працює залежно від часу. У цій вправі ви порівняєте прогнози та фактичні оренди погодинно за перші 14 днів серпня.

Щоб створити графік, ви використаєте функцію tidyr::pivot_longer() (docs), щоб об'єднати прогнозні та фактичні значення з bikesAugust в один стовпець. pivot_longer() приймає як аргументи:

  • «Широкий» датафрейм, який потрібно перетворити (неявно в конвеєрі).
  • Назви стовпців, які слід зібрати в один стовпець (ключове слово "cols").
  • Назву стовпця-ключа, який буде створено — він міститиме назви зібраних стовпців (ключове слово "names_to").
  • Назву стовпця-значення, який буде створено — він міститиме значення зі зібраних стовпців (ключове слово "values_to").

Ви використаєте перетворений датафрейм, щоб порівняти фактичні та прогнозні значення кількості оренд як функцію часу. Індекс часу instant рахує кількість спостережень від початку збору даних. У зразку коду миттєві значення переводяться в добові одиниці, починаючи з 0.

Датафрейм bikesAugust із прогнозами (bikesAugust$pred) уже завантажено.

Ця вправа є частиною курсу

Кероване навчання в R: регресія

Переглянути курс

Інструкції до вправи

  • Заповніть пропуски, щоб побудувати прогнози та фактичні значення за годинами для перших 14 днів серпня.
    • перетворіть instant, щоб він був у добових одиницях, а не в годинах
    • застосуйте pivot_longer() до стовпців cnt і pred, щоб отримати стовпець value з ключем valuetype.
    • filter() для перших двох тижнів серпня
    • Побудуйте графік 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")
Редагувати та запускати код