Визуализация прогнозов аренды велосипедов
В предыдущем упражнении вы визуализировали прогнозы модели с помощью стандартного точечного графика «фактические значения vs. прогнозы». Поскольку данные об аренде велосипедов представляют собой временной ряд, интересно также оценить, как модель работает в зависимости от времени. В этом упражнении вы сравните прогнозы и фактические данные об аренде с почасовой детализацией за первые 14 дней августа.
Для построения графика используйте функцию tidyr::pivot_longer() (docs), чтобы объединить прогнозируемые и фактические значения из bikesAugust в один столбец. Функция pivot_longer() принимает следующие аргументы:
- «Широкий» фрейм данных для преобразования (передаётся неявно через пайп).
- Названия столбцов, которые нужно собрать в один (ключевое слово
cols). - Название создаваемого столбца-ключа — содержит названия собранных столбцов (ключевое слово
names_to). - Название создаваемого столбца значений — содержит значения собранных столбцов (ключевое слово
values_to).
Полученный фрейм данных после преобразования вы используете для сравнения фактического и прогнозируемого числа аренд как функции времени. Индекс времени instant отсчитывает количество наблюдений с начала сбора данных. Пример кода переводит значения 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")