我正在使用boot
引导优化函数来估计标准误差。不幸的是,在极少数情况下,优化函数会返回一个错误,从而停止该boot
函数。该错误对估计并不重要,我想跳过该迭代并继续下一个。
我试图找到一个解决方案,try
但tryCatch
都无法正确使用。在将优化功能包装在其中时,statistic
我设法跳过了错误。但是,这会导致估计的次数boot
小于初始迭代次数并返回错误。
我的代码的基本示例如下
任何帮助表示赞赏,谢谢
bootfun = function(bootdata, i, d, C1) {
C1 = cov (bootdata[i])
ans = constrOptim(...) #This function returns an error
return(ans$par [d])
}
bootres = boot(bootdata, statistic = bootfun, 500)
编辑:我已经设法为我的问题找到一个可接受的解决方案。但是,如果一个函数经常出错,这可能是不可接受的,因为每个错误都会用 NA 替换引导复制。
bootfun = function(bootdata, i, d, C1) {
C1 = cov(bootresid[i])
tryCatch({
ans = constrOptim(...)
return(ans$par[1:18] [d]) },
error=function(err) {rep(NA,18)} )
}