Гармоническая регрессия при множественной сезонности
Гармонические регрессии также эффективны, когда временной ряд содержит несколько сезонных паттернов. Например, taylor содержит получасовые данные об электропотреблении в Англии и Уэльсе за несколько месяцев 2000 года. Сезонные периоды составляют 48 (суточная сезонность) и 7 × 48 = 336 (недельная сезонность). Данных недостаточно для анализа годовой сезонности.
Функция auto.arima() потребовала бы много времени для подгонки столь длинного ряда, поэтому вместо неё вы построите стандартную регрессионную модель с членами Фурье, используя функцию tslm(). Она очень похожа на lm(), но разработана специально для временных рядов. При множественной сезонности необходимо задать порядок \(K\) для каждого из сезонных периодов.
# The formula argument is a symbolic description
# of the model to be fitted
> args(tslm)
function (formula, ...)
tslm() — относительно новая функция, поэтому большую часть готового кода вы сможете понять без труда. Набор данных taylor уже загружен в вашу рабочую среду.
Это упражнение является частью курса
Прогнозирование в R
Инструкции к упражнению
- Подгоните гармоническую регрессию под именем
fitк даннымtaylor, задав порядок 10 для каждого типа сезонности. - Постройте прогноз на 20 рабочих дней вперёд и сохраните его как
fc. Обратите внимание, что данные получасовые — это важно для правильного выбора значенияh. - Постройте временной график прогнозов.
- Проверьте остатки подогнанной модели. Как вы сможете убедиться,
auto.arima()справилась бы с этой задачей лучше.
Интерактивное практическое упражнение
Попробуйте выполнить это упражнение, дополнив этот пример кода.
# Fit a harmonic regression using order 10 for each type of seasonality
fit <- tslm(taylor ~ fourier(___, K = c(10, 10)))
# Forecast 20 working days ahead
fc <- forecast(___, newdata = data.frame(fourier(___, K = ___, h = ___)))
# Plot the forecasts
___
# Check the residuals of fit
___