2016-05-30 4 views
3

Я пытаюсь использовать прогноз R-пакета для установки моделей аримы (с функцией Arima) и автоматически выбирать подходящую модель (с функцией auto.arima). Я впервые оценил две возможные модели с функцией Арима:Странное поведение auto.arima в прогнозе R-пакета

tt.1 <- Arima(x, order=c(1,0,1), seasonal=list(order=c(0,1,1)), 
       include.drift=F) 
tt.2 <- Arima(x, order=c(1,0,1), seasonal=list(order=c(0,1,0)), 
       include.drift=F) 

Затем я использовал функцию auto.arima автоматически выбрать подходящую модель для одних и тех же данных. Я зафиксировал d = 0 и D = 1 так же, как и в двух вышеприведенных моделях. Кроме того, я установил максимум 1 для всех других параметров, не использовал аппроксимацию критерия выбора и не использовал пошаговый выбор (обратите внимание, что настройки, которые я использую здесь, предназначены только для демонстрации странного поведения, а не того, что я действительно намерен использования). В качестве критерия выбора модели я использовал BIC. Вот вызов функции:

tt.auto <- auto.arima(x, ic="bic", approximation=F, seasonal=T, stepwise=F, 
        max.p=1, max.q=1, max.P=1, max.Q=1, d=0, D=1, start.p=1, 
        start.q=1, start.P=1, start.Q=1, trace=T, 
        allowdrift=F) 

Теперь, я ожидал бы, что auto.arima выбирает модель с нижней BIC из двух моделей, указанных выше, или модель не оцененной выше, Арима. Более того, я ожидал, что результат, генерируемый auto.arima, когда trace = T точно такой же, как BIC, рассчитанный Arima для двух моделей выше. Это действительно верно для второй модели, но не для первой. Для первой модели BIC, рассчитанный по Arima, составляет 10405,81, но выходное изображение экрана для модели (1,0,1) (0,1,1) на экране - Inf. Следовательно, вторая модель выбирается auto.arima, хотя первая модель имеет более низкий BIC при сравнении двух моделей, оцененных Arima. У кого-нибудь есть идея, почему BIC, рассчитанный Arima, не соответствует BIC, рассчитанному auto.arima в случае первой модели?

Вот выход экрана auto.arima:

ARIMA(0,0,0)(0,1,0)[96]     : 11744.63 
ARIMA(0,0,0)(0,1,1)[96]     : Inf 
ARIMA(0,0,0)(1,1,0)[96]     : Inf 
ARIMA(0,0,0)(1,1,1)[96]     : Inf 
ARIMA(0,0,1)(0,1,0)[96]     : 11404.67 
ARIMA(0,0,1)(0,1,1)[96]     : Inf 
ARIMA(0,0,1)(1,1,0)[96]     : Inf 
ARIMA(0,0,1)(1,1,1)[96]     : Inf 
ARIMA(1,0,0)(0,1,0)[96]     : 11120.72 
ARIMA(1,0,0)(0,1,1)[96]     : Inf 
ARIMA(1,0,0)(1,1,0)[96]     : Inf 
ARIMA(1,0,0)(1,1,1)[96]     : Inf 
ARIMA(1,0,1)(0,1,0)[96]     : 10984.75 
ARIMA(1,0,1)(0,1,1)[96]     : Inf 
ARIMA(1,0,1)(1,1,0)[96]     : Inf 
ARIMA(1,0,1)(1,1,1)[96]     : Inf 

И вот резюме моделей, рассчитанных на Арима:

> summary(tt.1) 
Series: x 
ARIMA(1,0,1)(0,1,1)[96]      

Coefficients: 
     ar1  ma1  sma1 
     0.9273 -0.5620 -1.0000 
s.e. 0.0146 0.0309 0.0349 

sigma^2 estimated as 867.7: log likelihood=-5188.98 
AIC=10385.96 AICc=10386 BIC=10405.81 

Training set error measures: 
        ME  RMSE  MAE  MPE  MAPE  MASE  ACF1 
Training set 0.205128 28.16286 11.14871 -7.171098 18.42883 0.3612059 -0.03466711 
> summary(tt.2) 
Series: x 
ARIMA(1,0,1)(0,1,0)[96]      

Coefficients: 
     ar1  ma1 
     0.9148 -0.4967 
s.e. 0.0155 0.0320 

sigma^2 estimated as 1892: log likelihood=-5481.93 
AIC=10969.86 AICc=10969.89 BIC=10984.75 

Training set error measures: 
       ME  RMSE  MAE  MPE  MAPE MASE  ACF1 
Training set 0.1942746 41.61086 15.38138 -8.836059 24.55919 0.49834 -0.02253845 

Примечание: Я не позволил сделать данные доступными , Но я был бы рад предоставить больше результатов или выполнить измененные вызовы функций, если это необходимо.

EDIT: Теперь я посмотрел исходный код auto.arima и выяснил, что поведение вызвано проверкой корней, которая устанавливает критерий информации, используемый для выбора модели Inf, если модель не проверит проверку. Документ, цитируемый в справочной системе для auto.arima, подтверждает, что (Hyndman, RJ and Khandakar, Y. (2008) «Автоматическое прогнозирование временных рядов: пакет прогнозов для R», журнал статистического программного обеспечения, 26 (3), стр. 11) , Извините за вопрос, я должен был прочитать статью, прежде чем задавать здесь вопрос!

ответ

1

auto.arima пытается найти лучшую модель с некоторыми ограничениями, избегая моделей с параметрами, близкими к границам нестационарности и невозвратности.

Модель tt.1 имеет сезонный параметр MA (1) -1, который лежит на границе необратимости. Поэтому вы не хотите использовать эту модель, так как это приведет к числовым неустойчивостям. Оператор сезонной разницы смешивается с сезонным оператором МА.

Внутренний номер auto.arima дает значение AIC/AICc/BIC Inf для любой модели, которая не удовлетворяет ограничениям, чтобы избежать ее выбора.

+0

Спасибо за ваш ответ! Как я писал в вопросе внизу (часть EDIT), я понял это, посмотрев исходный код и документ, упомянутый в справке для auto.arima. Извините еще раз за вопрос, прежде чем читать статью, упомянутую в справке! Я принял ваш ответ. – Lila

Смежные вопросы