以快速方式构建具有参数组合的模型

时间:2015-08-10 14:00:21

标签: r loops apply lapply

我正在尝试使用一组参数在R中构建ARIMA模型。 arima函数的签名是:

arima(x,
      order=(p, d, q),
      seasonal=list(order=(P, D, Q), period=S)
)

我正在尝试参数p, q, P, Q(假设dD固定为1)。

假设每个参数都是一个向量:

p = c(1, 2, 3)
P = c(1, 2, 3)
q = c(2, 3, 4)
Q = c(2, 3, 4)

我如何使用参数组合构建ARIMA模型?我知道嵌套循环是直观的方式,但我想有更多的R风格方法。

2 个答案:

答案 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中的辛勤工作。