【问题标题】:tryCatch in garchFit in RR中的garchFit中的tryCatch
【发布时间】:2014-09-21 07:07:24
【问题描述】:

当我运行此程序时,我在 160 次“运行”(共 210 次)后收到一条错误消息:

    Error in solve.default(fit$hessian) : system is computationally singular: reciprocal condition number = 1.24675e-16
    In addition: There were 35 warnings (use warnings() to see them)    

当我收到错误时,程序停止。我已经用另一组数据运行了程序。然后它工作得很好。如何在此处使用 tryCatch 以使程序在发生错误时不会停止?

minOrder <- c(0,0,1,0)
maxOrder <- c(5,5,2,2)
bestAIC <- 1e9
model <- list()
N1 <- ((0^minOrder[1]+maxOrder[1])*(0^minOrder[2]+maxOrder[2])*(0^minOrder[3]+maxOrder[3])*    (0^minOrder[4]+maxOrder[4]))
AIC <- numeric(N1)
MODEL <- mat.or.vec(N1,length(maxOrder))
i <- 1

for(p in minOrder[1]:maxOrder[1]){
for(q in minOrder[2]:maxOrder[2]){
    if(p==0 && q==0){q <- 1}
    for(m in minOrder[3]:maxOrder[3]){
        for(s in minOrder[4]:maxOrder[4]){      
            model <- garchFit(substitute(~arma(ar,ma)+garch(alpha,beta), list(ar=p,ma=q,alpha=m,beta=s)), data=logr, trace=F, cond.dist = c("norm"), include.mean=TRUE)
            AICmodel <- model@fit$ics[1]
            AIC[i] <- AICmodel
            MODEL[i,] <- c(p,q,m,s)
            i <- i+1
            if(AICmodel < bestAIC){
            bestAIC <- AICmodel
            bestFIT <- model
            bestMODEL <- c(p,q,m,s)
            }
        }
    }
}
}

【问题讨论】:

    标签: r error-handling try-catch


    【解决方案1】:

    您应该首先确定哪个是给您错误的调用。您可以在程序停止后调用traceback() 来执行此操作。然后将该调用附在try 中。我猜你在调用garchFit 时会收到错误消息。如果是这种情况,您可以:

        model <- try(garchFit(substitute(~arma(ar,ma)+garch(alpha,beta), list(ar=p,ma=q,alpha=m,beta=s)), data=logr, trace=F, cond.dist = c("norm"), include.mean=TRUE))
        if (class(model)=="try-error") next
    

    try 如果成功则返回它所包含的表达式的结果,或者返回带有错误详细信息的 try-error 类的对象的结果。如果是这种情况,您可以通过next 跳到下一个迭代。您将收到错误的详细信息,但程序将继续运行。如果您不想显示任何消息,请使用 silent=TRUE 参数调用 try

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-09-30
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多