4

lmのブートストラップされたt値とブートストラップされたp値を取得したいと思います。私は動作する次のコード(基本的に紙からコピーされた)を持っています。

# First of all you need the following packages
install.packages("car") 
install.packages("MASS")
install.packages("boot")
library("car")
library("MASS")
library("boot")

boot.function <- function(data, indices){
data <- data[indices,]
mod <- lm(prestige ~ income + education, data=data) # the liear model

# the first element of the following vector contains the t-value
# and the second element is the p-value
c(summary(mod)[["coefficients"]][2,3], summary(mod)[["coefficients"]][2,4])     
}

ここで、ブートストラップモデルを計算します。これにより、次のようになります。

duncan.boot <- boot(Duncan, boot.function, 1999)
duncan.boot

ORDINARY NONPARAMETRIC BOOTSTRAP


Call:
boot(data = Duncan, statistic = boot.function, R = 1999)


Bootstrap Statistics :
        original      bias    std. error
t1* 5.003310e+00 0.288746545  1.71684664
t2* 1.053184e-05 0.002701685  0.01642399

2つの質問があります:

  1. 私の理解では、ブートストラップ値は元の値にバイアスを加えたものです。つまり、ブートストラップされた値(ブートストラップされたt値とブートストラップされたp値)の両方が元の値よりも大きいということです。これは不可能です。なぜなら、t値が上がると(つまり、より重要になる)、p値は低くなければならないからです。したがって、私はまだブート関数の出力を本当に理解していないと思います(ここでは:) duncan.boot。ブートストラップされた値を計算するにはどうすればよいですか?

  2. boot()がどのように機能するのかわかりません。見てみるduncan.boot <- boot(Duncan, boot.function, 1999)と、関数「boot.function」の引数を渡していないことがわかります。Rが設定されていると思いますdata <- Duncan。しかし、引数「indices」には何も渡していないため、関数「boot.function」の次の行がどのように機能するのかわかりません。data <- data[indices,]

質問が理にかなっていることを願っています!??

4

1 に答える 1

7

ブート関数は、2つの引数を持つ関数を取得することを「期待」しています。1つ目はdata.frameで、2つ目は行の選択に使用する「インデックス」ベクトル(エントリが重複している可能性があり、すべてのインデックスを使用していない可能性があります)です。次に、元のデータフレームからの重複と三重のパターンによって決定された置換を使用してサンプリングし(異なる「選択セット」を持つ「R」によって複数回決定されます)、それらをインデックス引数に渡します。 boot.functionを実行し、R個の関数アプリケーションの結果を収集します。

ブートオブジェクトのメソッドによって報告される内容についてはprint、これを見てください(str()で返されたオブジェクトを調べた後に実行されます)

> duncan.boot$t0
[1] 5.003310e+00 1.053184e-05
> apply(duncan.boot$t, 2, mean)
[1] 5.342895220 0.002607943
> apply(duncan.boot$t, 2, mean) - duncan.boot$t0
[1] 0.339585441 0.002597411

T0バイアスはboot()された値の平均と値の差であるのに対し、値は元のデータからのものであることがより明白になりT0ます。推定t統計量の増加に伴い、パラメトリックな考察に基づくp値が増加している理由を尋ねるのはあまり意味がないと思います。あなたがそれをするとき、あなたは本当に統計的思考の2つの異なる領域にいます。私は、p値の増加を、正規分布の仮定を考慮していないサンプリングプロセスの効果として解釈したでしょう。これは、p値のサンプリング分布について何かを言っているだけです(これは実際には別のサンプル統計です)。

(コメント:R開発時に使用されたソースブックはDavisonとHinkleyの「ブートストラップ法とその応用」でした。上記の私の答えに対する支持を主張するつもりはありませんが、Hagen Brennerが尋ねた後、参考として入れようと思いました。以下のコメントの2つのインデックスを使用したサンプリングについて。単純なパラメトリック推定を超えた後に発生するブートストラップの多くの予期しない側面があり、より複雑なサンプリング状況に取り組んでいる場合は、最初にその参照に目を向けます。)

于 2011-11-25T20:36:54.040 に答える