gpt4 book ai didi

r - 在R中的garchFit中tryCatch

转载 作者:行者123 更新时间:2023-12-03 08:55:50 31 4
gpt4 key购买 nike

当我运行该程序时,在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)
}
}
}
}
}

最佳答案

您应该首先确定哪个是导致您出错的电话。您可以在程序停止后通过调用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跳至下一个迭代。您将收到错误的详细信息,但程序将继续运行。如果您不想显示任何消息,请使用 try参数调用 silent=TRUE

关于r - 在R中的garchFit中tryCatch,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25956727/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com