Почему константа «fabletools» отличается от среднего значения в «прогнозе» (модель ARIMA)? - PullRequest
0 голосов
/ 15 января 2020

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

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 Ответ

2 голосов
/ 28 января 2020

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

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


Кроме того, в спецификации вашей басни вы не указали постоянную (или эквивалентно 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. Поскольку константа не указана (и будет выбрана автоматически), это ограничение порядка применяется (не предоставляя возможных моделей для оценки). Вы можете сохранить автоматический выбор c, удалив order_constraint с помощью order_constraint = TRUE (это означает, что всякий раз, когда проверяется ограничение, оно будет ИСТИННО, т.е. приемлемым).

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

...