0

以下のコードを実行すると、関数「gdp」はいくつかの推定を解決しませんが、これは問題ありませんが、最初のエラーでループが停止します。含まれている関数の 1 つに推定エラーがあってもループが終了するようにするには、コードに何を含める必要がありますか?

for(i in mars){
for(j in 1:5){
    negRets <- -table1.matrix[,j]
    tauSigma <- gpd(negRets,threshold=i)
    tau <- tauSigma$par.ests[1]
    sigma <- tauSigma$par.ests[2]
    #cat("For ", reitPort[j], "portfolio and MAR=", i, "the parameter estimats are:", "\n")
    #cat("Tau= ", tau, "Sigma= ", sigma, "\n")
    exceedence.vector <- sort(subset(negRets, negRets > i))
    returns.sorted <- sort(negRets)
    pdf(paste("C:\\Users\\John Broussard\\Dropbox\\evtHandbookProject\\figuresTables\\mar_",i,"_",reitPort[j],".pdf",sep=""))
        plot(returns.sorted, dgpd(returns.sorted, xi = tau, beta = sigma), type ="l", col="blue", ylim=c(0,90))
        title(main=cat("Tau= ", tau, " Sigma= ", sigma), ylab=" ")
    dev.off()
    #print(j)
    #print(i)
}
}

ありがとう

4

1 に答える 1

0

エラーに対して何もせずに try catch を使用できます。

for(i in mars){
for(j in 1:5){
    tryCatch({
        negRets <- -table1.matrix[,j]
        tauSigma <- gpd(negRets,threshold=i)
        tau <- tauSigma$par.ests[1]
        sigma <- tauSigma$par.ests[2]
        #cat("For ", reitPort[j], "portfolio and MAR=", i, "the parameter estimats are:", "\n")
        #cat("Tau= ", tau, "Sigma= ", sigma, "\n")
        exceedence.vector <- sort(subset(negRets, negRets > i))
        returns.sorted <- sort(negRets)
        pdf(paste("C:\\Users\\John Broussard\\Dropbox\\evtHandbookProject\\figuresTables\\mar_",i,"_",reitPort[j],".pdf",sep=""))
            plot(returns.sorted, dgpd(returns.sorted, xi = tau, beta = sigma), type ="l", col="blue", ylim=c(0,90))
            title(main=cat("Tau= ", tau, " Sigma= ", sigma), ylab=" ")
        dev.off()
        #print(j)
        #print(i)
    }, error = function(e) {

    })
}
}

参考 http://mazamascience.com/WorkingWithData/?p=912

于 2013-08-01T22:52:44.353 に答える