Я устанавливаю ARIMA (0, 1, 1) с моделями дрейфа, используя пакет прогноза в R. Некоторые из моих временных рядов имеют пропущенные значения спереди. С прогнозом версии 8.4 и ранее это не вызывало проблем. С версией 8.5 и выше я получаю неожиданные результаты. Это ошибка?
Ниже приведены примеры. Я ожидаю, что пропущенные значения на фронте должны быть проигнорированы, и прогнозы должны быть
[1] 4.644542 4.700419 4.756296
Вот пример с версией 8.5.
> library(forecast)
>
> print(packageVersion("forecast"))
[1] ‘8.5’
> y.ts <- ts(c(NA, NA, NA, NA, NA, NA, NA, NA, 4.02, 4.06, 4.05, 4.01,
+ 4.02, 4.04, 4.16, 4.12, 4.15, 4.44, 4.60))
> fit <- Arima(y.ts, c(0, 1, 1), include.drift = T)
> print(fit)
Series: y.ts
ARIMA(0,1,1) with drift
Coefficients:
ma1 drift
0.6464 0.0559
s.e. 0.5060 0.0447
sigma^2 estimated as 0.009785: log likelihood=9.79
AIC=-13.58 AICc=-9.58 BIC=-12.67
> print((forecast(fit, 3)$mean))
Time Series:
Start = 20
End = 22
Frequency = 1
[1] 4.197528 4.253405 4.309282
А вот результаты с версия 8.4:
> library(forecast)
>
> print(packageVersion("forecast"))
[1] ‘8.4’
> y.ts <- ts(c(NA, NA, NA, NA, NA, NA, NA, NA, 4.02, 4.06, 4.05, 4.01,
+ 4.02, 4.04, 4.16, 4.12, 4.15, 4.44, 4.60))
> fit <- Arima(y.ts, c(0, 1, 1), include.drift = T)
> print(fit)
Series: y.ts
ARIMA(0,1,1) with drift
Coefficients:
ma1 drift
0.6464 0.0559
s.e. 0.5060 0.0447
sigma^2 estimated as 0.004892: log likelihood=9.79
AIC=-13.58 AICc=-11.87 BIC=-10.91
> print((forecast(fit, 3)$mean))
Time Series:
Start = 20
End = 22
Frequency = 1
[1] 4.644542 4.700419 4.756296
Учитывая, что обе модели имеют одинаковые коэффициенты и остатки, я считаю, что они должны давать одинаковые прогнозы. Я проверил, что прогноз "вручную", используя коэффициенты и остатки. Это показывает, что версия 8.4 дает правильные прогнозы. Вывод этой следующей строки одинаков, независимо от того, какую версию я загрузил.
> print(y.ts[[length(y.ts)]] + fit$coef[['drift']] + fit$residuals[[length(y.ts)]]*fit$coef[['ma1']])
[1] 4.644542
Я также пытался использовать последнюю версию пакета прогноза (8.12 на момент написания этой статьи). Результаты соответствуют результатам версии 8.5.
Интересно, что разница между двумя модельными прогнозами почти точно кратна коэффициенту дрейфа, где множитель равен числу пропущенных значений:
> (4.644542 - 4.197528)/.0559
[1] 7.996673
Мне кажется, что это, вероятно, ошибка, потому что версия 8.4 корректно обрабатывает эти ситуации, в то время как 8.5 и выше дают плохие результаты без предупреждения.