boot
標準誤差を推定するために、最適化関数をブートストラップするために使用しています。残念ながら、まれに最適化関数がエラーを返し、関数が停止することがありboot
ます。エラーは見積もりにとって重要ではなく、その反復をスキップして次の反復に進みたいと思います。
try
andを使用して解決策を見つけようとしましたが、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)} )
}