Прогнозирование объёма звонков
Ещё один пример временного ряда с несколькими сезонными периодами — calls. Этот набор данных содержит объём звонков с 5-минутным разрешением за 20 consecutive рабочих дней в крупном североамериканском банке. В рабочем дне насчитывается 169 пятиминутных интервалов, поэтому недельная сезонная частота составляет 5 × 169 = 845. Недельная сезонность выражена слабо, поэтому здесь мы будем моделировать только суточную сезонность. Набор данных calls уже загружен в вашу рабочую среду.
Остатки модели в данном случае всё равно не проходят тесты на белый шум, однако их автокорреляции крайне малы — несмотря на статистическую значимость. Это связано с большой длиной ряда. Для таких длинных рядов добиться прохождения тестов остатками зачастую нереалистично. Влияние оставшихся корреляций на прогнозы будет пренебрежимо мало.
Это упражнение является частью курса
Прогнозирование в R
Инструкции к упражнению
- Постройте график данных
calls, чтобы увидеть выраженную суточную и слабую недельную сезонности. - Сформируйте матрицу
xreg, задав порядок10для суточной сезонности и0— для недельной. Обратите внимание: если вектор указан неверно, сессия может завершиться с ошибкой! - Подберите модель динамической регрессии под названием
fitс помощью функцииauto.arima(), указавseasonal = FALSEиstationary = TRUE. - Проверьте остатки подобранной модели.
- Создайте прогноз
fcна 10 рабочих дней вперёд и постройте его график. Правильное значениеhможно определить по описанию упражнения.
Интерактивное практическое упражнение
Попробуйте выполнить это упражнение, дополнив этот пример кода.
# Plot the calls data
___
# Set up the xreg matrix
xreg <- fourier(___, K = ___)
# Fit a dynamic regression model
fit <- auto.arima(___, xreg = ___, ___, ___)
# Check the residuals
___
# Plot forecasts for 10 working days ahead
fc <- forecast(fit, xreg = fourier(calls, c(10, 0), h = ___))
___