0

我开始重写我所有的代码,从预测到寓言。有人知道为什么常数与平均值不同吗?

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

1 回答 1

2

您在寓言和预测之间指定的模型是等效的。包之间的参数化不同,fable::ARIMA使用常量形式,而forecast::Arima使用stats::arima平均形式。

这在https://otexts.com/fpp3/arima-r.html#understanding-constants-in-r中进行了讨论


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

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_constraintwith来保持自动选择order_constraint = TRUE(这意味着无论何时测试约束,它都将为 TRUE,即可接受)。

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

于 2020-01-27T22:36:34.657 回答