我要运行以下代码。
library(fExtremes)
library(maxLik)
theta0 <- c(0.1, 1)
theta1 <- c(0.1, 2)
set.seed(20150518)
X <- matrix(0, nrow=1000, ncol=1000)
for(i in 1:1000){
X[i, ] <- c(rgpd(900, xi=-theta0[1], beta=theta0[2]),
rgpd(100, xi=-theta1[1], beta=theta1[2]))
}
library(maxLik)
loglik <- function(param){
shape <- param[1]
scale <- param[2]
sum(dgpd(x, xi=-shape, beta=scale, log=TRUE))
}
scale.mle <- rep(0, 1000)
for(i in 1:1000){
x <- X[i, ]
scale.mle[i] <- as.numeric(maxLik(logLik=loglik, start=c(theta0[1], theta0[2]), fixed=1)$estimate[2])
}
但是,对于某些运行,我收到以下错误消息:
Error in maxNRCompute(fn = logLikAttr, fnOrig = fn, gradOrig = grad, hessOrig = hess, :
NA in the initial gradient
更糟糕的是,一旦发生此错误,即使可以使用以后的数据输入,整个for
循环也会停止。我如何要求R
跳过这样有问题的案例并转到下一个案例。换句话说,如何在不停止的情况下继续完成所有1000次运行。感谢。
更新:感谢您指出其他问题。但是,我仍然没有得到它。有人可以用我的例子来说明tryCatch
的用法吗?