Объясняя прогнозы из модели ARIMA
-
30-09-2019 - |
Вопрос
Я пытаюсь объяснить себе прогнозировать результат в результате применения модели ARIMA на набор данных серии Time. Данные из 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), что является лучшим аримом, подходящим для данных, использующих 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
? Может ли быть интуитивное объяснение?
Спасибо.
Решение
Модель ARIMA (P, 0, Q) не позволит тенденцию, потому что модель стационарная. Если вы действительно хотите включить тенденцию, используйте ARIMA (P, 1, Q) с семестрам дрейфа или ARIMA (P, 2, Q). Тот факт, что AUTO.ARIMA () предлагает 0 различий, обычно указывает, что нет четкого тренда.
Файл справки для ARIMA () показывает, что перехват на самом деле среднее значение. То есть модель Ar (1)
(Y_t-c) = ϕ(Y_{t-1} - c) + e_t
скорее, чемY_t = c + ϕY_{t-1} + e_t
Как вы могли ожидать.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), которая имеет тенденцию.