R 错误处理中的循环
前提: 我编写了一个函数,用于计算时间序列的最佳ARIMA模型:我为该函数提供AR成员的最大阶数,然后通过最大p值消除不重要的AR成员 问题: Arima函数有时无法计算某些模型,例如,最大AR阶数过高,并产生错误,通常可通过引入较短的最大AR阶数来修复 在得到Arima能够计算的模型之前,我如何一个接一个地减少最大阶数 我在下面写了一个例子。我们有25个观测值,我们将模型设置为有25个AR成员,这是一种过分的做法,会产生一个错误。因此,循环应该减少25到一个较低的数字,这样模型实际上可以在最大长度上进行计算。然后,算法将启动并找到最合适的模型R 错误处理中的循环,r,loops,error-handling,R,Loops,Error Handling,前提: 我编写了一个函数,用于计算时间序列的最佳ARIMA模型:我为该函数提供AR成员的最大阶数,然后通过最大p值消除不重要的AR成员 问题: Arima函数有时无法计算某些模型,例如,最大AR阶数过高,并产生错误,通常可通过引入较短的最大AR阶数来修复 在得到Arima能够计算的模型之前,我如何一个接一个地减少最大阶数 我在下面写了一个例子。我们有25个观测值,我们将模型设置为有25个AR成员,这是一种过分的做法,会产生一个错误。因此,循环应该减少25到一个较低的数字,这样模型实际上可以在最大
ar.sim <- arima.sim(model=list(ar=c(0.9,-0.5)),n=500)
lmod1 <- Arima(ar.sim, order=c(40,0,0))
set.seed(12512)
ar.sim <- arima.sim(model=list(ar=c(0.9,-0.5)),n=25)
lmod1 <- Arima(ar.sim, order=c(40,0,0))
p=25
for (i in 1:23 ) {
result = tryCatch({
lmod1 <- Arima(ar.sim, order=c(p,0,0))
}, error = function(e) {
lmod2 <- Arima(ar.sim, order=c(p-i,0,0))
})
}
然而,lmod2也会产生错误,从而中断循环。处理的错误部分似乎也需要一个循环,但我不确定如何实现这一点?任何想法都会很有帮助,谢谢。您应该看看plyr软件包中的failwith,这对实现这一目标很有用。我想您正在努力,请查看forecast软件包中的auto.arima功能。此外,如果您的代码依赖于Arima函数之类的包,请务必在帖子中提及它。