Объяснение прогнозов по модели ARIMA - PullRequest
13 голосов
/ 21 апреля 2010

Я пытаюсь объяснить себе результат прогнозирования от применения модели ARIMA к набору данных временных рядов. Данные из M1-Competition, серия 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) Это, очевидно, серия с нестационарным средним. Почему модель AR (2) по-прежнему выбрана лучшей моделью по auto.arima? Может ли быть интуитивное объяснение?

Спасибо.

1 Ответ

23 голосов
/ 22 апреля 2010
  1. Никакая модель ARIMA (p, 0, q) не учитывает тренд, потому что модель является стационарной. Если вы действительно хотите включить тренд, используйте ARIMA (p, 1, q) со смещением или ARIMA (p, 2, q). Тот факт, что auto.arima () предлагает 0 различий, обычно указывает на отсутствие четкой тенденции.

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

  3. auto.arima() использует проверку единичного корня для определения необходимого количества различий. Так что проверьте результаты модульного корневого теста, чтобы увидеть, что происходит. Вы всегда можете указать необходимое количество различий в 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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...