Объяснение прогнозов по модели 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 ответов
модель ARIMA(p,0,q) не допускает тренда, потому что модель стационарна. Если вы действительно хотите включить тренд, используйте ARIMA(p,1,q) с термином дрейфа или ARIMA (p, 2,q). Дело в том, что авто.arima () предполагает, что 0 различий обычно указывают на отсутствие четкой тенденции.
файл справки для arima () показывает, что перехват на самом деле является средним. То есть модель AR(1) является (Y_t-c) = phi*(Y_{t-1} - c) + e_t, а не Y_t = c + phi * Y_{t-1} + e_t, как и следовало ожидать.
"авто".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), которая имеет тенденцию.