2011-09-28 15 views
15

パラメトリックブートストラップからのバイアスおよびスキュー補正されたブートストラップ信頼区間を計算するために、Rのbootパッケージのboot.ciを使用しようとしています。マニュアルページと実験の私の読書から、ジャックナイフの推定値を自分で計算してboot.ciに入力しなければならないと結論づけましたが、これは明示的にどこにも述べられていません。私は、私は、その後、起動パッケージのパラメトリックブートストラップで調整されたブートストラップ信頼区間(BCa)

私は単純に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間隔の式は、 のような厄介なパラメータがある場合、同じではなく、もっとも好ましくない値の導関数に依存します( )。 empinfは、 統計値がノンパラメトリックブートストラップのために使用される形式の1つであると仮定していますが、元の が起動(正しく)されたことを呼び出します。パラメトリックリサンプリングに適した別の形式の統計を に持っていました。

あなたは確かにあなたがやっていることをすることができますが、 ノンパラメトリック間隔推定とパラメトリックリサンプリングを混合する理論的な性質はわかりません。

+1

私はおそらく私が本を持っているという利点があり、それは回帰アプリケーションの全章を持っています。しかし、jackknifeを最初に行う必要があると確信していると言うので、 'jack.after.boot'を使って自分の結果を投稿すると便利なのかどうかはわかりません。 –

答えて

4

boot.ciページを見て、私はDavisonとHinkleyのCh 6の例の行に沿って構築されたブートオブジェクトを使用し、あなたが観察したエラーを生成したかどうかを確認することにしました。私は警告を受け取りますが、エラーはありません。:

require(boot) 
lmcoef <- function(data, i){ 
     d <- data[i, ] 
     d.reg <- lm(y~x, d) 
     c(coef(d.reg)) } 
lmboot <- boot(d, lmcoef, R=999) 
m1 
boot.ci(lmboot, index=2) # I am presuming that the interest is in the x-coefficient 
#---------------------------------- 
BOOTSTRAP CONFIDENCE INTERVAL CALCULATIONS 
Based on 999 bootstrap replicates 

CALL : 
boot.ci(boot.out = lmboot, index = 2) 

Intervals : 
Level  Normal    Basic   
95% (-0.0210, 0.0261) (-0.0236, 0.0245) 

Level  Percentile   BCa   
95% (-0.0171, 0.0309) (-0.0189, 0.0278) 
Calculations and Intervals on Original Scale 
Warning message: 
In boot.ci(lmboot, index = 2) : 
    bootstrap variances needed for studentized intervals 
+0

hmm。ありがとうございました...回帰は私の例でした(私の本当の問題はGLMMです)。しかし、私はこれを見て、あなたが行ったこと(作品)と私がやったことの違いを理解しようとしますそれはありません) –

+0

oops。わかりました。キーは私が**パラメトリック**ブートストラップを使っていることです、あなたはそうではありません。私は 'type =" parametric "と他の必要な変更(つまり' ran.gen'関数の追加など)でこれをやり直すと、私の例のようなものに終わるでしょう半手動のジャックナイフ計算なしでBCaの見積もりを提供していません。 –

+0

'type ="パラメトリック "はどのような価値がありますか?線形(または他の変換されたスケールでは線形)係数はパラメトリックな推定値です。だから、DavisonとHinkleyの第2章の内容を見直した後、上記のコードでパラメトリックなブートストラップをやっていると思います。 –

関連する問題