Почему константа 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
.