Почему константа fabletools отличается от среднего значения в пакете прогнозов (модель ARIMA)?

Я начал переписывать весь свой код от прогноза до басни. Кто-нибудь знает, почему константа отличается от среднего?

library("fable")
library("lubridate")
library("dplyr")
library("forecast")

# gen data
set.seed(68)
df <- data.frame(time = ymd(Sys.Date() - c(1:1000)),
                 V = rnorm(1000, 0.2))
df <- fabletools::as_tsibble(df, index = time, regular = TRUE) %>% dplyr::arrange(time)

# fable model
df %>% fabletools::model(fable::ARIMA(V ~ pdq(3, 0, 0) + PDQ(0, 0, 0))) %>% report()

# forecast model
as.ts(df) %>% forecast::Arima(c(3, 0, 0), include.mean = TRUE)

басня модель

Series: V 
Model: ARIMA(3,0,0) w/ mean 

Coefficients:
          ar1      ar2      ar3  constant
      -0.0578  -0.0335  -0.0158    0.2141
s.e.   0.0316   0.0317   0.0317    0.0308

sigma^2 estimated as 0.9499:  log likelihood=-1391.23
AIC=2792.45   AICc=2792.51   BIC=2816.99

модель прогноза

Series: . 
ARIMA(3,0,0) with non-zero mean 

Coefficients:
          ar1      ar2      ar3    mean
      -0.0578  -0.0335  -0.0158  0.1934
s.e.   0.0316   0.0317   0.0317  0.0278

sigma^2 estimated as 0.9499:  log likelihood=-1391.23
AIC=2792.45   AICc=2792.51   BIC=2816.99

и для некоторых моделей более высокого порядка я получаю следующую ошибку, которую я не могу правильно интерпретировать. Я могу оценить модели сforecast, хотя модели могут быть глупыми, я даже не могу оценить их с помощью fable

Warning message: 
1 error encountered for ar
[1] There are no ARIMA models to choose from after imposing the `order_constraint`, please consider allowing more models.`

1 ответ

Решение

Модели, которые вы указываете между басней и прогнозом, эквивалентны. Параметры пакетов различаются,fable::ARIMA использует постоянную форму, тогда как forecast::Arima а также stats::arima использовать среднюю форму.

Это обсуждается в https://otexts.com/fpp3/arima-r.html


Более того, в спецификации вашей басни вы не указали, является ли константа (или, что то же самое, include.mean) в модели. Если этого не сделать, fable автоматически выберет между включением и исключением константы с помощью алгоритма, подобногоauto.arima. Вы должны добавить1 (включить) или 0 (исключить) в формулу, чтобы указать константу модели.

fable::ARIMA(V ~ 1 + pdq(3, 0, 0) + PDQ(0, 0, 0))) эквивалентно forecast::Arima(V, c(3, 0, 0), include.mean = TRUE).

По этой же причине у вас возникают проблемы с оценкой моделей более высокого порядка. При автоматическом выборе моделиfable::ARIMA будет уважать аргумент order_constraint = p + q + P + Q <= 6. Поскольку константа не указана (и будет выбрана автоматически), это ограничение порядка применяется (не давая возможности оценить модели). Вы можете сохранить автоматический выбор, удаливorder_constraint с order_constraint = TRUE (это означает, что при тестировании ограничения оно будет ИСТИНА, т.е. приемлемо).

Я обновил пакет, включив в него более информативные ошибки и лучшее описание параметризации в ?ARIMA.

Другие вопросы по тегам