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

Я пытаюсь объяснить себе результат прогнозирования от применения модели 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

  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

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