我正在尝试使用一组参数在R中构建ARIMA模型。 arima
函数的签名是:
arima(x,
order=(p, d, q),
seasonal=list(order=(P, D, Q), period=S)
)
我正在尝试参数p, q, P, Q
(假设d
和D
固定为1
)。
假设每个参数都是一个向量:
p = c(1, 2, 3)
P = c(1, 2, 3)
q = c(2, 3, 4)
Q = c(2, 3, 4)
我如何使用参数组合构建ARIMA模型?我知道嵌套循环是直观的方式,但我想有更多的R风格方法。
答案 0 :(得分:3)
您可以将所有参数放入数据结构
params<-data.frame(p,P,q,Q,d=1,D=1,S=4)
然后你可以在行上使用lapply
并在每行的环境中使用with
。
lapply(1:nrow(params),function(i) with(params[i,],
arima(x,order=c(p, d, q),seasonal=list(order=c(P, D, Q), period=S))))
如果您指的是p,P,q,Q
的所有可能组合,请将参数设置为expand.grid(p=p,P=P,q=q,Q=Q)
。但是,请参阅auto.arima
中的forecast
了解逐步方法。
答案 1 :(得分:1)
我强烈建议您查看forecast
包,特别是auto.arima
函数。真的很棒。该软件包的作者甚至还有一本教科书,您可以购买或read online。
另外,我应该补充一点,使用@A会遇到麻烦。 Webb方法 - 从编程的角度来看并不是很糟糕,但是arima
会进行检查以确保所提出的模型在统计上是静止的。因此,您必须edit(arima)
删除该行,或提前进行测试以确保不建议使用非静态参数集,或将整个内容包装在tryCatch
中。我自己完成了所有这些。最简单的方法是最终利用auto.arima
中的辛勤工作。