Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 错误处理中的循环_R_Loops_Error Handling - Fatal编程技术网

R 错误处理中的循环

R 错误处理中的循环,r,loops,error-handling,R,Loops,Error Handling,前提: 我编写了一个函数,用于计算时间序列的最佳ARIMA模型:我为该函数提供AR成员的最大阶数,然后通过最大p值消除不重要的AR成员 问题: Arima函数有时无法计算某些模型,例如,最大AR阶数过高,并产生错误,通常可通过引入较短的最大AR阶数来修复 在得到Arima能够计算的模型之前,我如何一个接一个地减少最大阶数 我在下面写了一个例子。我们有25个观测值,我们将模型设置为有25个AR成员,这是一种过分的做法,会产生一个错误。因此,循环应该减少25到一个较低的数字,这样模型实际上可以在最大

前提:

我编写了一个函数,用于计算时间序列的最佳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函数之类的包,请务必在帖子中提及它。