Візуалізуйте прогнози оренди велосипедів
У попередній вправі ви візуалізували прогнози моделі для велосипедів за допомогою стандартної діаграми розсіювання «фактичне значення 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")