Как разложить временной ряд с несколькими сезонными компонентами?

22

У меня есть временной ряд, который содержит двойные сезонные компоненты, и я хотел бы разбить ряд на следующие компоненты временного ряда (тренд, сезонный компонент 1, сезонный компонент 2 и нерегулярный компонент). Насколько я знаю, процедура STL для разложения ряда в R допускает только один сезонный компонент, поэтому я попытался разложить ряд дважды. Во-первых, установив частоту в качестве первого сезонного компонента, используя следующий код:

ser = ts(data, freq=48)
dec_1 = stl(ser, s.window="per")

Затем я разложил нерегулярный компонент разложенного ряда ( dec_1), установив частоту в качестве второго сезонного компонента, так что:

ser2 = ts(dec_1$time.series[,3], freq=336)
dec_2 = stl(ser2, s.window="per")

Я не очень уверен в этом подходе. И я хотел бы знать, есть ли какие-либо другие способы разложения ряда, который имеет несколько сезонностей. Кроме того, я заметил, что tbats()функция в пакете прогноза R позволяет подгонять модель к серии с несколькими сезонностями, однако в ней не говорится, как разложить серию по ней.

туз
источник
Привет и добро пожаловать на сайт. Для двух ваших сезонных компонентов они имеют разную периодичность, например, один раз в неделю, а другой раз в месяц?
Мишель
1
Глава 14 Роба Хиндмана, Келера, Орд и Снайдер "Прогнозирование с экспоненциальным сглаживанием" охватывает это. У Хиндмана также есть пакет прогнозирования на R. Я, кажется, вспоминаю, как Хиндман разместил на этом сайте эту тему, но это могло быть в его блоге.
zbicyclist
@ Мишель Привет, спасибо за ответ. Да, два сезонных компонента имеют разную периодичность. Первый имеет периодичность 48 (ежедневная сезонность), а второй периодичность 336 (еженедельная сезонность). Это получасовой временной ряд.
туз
@zbicyclist Я считаю, что пакет прогнозирования, о котором вы говорите, является пакетом «прогнозирования», о котором я упоминал в оригинальном сообщении. Я посмотрел на функцию tbats этого пакета, но она не говорит, как использовать ее для разложения. Я проверю книгу, чтобы посмотреть, смогу ли я найти еще одну иллюстрацию.
туз
2
Вот о чем я думал. Это было в блоге Хиндмана. robjhyndman.com/papers/complex-seasonality
zbicyclist

Ответы:

13

forecastПакет bats()и tbats()функции R могут соответствовать моделям BATS и TBATS. Функции возвращают списки с атрибутом класса "bats" или "tbats". Одним из элементов в этом списке является временной ряд векторов состояния для каждого времени .Икс(T)T

См. Http://robjhyndman.com/papers/complex-seasonality/ для формулы и Hyndman et al (2008) для лучшего описания моделей ETS. Летучие мыши и TBATS являются продолжением ETS.

Например:

fit <- bats(myTimeseries)
fit$x

В этом случае каждый ряд xбудет на фурье-подобной гармонике.

Также есть plot.tbats()и plot.bats()функции для автоматического разложения и просмотра компонентов.

сила
источник