boot.ci
R のboot
パッケージから使用して、パラメトリック ブートストラップからバイアスおよびスキューを修正したブートストラップ信頼区間を計算しようとしています。マニュアルページを読んで実験した結果、ジャックナイフの推定値を自分で計算して に入力する必要があると結論付けましたboot.ci
が、これはどこにも明示的に述べられていません。私は他のドキュメントを見つけることができませんでしたが、公平を期すために、コードの基になっている元のデイヴィソンとヒンクリーの本は見ていません...
単純に実行b1 <- boot(...,sim="parametric")
してから を実行するとboot.ci(b1)
、エラーが発生しますinfluence values cannot be found from a parametric bootstrap
。type="all"
このエラーは、またはを指定した場合にのみ発生しますtype="bca"
。boot.ci(b1,type="bca")
同じエラーが発生します。そうempinf(b1)
です。物事を機能させる唯一の方法は、(引数を使用empinf()
して) ジャックナイフ推定値を明示的に計算し、これらを に入力することです。data
boot.ci
データを構築します。
set.seed(101)
d <- data.frame(x=1:20,y=runif(20))
m1 <- lm(y~x,data=d)
ブートストラップ:
b1 <- boot(d$y,
statistic=function(yb,...) {
coef(update(m1,data=transform(d,y=yb)))
},
R=1000,
ran.gen=function(d,m) {
unlist(simulate(m))
},
mle=m1,
sim="parametric")
ここまでは順調です。
boot.ci(b1)
boot.ci(b1,type="bca")
empinf(b1)
すべて上記のエラーが発生します。
これは機能します:
L <- empinf(data=d$y,type="jack",
stype="i",
statistic=function(y,f) {
coef(update(m1,data=d[f,]))
})
boot.ci(b1,type="bca",L=L)
これが私がやっていることになっている方法であるかどうか、誰かが知っていますか?
更新:boot
パッケージの元の作成者が電子メールに返信しました:
...問題は、パラメトリックブートストラップを実行していることです。ブートに実装されている bca 間隔は非パラメトリック間隔であり、これはどこかに明示的に記載されているはずです。パラメトリック bca 間隔の式は同じではなく、あなたの場合のように厄介なパラメーターがある場合、最も好ましくない家族の可能性の導関数に依存します。(Davison & Hinkley の pp 206-207 を参照してください) empinf は、統計が非パラメトリック ブートストラップに使用される形式の 1 つであることを前提としています (これは、empinf への呼び出しの例で行いました) が、(正しく) boot への元の呼び出しには統計がありましたパラメトリック リサンプリングに適した別の形式で。
あなたは確かにあなたがしていることをすることができますが、パラメトリックリサンプリングとノンパラメトリック間隔推定を混合することの理論的特性については確信が持てません。