我开始重写我所有的代码,从预测到寓言。有人知道为什么常数和平均值不同吗?
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.`发布于 2020-01-27 22:36:34
您在寓言和预测之间指定的模型是等效的。包之间的参数化不同,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。由于未指定常量(并将自动选择),因此将强制执行该order约束(没有提供可评估的模型)。您可以通过使用order_constraint删除order_constraint = TRUE来保持自动选择(这意味着每当测试约束时,它都是真的,也就是可接受的)。
我已经更新了包,以包括更多的信息错误和更好的描述参数化在?ARIMA中。
https://stackoverflow.com/questions/59750645
复制相似问题