Я устанавливаю модель ARIMA на ежедневные временные ряды. Данные собираются ежедневно с 02-01-2010 по 30-07-2011 и касаются продаж газет. Поскольку можно найти недельный график продаж (среднесуточное количество проданных копий обычно одинаково с понедельника по пятницу, а затем увеличивается в субботу и воскресенье), я пытаюсь уловить эту «сезонность». Учитывая данные о продажах «данные», я создаю временной ряд следующим образом:
salests<-ts(data,start=c(2010,1),frequency=365)
а затем я использую функцию auto.arima (.), чтобы выбрать лучшую модель ARIMA по критерию AIC. Результатом всегда является несезонная модель ARIMA, но если я попробую какую-нибудь модель SARIMA со следующим синтаксисом в качестве примера:
sarima1<-arima(salests, order = c(2,1,2), seasonal = list(order = c(1, 0, 1), period = 7))
Я могу получить лучшие результаты. Есть ли что-то не так в спецификации ts command / arima? Недельный график очень сильный, поэтому я не ожидал бы так много трудностей при его захвате. Любая помощь будет очень полезна. Спасибо, Джулия Деппиери
Обновить:
Я уже изменил некоторые аргументы. Точнее, процедура выбирает ARIMA (4,1,3) как лучшую модель, когда я установил D=7
, но AIC и другие, также хорошо подходящие по показателям и прогнозам соответствия), вообще не улучшаются. Я предполагаю, что есть некоторые ошибки из-за путаницы между сезонностью и периодичностью ..?!
Вызов Auto.arima используется и получен результат:
modArima<-auto.arima(salests,D=7,max.P = 5, max.Q = 5)
ARIMA(2,1,2) with drift : 1e+20
ARIMA(0,1,0) with drift : 5265.543
ARIMA(1,1,0) with drift : 5182.772
ARIMA(0,1,1) with drift : 1e+20
ARIMA(2,1,0) with drift : 5137.279
ARIMA(2,1,1) with drift : 1e+20
ARIMA(3,1,1) with drift : 1e+20
ARIMA(2,1,0) : 5135.382
ARIMA(1,1,0) : 5180.817
ARIMA(3,1,0) : 5117.714
ARIMA(3,1,1) : 1e+20
ARIMA(4,1,1) : 5045.236
ARIMA(4,1,1) with drift : 5040.53
ARIMA(5,1,1) with drift : 1e+20
ARIMA(4,1,0) with drift : 5112.614
ARIMA(4,1,2) with drift : 4953.417
ARIMA(5,1,3) with drift : 1e+20
ARIMA(4,1,2) : 4960.516
ARIMA(3,1,2) with drift : 1e+20
ARIMA(5,1,2) with drift : 1e+20
ARIMA(4,1,3) with drift : 4868.669
ARIMA(5,1,4) with drift : 1e+20
ARIMA(4,1,3) : 4870.92
ARIMA(3,1,3) with drift : 1e+20
ARIMA(4,1,4) with drift : 4874.095
Best model: ARIMA(4,1,3) with drift
Так что я предполагаю, что функция arima должна использоваться как:
bestOrder <- cbind(modArima$arma[1],modArima$arma[5],modArima$arma[2])
sarima1<-arima(salests, order = c(4,1,3))
без сезонных компонентов и параметров периода. Данные и аналитический анализ показывают, что один и тот же недельный график может быть приближенно рассмотрен для каждой недели, за исключением августа 2010 года (когда зарегистрирован последовательный рост продаж). К сожалению, у меня нет опыта в моделировании временных рядов, на самом деле я пробую этот подход, чтобы найти альтернативное решение для других параметрических и непараметрических моделей, которые я пытался приспособить к этим проблемным данным. У меня также есть много зависимых числовых переменных, но они показали низкую мощность при объяснении переменной отклика: несомненно, самая трудная часть для моделирования - это временная составляющая. Более того, построение фиктивных переменных для представления месяцев и дней недели оказалось не надежным решением.