У меня есть временной ряд, который содержит двойные сезонные компоненты, и я хотел бы разбить ряд на следующие компоненты временного ряда (тренд, сезонный компонент 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 позволяет подгонять модель к серии с несколькими сезонностями, однако в ней не говорится, как разложить серию по ней.
Ответы:
forecast
Пакетbats()
иtbats()
функции R могут соответствовать моделям BATS и TBATS. Функции возвращают списки с атрибутом класса "bats" или "tbats". Одним из элементов в этом списке является временной ряд векторов состояния для каждого времени .См. Http://robjhyndman.com/papers/complex-seasonality/ для формулы и Hyndman et al (2008) для лучшего описания моделей ETS. Летучие мыши и TBATS являются продолжением ETS.
Например:
В этом случае каждый ряд
x
будет на фурье-подобной гармонике.Также есть
plot.tbats()
иplot.bats()
функции для автоматического разложения и просмотра компонентов.источник