为什么常量 `fabletools` 与 `forecast` 包(ARIMA 模型)中的平均值不同?

Why is the constant `fabletools` different from the mean in `forecast` package (ARIMA model)?

我开始重写我所有的代码,从 forecast 到 fable。 有人知道为什么常量与平均值不同吗?

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.`

您在 fable 和 forecast 之间指定的模型是等效的。 包之间的参数化不同,fable::ARIMA 使用常量形式而 forecast::Arimastats::arima 使用均值形式。

这在 https://otexts.com/fpp3/arima-r.html#understanding-constants-in-r

中讨论

此外,在您的寓言模型规范中,您没有指定模型中的常量(或等效的 include.mean)。如果不这样做,fable 将通过类似于 auto.arima 的算法在包含和排除常量之间自动 select。您应该在公式中添加 1(包括)或 0(排除)以指定模型的常量。

fable::ARIMA(V ~ 1 + pdq(3, 0, 0) + PDQ(0, 0, 0))) 等同于 forecast::Arima(V, c(3, 0, 0), include.mean = TRUE).

这也是您在估计高阶模型时遇到问题的原因。当自动 selecting 模型时,fable::ARIMA 将遵守参数 order_constraint = p + q + P + Q <= 6。由于未指定常量(并将自动 selected),因此强制执行此顺序约束(不提供可能的模型进行评估)。您可以通过使用 order_constraint = TRUE 删除 order_constraint 来保持自动 selection(这意味着无论何时测试约束,它将是 TRUE,即可接受)。

我更新了包以包含更多信息错误和更好的参数化描述 ?ARIMA