今やBootstrap法知らずして、ちょっと手の混んだ研究を行うことは難しいです。
というかこれが簡単に行えるおかげで、複雑な解析の95%信頼区間やp値を簡単に出すことができる、といえます。
この記事では、Bootstrap法の基本的+実用的な解説を行います。
*初学者向けです
Bootstrap法について簡単解説【実践的】
Bootstrap法は、95%信頼区間(とp値)を出す、非常に汎用性の高い+統計的に適切な方法です。
簡単に言えば、
・1000人の集団のデータを使って、ある値を算出する。その値の95%信頼区間が知りたい。
・新しいデータセット1を以下のように作る
1人目はもとの1000人からランダムに抽出した1人
2人目ももとの1000人からランダムに抽出した1人
····
1000人目ももとの1000人からランダムに抽出した1人
*当然オーバーラップしうる
・このように「新しいデータセット」を1000個作る
・それぞれの新しいデータセットで、問題の値を計算する
・その値を小さい順に並べ、下から2.5パーセンタイル値、上から2.5パーセンタイル値をそれぞれ95%信頼区間の下限と上限とする
ということです。
これがよいのは、その問題の値を出すのが複雑な場合。
普通のregressionで算出されるWald 95%信頼区間で良いのか、微妙な時が(たくさん)あります。
例えば2回regressionが必要な時:1回目のregressionで必要な値を計算し、2回目のregressionで欲しい値を得る、といった場面。
こんなとき、2回目のregressionしか問題としない95%信頼区間の出し方は明らかな「誤り」です。
でもBootstrap法なら、(ほぼ)どんな時でも、上記のように「統計的に正しい」信頼区間が得られます。
すごい!
Rで簡単実装
1) まずLibrary読み込み
library(“boot”)
2) 知りたい値を出すfunctionを作る
stat <- function(data, boot_ind){
#data[boot_ind]をmain dataとして知りたい値を算出
return(#知りたい値)
}
3) result <- boot(data=data, statistic=stat, R=1000)
これで1000回のbootstrap完成
4) boot.ci(result, conf=0.95, type =c(“perc”))
これで95%信頼区間ゲット!
おしまい!
ちょっと詳細
これでとりあえずOKなのですが、せっかくなのでちょっと詳細を解説します。
95%信頼区間の出し方はたくさんある!
✔上に紹介したのがpercentile method。なのでtypeが”perc”です。
✔bootstrapした1000個の統計量が正規分布に従うと考えて、±1.96*SEで算出する方法もあります。
typeは”norm”。
これは正規分布に従うということを前提に行うので、もちろん分布をチェックした上で使うのは構わないですが、めんどくさいので”perc”でよいです。
✔「bootstrap t interval」という方法もあります。
これも使わなくて良いですが、文章にするとこんな感じ:
それぞれの値に対してそれぞれのSEで標準化し、小さい順に並び替え、2.5/97.5パーセンタイルのものをピックアップ、その2つのSEと境界値を用いて信頼区間を作る、というもの(最後ぼやかしています)
✔その他、bias-corrected and accelerated percentile method (BCa法)がメジャーです。type=“bca”
でもほとんどの場合”perc”で問題ないと思われます。
層別化するか?
bootstrapを層別化するか、というのがより現実的な選択肢なこともあります。
つまりGroup1の700サンプル、Group2の300サンプル、それぞれのGroup内でbootstrapをするか、ということ。
全体をランダム化されているような研究なら層別化は必要ありませんが、
各群の人数が決まっている場合などでは、層別化するのが筋です。
実装は単純で、
boot(data=data, statistic=stat, R=1000, strata=data$XXXX)
とすればOK!
サンプルがIndependentでない場合は駄目!
最後に注意点。
Bootstrap法は、それぞれのサンプルが独立していることを前提としています。
独立しているから、リサンプリングしてもOK。
独立していないケース、例えばlongitudinal modelは、基本的にはbootstrapダメです。
通常のWald confidence intervalもダメなので、sandwich estimatorを使います。
*ただし発展的に、longitudinal modelにbootstrapを応用する事が研究されたりはしています。
結論
bootstrapはサンプルが独立していれば使い勝手が良い、95%信頼区間とp値を計算する方法。
ではまた。