Объяснение прогнозов по модели ARIMA

Я пытаюсь объяснить себе результат прогнозирования от применения модели ARIMA к набору данных временных рядов. Данные из M1-конкурса, серия MNB65. Я пытаюсь подогнать данные к модели ARIMA(1,0,0) и получить прогнозы. Я использую R. Вот некоторые выходные фрагменты:

> arima(x, order = c(1,0,0))
Series: x 
ARIMA(1,0,0) with non-zero mean 
Call: arima(x = x, order = c(1, 0, 0)) 
Coefficients:
         ar1  intercept
      0.9421  12260.298
s.e.  0.0474    202.717

> predict(arima(x, order = c(1,0,0)), n.ahead=12)
$pred
Time Series:
Start = 53 
End = 64 
Frequency = 1 
[1] 11757.39 11786.50 11813.92 11839.75 11864.09 11887.02 11908.62 11928.97 11948.15 11966.21 11983.23 11999.27

У меня есть несколько вопросов:

(1) Как объяснить, что, хотя набор данных показывает четкий нисходящий тренд, прогноз этой модели направлен вверх. Этот также происходит для ARIMA (2,0,0), которая является лучшей ARIMA, подходящей для данных с помощью auto.arima (пакет прогнозов) и для модели ARIMA(1,0,1).

(2) Значение перехвата для модели ARIMA(1,0,0) равно 12260,298. Не должен ли перехват удовлетворять уравнению: C = mean * (1 - sum (AR coeffs)), в этом случае значение должно быть 715.52. Должно быть, я упустил что-то важное.

(3)это явно ряд с нестационарным средним. Почему АР(2) модель выбрана лучшая модель на авто.Арима? Может ли быть интуитивное объяснение?

спасибо.

1 ответов


  1. модель ARIMA(p,0,q) не допускает тренда, потому что модель стационарна. Если вы действительно хотите включить тренд, используйте ARIMA(p,1,q) с термином дрейфа или ARIMA (p, 2,q). Дело в том, что авто.arima () предполагает, что 0 различий обычно указывают на отсутствие четкой тенденции.

  2. файл справки для arima () показывает, что перехват на самом деле является средним. То есть модель AR(1) является (Y_t-c) = phi*(Y_{t-1} - c) + e_t, а не Y_t = c + phi * Y_{t-1} + e_t, как и следовало ожидать.

  3. "авто".arima () использует тест единичного корня для определения необходимого количества различий. Поэтому проверьте результаты теста unit root, чтобы узнать, что происходит. Вы всегда можете указать необходимое количество различий в auto.arima () если вы считаете, что тесты единичного корня не приводят к разумной модели.

вот результаты двух тестов для ваших данных:

R> adf.test(x)

        Augmented Dickey-Fuller Test

data:  x 
Dickey-Fuller = -1.031, Lag order = 3, p-value = 0.9249
alternative hypothesis: stationary 

R> kpss.test(x)

        KPSS Test for Level Stationarity

data:  x 
KPSS Level = 0.3491, Truncation lag parameter = 1, p-value = 0.09909

Так говорит ADF сильно нестационарная (нулевая гипотеза в этом случае), в то время как КПСС не совсем отвергает стационарность (нулевая гипотеза для этого теста). автоматический.arima () использует последнее по умолчанию. Вы можете использовать auto.arima (x,test="adf"), если вы хотите первый тест. В этом случае он предлагает модель ARIMA(0,2,1), которая имеет тенденцию.