为什么常量 `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::Arima
和 stats::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
。
我开始重写我所有的代码,从 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::Arima
和 stats::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
。