Если целью вашей модели является прогнозирование и прогнозирование, то короткий ответ - ДА, но стационарность не обязательно должна быть на уровнях.
Я объясню. Если вы сводите прогнозирование к его основной форме, это будет извлечение инварианта. Подумайте об этом: вы не можете предсказать, что меняется. Если я скажу вам, что завтра будет отличаться от сегодняшнего дня во всех мыслимых аспектах , вы не сможете дать какой-либо прогноз .
Только когда вы сможете продлить что-то с сегодняшнего дня на завтра, вы можете сделать любой прогноз. Я приведу несколько примеров.
- Икс^T + 1знак равно хT
- v = 60ИксT~ V т
- Твой сосед пьян каждую пятницу. Будет ли он пьян в следующую пятницу? Да, пока он не меняет своего поведения
- и так далее
В каждом случае разумного прогноза мы сначала извлекаем что-то постоянное из процесса и распространяем его на будущее. Следовательно, мой ответ: да, временные ряды должны быть стационарными, если дисперсия и среднее значение являются инвариантами, которые вы собираетесь распространить в будущее из истории. Более того, вы хотите, чтобы отношения с регрессорами также были стабильными.
Просто определите, что является инвариантом в вашей модели, будь то средний уровень, скорость изменения или что-то еще. Эти вещи должны остаться такими же в будущем, если вы хотите, чтобы ваша модель обладала какой-либо прогнозирующей способностью.
Пример Холта Винтерса
Фильтр Холта Винтерса упоминался в комментариях. Это популярный выбор для сглаживания и прогнозирования определенных видов сезонных рядов, и он может работать с нестационарными рядами. В частности, он может обрабатывать серии, где средний уровень растет со временем линейно. Другими словами, где уклон устойчивый . В моей терминологии наклон является одним из инвариантов, которые этот подход извлекает из ряда. Давайте посмотрим, как он терпит неудачу, когда наклон неустойчивый.
На этом графике я показываю детерминированный ряд с экспоненциальным ростом и аддитивной сезонностью. Другими словами, наклон со временем становится все круче:
Вы можете видеть, как фильтр очень хорошо вписывается в данные. Установленная линия красная. Однако, если вы попытаетесь предсказать с помощью этого фильтра, он потерпит неудачу. Истинная линия - черная, а красная - с синей доверительной границей на следующем графике:
Причину неудачи легко понять, изучив уравнения модели Холта Уинтерса . Он извлекает склон из прошлого и распространяется на будущее. Это работает очень хорошо, когда уклон стабилен, но когда он постоянно растет, фильтр не может идти в ногу, он на один шаг позади, и эффект накапливается в растущей ошибке прогноза.
Код R:
t=1:150
a = 0.04
x=ts(exp(a*t)+sin(t/5)*sin(t/2),deltat = 1/12,start=0)
xt = window(x,0,99/12)
plot(xt)
(m <- HoltWinters(xt))
plot(m)
plot(fitted(m))
xp = window(x,8.33)
p <- predict(m, 50, prediction.interval = TRUE)
plot(m, p)
lines(xp,col="black")
В этом примере вы можете улучшить производительность фильтра, просто ведя журнал серии. Когда вы берете логарифм экспоненциально растущего ряда, вы снова делаете его наклон устойчивым и даете этому фильтру шанс. Вот пример:
Код R:
t=1:150
a = 0.1
x=ts(exp(a*t)+sin(t/5)*sin(t/2),deltat = 1/12,start=0)
xt = window(log(x),0,99/12)
plot(xt)
(m <- HoltWinters(xt))
plot(m)
plot(fitted(m))
p <- predict(m, 50, prediction.interval = TRUE)
plot(m, exp(p))
xp = window(x,8.33)
lines(xp,col="black")