指定季节性 ARIMA
Specify seasonal ARIMA
我遇到了一些 forecast::Arima 语法问题。如果我知道季节性 ARIMA 在统计上是正确的,因为它是 auto.arima 的结果,我如何修复以下 Arima 函数使其具有与 auto.arima 结果相同的顺序:
library(forecast)
set.seed(1)
y <- sin((1:40)) * 10 + 20 + rnorm(40, 0, 2)
my_ts <- ts(y, start = c(2000, 1), freq = 12)
fit_auto <- auto.arima(my_ts, max.order = 2)
plot(forecast(fit_auto, h = 24))
# Arima(0,0,1)(1,0,0) with non-zero mean
fit_arima <- Arima(my_ts,
order = c(0, 0, 1),
seasonal = list(c(1, 0, 0)))
#Error in if ((order[2] + seasonal$order[2]) > 1 & include.drift) { :
# argument is of length zero
谢谢和亲切的问候
seasonal
的参数必须是给出季节顺序的数值向量,或者是包含两个命名元素的列表:order
、给出季节顺序的数值向量和 period
,一个给出季节性周期性的整数。
您提供的列表仅包含季节性订单,因此 Arima
抱怨找不到 period
值。如果你给出一个数字向量,period
将默认为 frequency(my_ts)
,就像函数文档中所说的那样。虽然仅以数字或列表形式给出顺序应该具有相同的结果确实有意义,但事实并非如此。只是这个功能的一个怪癖。
重写有效的调用:
fit_arima <- Arima(my_ts,
order = c(0, 0, 1),
seasonal = c(1, 0, 0)) # vector, not a list
我遇到了一些 forecast::Arima 语法问题。如果我知道季节性 ARIMA 在统计上是正确的,因为它是 auto.arima 的结果,我如何修复以下 Arima 函数使其具有与 auto.arima 结果相同的顺序:
library(forecast)
set.seed(1)
y <- sin((1:40)) * 10 + 20 + rnorm(40, 0, 2)
my_ts <- ts(y, start = c(2000, 1), freq = 12)
fit_auto <- auto.arima(my_ts, max.order = 2)
plot(forecast(fit_auto, h = 24))
# Arima(0,0,1)(1,0,0) with non-zero mean
fit_arima <- Arima(my_ts,
order = c(0, 0, 1),
seasonal = list(c(1, 0, 0)))
#Error in if ((order[2] + seasonal$order[2]) > 1 & include.drift) { :
# argument is of length zero
谢谢和亲切的问候
seasonal
的参数必须是给出季节顺序的数值向量,或者是包含两个命名元素的列表:order
、给出季节顺序的数值向量和 period
,一个给出季节性周期性的整数。
您提供的列表仅包含季节性订单,因此 Arima
抱怨找不到 period
值。如果你给出一个数字向量,period
将默认为 frequency(my_ts)
,就像函数文档中所说的那样。虽然仅以数字或列表形式给出顺序应该具有相同的结果确实有意义,但事实并非如此。只是这个功能的一个怪癖。
重写有效的调用:
fit_arima <- Arima(my_ts,
order = c(0, 0, 1),
seasonal = c(1, 0, 0)) # vector, not a list