18

boot.ciR のbootパッケージから使用して、パラメトリック ブートストラップからバイアスおよびスキューを修正したブートストラップ信頼区間を計算しようとしています。マニュアルページを読んで実験した結果、ジャックナイフの推定値を自分で計算して に入力する必要があると結論付けましたboot.ciが、これはどこにも明示的に述べられていません。私は他のドキュメントを見つけることができませんでしたが、公平を期すために、コードの基になっている元のデイヴィソンとヒンクリーの本は見ていません...

単純に実行b1 <- boot(...,sim="parametric")してから を実行するとboot.ci(b1)、エラーが発生しますinfluence values cannot be found from a parametric bootstraptype="all"このエラーは、またはを指定した場合にのみ発生しますtype="bca"boot.ci(b1,type="bca")同じエラーが発生します。そうempinf(b1)です。物事を機能させる唯一の方法は、(引数を使用empinf()して) ジャックナイフ推定値を明示的に計算し、これらを に入力することです。databoot.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 への元の呼び出しには統計がありましたパラメトリック リサンプリングに適した別の形式で。

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

4

1 に答える 1

5

boot.ci ページを見た後、Davison と Hinkley の Ch 6 の例に沿って構築された boot-object を使用し、観察したエラーが生成されるかどうかを確認することにしました。警告は表示されますが、エラーは発生しません。:

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
于 2011-09-28T20:17:28.023 に答える