Многомерная декомпозиция в R?

Я хочу разложить ежедневные данные о продажах с сильным сезонным компонентом (что делает 365-дневную сезонность слишком длинной для процесса ARIMA). Однако некоторые части временного ряда объясняются другими факторами, в том числе регулярными маркетинговыми событиями, влияющими на данные. Я хотел бы использовать функцию R stl таким же образом, как и включение экзогенных переменных в ARIMA, но я не видел места, где можно было бы добавить экзогенные переменные. Вместо этого я применил экзогенные переменные к «остатку» в отдельной регрессии, но опасаюсь, что сезонность, полученная stl, будет ошибочной из-за упомянутых регулярных маркетинговых событий.

Любые предложения о том, как обойти эту проблему?


person Bryan    schedule 03.06.2013    source источник


Ответы (2)


STL немного ограничен, так как он обрабатывает только один тип сезонности за раз, и у вас, вероятно, есть две сезонности (еженедельная и годовая). Кроме того, он не допускает экзогенных переменных.

Одним из возможных подходов было бы использование регрессионной модели с ошибками ARMA, где сезонный период данных был установлен равным 7 (для недельной сезонности). Вы можете обрабатывать годовую сезонность с помощью членов Фурье (http://robjhyndman.com/hyndsight/longseasonality/ ) в качестве переменных регрессии. Маркетинговые события можно обрабатывать с помощью фиктивных переменных, также включенных в аргумент xreg. Вы даже можете использовать auto.arima из пакета forecast, чтобы выбрать порядок ошибки. , в том числе нужно ли учитывать недельную сезонность. Просто настройте xreg с условиями Фурье и фиктивными переменными, затем вызовите

auto.arima(y, xreg=xreg)

Обработка сезонности с помощью ряда Фурье предполагает, что она неизменна по форме. Однако, если у вас нет данных за многие годы, это не является проблемой, так как маловероятно, что они сильно изменили форму менее чем за 20 лет, а ошибки ARIMA в любом случае будут скорректированы с учетом небольших изменений.

Если в данных есть значительная тенденция, вы также должны учесть это в регрессионной части модели. Добавление некоторых терминов B-сплайна должно справиться с этим.

person Rob Hyndman    schedule 04.06.2013
comment
Спасибо за это. К сожалению, я имею дело с данными за несколько лет и с изменяющейся сезонностью, но я считаю, что могу скорректировать набор данных перед анализом, чтобы сделать сезонность неизменной. Кроме того, еще один вопрос: поддерживает ли auto.arima с экзогенными переменными пошаговый выбор? У меня есть ряд маркетинговых переменных, все из которых могут быть значительными, но также могут быть настолько сильно подвержены влиянию сезонности, что они не могут быть предсказуемыми. - person Bryan; 12.06.2013
comment
Нет. auto.arima() будет использовать переданные вами регрессионные переменные. Он выбирает порядок ошибки ARIMA, но не выбирает регрессионные переменные. - person Rob Hyndman; 13.06.2013

Я могу порекомендовать пакет прогнозов на cran по Гайндману. Там модели летучих мышей или tbats должны учитывать как сложные сезонные факторы, так и фиктивные переменные, представляющие маркетинговые события.

person Peter Lustig    schedule 03.06.2013
comment
Я зарегистрировался у проф. Хайндмана, и узнал, что tbats не принимает экзогенные переменные. Однако он упомянул, что вы можете комбинировать функции в пакете... хотя мне придется провести дополнительное исследование, чтобы увидеть, как это реализовать в моем случае. - person Bryan; 03.06.2013
comment
Я этого не знал, но звучит интересно, не могли бы вы продолжить, как только получите больше информации? - person Peter Lustig; 03.06.2013
comment
Похоже, что он имел в виду только иерархические прогнозы. Итак, этот вопрос остается в силе. Профессор Гайндман, возможно, вы можете присоединиться к нам? - person Bryan; 04.06.2013
comment
Да, bats и tbats не позволяют использовать регрессионные переменные. Смотрите мой ответ для лучшего подхода. - person Rob Hyndman; 05.06.2013