ブートストラップの備忘録

ちょっと勉強したので核となる考え方あたりの備忘録。ちょっと古めの本だから最新の知見とかだとちがう見方してるかも?

導入

Xを確率分布Fに従う確率変数とする。Fに関する興味のある情報(各種モーメント、分位点など)を T(F)で表す。ここでT(F)Fに関する期待値E_Fの形で、すなわち

 \displaystyle T(F) = E_F [R(X) ]

と書けるとしておく。*1

さてこのT(F)だが分布T(F)が一次元の正規分布だとしても解析的に求めるのは結構めんどくさい。単純な平均でも素朴に計算すればガウス積分とかだるいし、分位点なんかお手上げ。

しかも実際には…

  • 正規分布よりももっと汚い形の分布だと本格的に積分計算ができない。
  • 多次元の分布だとさらに積分計算ができない。標本平均みたいに分布から複数サンプルを取り出して計算するやつの挙動を調べるのもアウト。
  • というか分布Fは基本的に未知。これをなんとかしてデータから推定するのがそもそもの問題。

ということで推定方法を考えないといけない。

経験分布で推定

いろんな方法が考えられるが今回は経験分布\hat F *2の情報 T(\hat F)を使って推定することを考える。 (ある意味このFじゃなく\hat Fに興味を移すという考え方が今回一番の肝かも)

経験分布なら既知だし期待値の解析的な計算も比較的しやすいしこれで解決…とはならない。 i.i.d.標本の挙動を調べたり、高次元の分布だったりすると計算量がエグいことになる。

例:標本平均

分布Fからn個の観測値(x_1, \cdots, x_n)を入手してそれぞれに確率1/nを割り当てた 経験分布\hat Fを作成した。この経験分布からのm個のi.i.d標本(X_1, \cdots, X_m)から作られる標本平均 \overline Xの挙動を知りたいとする。

例えば\overline Xの各種モーメントを求める際には(X_1, \cdots, X_m)の実現値を考えないといけない。 X_iの実現値はn通りあるので、(X_1, \cdots, X_m)の実現値は n^m通り。 解析的に解くにはこのパターン全部考えて和をとらないといけない。オワリ。解散。

ブートストラップ

はい、解析計算には限界があるので数値計算をしましょう。 ということで出てくるのがみんな大好きモンテカルロ法

 \displaystyle T(\hat F) = E_{\hat F} [R(X) ]

を計算するにあたっては経験分布\hat FからB個の標本を取ってきて

 \displaystyle \hat T(\hat F) = \frac{1}{B} \sum_{i=1}^B R(X_i)

とすれば大数の法則から一致推定ができる。 しかも経験分布からの乱数による標本抽出はクッッッッッソ楽*3なのでやったねって感じ。 こういう感じで経験分布の情報を数値計算する方法をブートストラップ法というらしい。

ちなみに例のような標本平均のモーメントを調べるには(m個の標本が)B = 50 \sim 200組くらい必要で、分位点を調べようとすると B = 1000 \sim 2000は必要らしい。

その他

効率的リサンプリング

乱数の取り出し方(リサンプリング)の効率性を高めるためにいろんな方法(重点リサンプリングとか)があるらしい。 わかりやすかったのは釣り合い型リサンプリング。n個の観測値をBセット持ってきた後にぐちゃぐちゃに組み替えることでnB個の乱数を作ると全体として偏りがなくていいらしい。

パラメトリックブートストラップ

今回紹介したのはノンパラ手法だったがパラメトリックな状況、すなわち

 \displaystyle F(\cdot \| \eta)

を仮定するときにも使える。パラメータ\etaを最尤法などで推定して\hat \etaを入手し、  \displaystyle F(\cdot \; | \hat \eta)から乱数を生成するような手法となる。 *4

解析的に解けるような分布、パラメータだとこんなんいらんけど、例えば二次元(多次元)正規分布からm個のi.i.d標本(\boldsymbol{X_1}, \cdots, \boldsymbol{X_m}) をとってきて標本相関係数の挙動を調べるときとかは使えるらしい。*5

まとめ

  • 分布 F の情報を調べたいよ。
  • 無理だから経験分布\hat F の情報を調べることにシフトするよ。
  • (主に多次元だと)結局解析計算無理だから乱数生成して数値的にモンテカルロ計算するよ。

追記

現代数理統計学の基礎読んだらブートストラップ推定量を使うことで高次のバイアスを消せるみたいなこと書いてあった。すごい。

参考文献

小西 貞則・越智 義道・大森 裕浩(2008)『計算統計学の方法―ブートストラップ,EMアルゴリズム,MCMC―』 朝倉書店

久保川 達也(2017)『現代数理統計学の基礎』 共立出版

*1:指示関数を使えば分布関数も復元できるので分布に関するすべての情報はこの形で記述できるといっても過言ではない……多分。

*2:観測した各データに確率1/nを割り当てた分布。

*3:離散一様分布から復元抽出すればOK

*4:分布関数の逆関数が分かれば一様乱数から乱数生成できる。わかんなくても正規分布ならボックスミュラー変換があるし、棄却サンプリング、重点サンプリング、MCMCなどとにかく分布が特定できていればいろいろ乱数生成のやりようはある。

*5:ちなみに解析解の近似を目指すアプローチとしてエッジワース展開というのがあるらしい。このエッジワースさんはミクロ経済学のエッジワースボックスの人と一緒っぽい。