始めよう!ベイズ推定による データ解析

生態学会福岡大会(ESJ55) 企画集会
始めよう!ベイズ推定による
データ解析
企画番号: W-004
企画者:
深澤 圭太(横国大・環境情報)
角谷 拓(東大・農学生命)
イントロダクション
〜ベイズ推定の基礎知識〜
深澤圭太(横国大・環境情報)
事前分布・事後分布とは何か?
パラメータがどのような値をとるか、という「見込みの大きさ」を確率
分布として表したもの
[-∞〜∞]:正規分布など
[0〜∞]: ガンマ分布など
事前分布:
データを取る前の事前情報
分散小→強い事前情報
分散大→あいまいな事前情報
事後分布:
データを得て、更新された情報
パラメータθ
点推定値:事後分布のモード(MAP推定値)、
または平均値(事後平均)
区間推定値:信用区間(e.g.95%信用区間)
パラメータθ
ベイズ推定では、事後分布の形を推定するのが目的(最尤法との違い)
ベイズの定理とは?
事前分布とデータから、事後分布を導出するための定理
尤度
事前分布
θ:パラメータ
(=データ由来の情報)
y :データ
f (y | θ )× π (θ )
p(θ | y ) =
定数Z ←事後分布の全積分が1になるための「定数」
事後分布
事後分布
(事後分布は確率分布)
パラメータθ
推論には影響しないので、
あまり気にしなくてよい
p (θ | y ) ∝ f (y | θ )× π (θ )
「事後分布は、尤度と事前分布の積に比例する」
ベイズの定理はデータによる知識の更新を表現している
尤度の大きさは、データが与えられたときのパラメータのもっともらしさを表す
尤度
尤度
パラメータθ
最尤推定値
もしここでパラメータに関する事前情報があったら、どう考えるか?
⇒「尤度と事前分布の山の間に、最適な推定値がありそう」
実際に計算してみると…
事前分布
事後分布
尤度
データが加わった分、事後分布のバ
ラつきは事前分布より小
事前情報がないときは?⇒「データから推定される値が最適な推定値」
実際に計算してみると…
無情報事前分布(平ら)
事後分布∝ 尤度
y軸方向のスケールは異なるが、尤度
関数と事後分布の形は同じ
(最尤推定はベイズ推定の特殊型)
階層ベイズモデルとは?
例:複数の種で共通なパラメータ(e.g.サイズ平均、死亡率)を推定するとき
各種独立⇒個体数少ない種の推定値が大暴れ
θ2
θ1
θ3
θ5
?
θ4
θ6
パラメータθ
種間差無視⇒サンプルをプールして推定値は安定するが、現実
的ではない
全種
?
こんなとき、どうすればいいか?
パラメータに共通の事前分布を設定しその分散σ2を変えることで、各
種独立〜種間差無視の間で「ゆるやかな縛り」をかけることができる
θの事後分布
各種独立
分散σ2大
θの事前分布
θ
θ
種間差無視
θ
分散
σ2=0
θの事前分布は、パラメータσによって決まる
(このようなθの事前分布は条件付事前分布π(θ|σ)と書くことができる)
⇒どのようにして最適なσを探すのだろうか?
事前分布のバラツキσにも事前分布を導入し、全てのパラメータの
事後確率が大きくなるようにθとσを決めればよい
全てのパラメータの事後分布
尤度
p (θ , σ | y ) ∝ f (y | θ )× π (θ , σ
)
θとσの事前分布
(形が複雑すぎてそのまま
では計算できない)
条件付確率の公式P(A,B)=P(A|B)P(B)により
= f (y | θ )× π (θ | σ )× h (σ
尤度
(σによって決まるθの事前分布)
事後分布
θ
θ
θ
σの事前分布
σ
θの条件付き事前分布
)
σに無情報事前分布を設定
すればデータから最適なθ
とσを決められる
事前分布を制御するσのようなパラメータを超(ハイパー)パラメータ、その事
前分布を超事前分布と呼ぶ
階層ベイズモデル: 事前分布-超事前分布という階層により、
パラメータ間の関係を記述したモデル
【階層ベイズモデルで表現できることの例】
• 種間差・個体差・場所ごとの差(ランダム効果)
前頁の例のように、パラメータに共通の事前分布を設定し、それを制御するパラ
メータの超事前分布を考える
• 確率論的なプロセスによって決まる「隠れ状態」
隠れ状態の例:分布拡大モデルにおける、データがない年の在不在
1年目
分布拡大
2年目
?
データあり
N-1年目
・・・
分布拡大
N年目
?
データなし
確率論的なプロセス「隠れマルコフモデル」として組み込むことができる
データあり
グラフィカルモデル
階層ベイズモデルの「データ-プロセス-パラメータ-超パラメータ」という階層構造を図
化したグラフィカルモデルにより、複雑なモデルの構造を要約することができる
データ
データ
プロセス:データの背後にあるプロセス
パラメータ:プロセスを決めるパラメータ
超パラメータ:パラメータを制御
(後述のWinBUGSというプログラムには、グラフィカルモデルから推定できる機能あり)
事後分布をどうやって推定するのか?
MCMC法(マルコフ連鎖モンテカルロ法):
パラメータθ2
burn-in
④
③
・・
・
①
事後分布
p(θ2|y)
②
・・
・
ステップ数
パラメータθ1
③
④
事後分布
p(θ1|y)
ステップ数
① パラメータに任意の初期値を与える
② 他のパラメータを固定したときの事後分布「条件付事後
分布」から、パラメータの値を順にサンプリング
③ 十分長い回数サンプリングを繰り返すと、値は事後確率
の高いあたりをうろつく(定常分布)
④ 初期値の影響がある初期のステップを捨て(burn-in)、パ
ラメータの頻度分布を得る
⇒事後分布からのサンプル
条件付事後分布からのサンプリング
•
メトロポリス-ヘイスティングズ(M-H)法
①
任意の確率分布から、パラメータの候補をサンプリング
(例:直前の値を平均とする正規分布)
サンプリング前後でモデルの事後確率を比較
事後確率が改善→候補を採択
事後確率が悪化→事後確率の比を採択確率としてランダムに採択/棄却
(当てはまりが悪い方にもときどき進む)
②
•
ギブスサンプラー
条件付事後分布が簡単な確率分布になるとき(=事前分布が「共役」)
(例:正規分布の平均μの事前分布が正規分布→事後分布は正規分布)
確率分布からの乱数発生によりサンプルを得る。
※計算速度: M-H法<ギブスサンプラー
他にも、「スライスサンプリング」などの方法がある
なぜMCMC法を使うのか?
○シンプルな条件付事後分布からのサンプリングを繰り返すことで直接
推定できない複雑な事後分布を再現できる
【その他のご利益】
• ニセ山頂にトラップされにくい
最尤法
尤度関数
ニセ山頂
MCMC
事後分布
最尤推定値
ひたすら山頂を目指す
⇒初期値によっては間違った結果
事後分布の形そのものを推定
⇒大域的最適解にたどり着きやすい
• 生態的プロセス(移動分散、個体群成長など)を組み込みやすい
プロセスのシミュレーション
データへの当てはまり評価&
パラメータの更新
このようなシミュレーションモデルの推定を「ベイジアンカリブレーション」と呼ぶ
ベイズモデルの推定プログラム
<WinBUGS>
・フリーソフト
http://www.mrc-bsu.cam.ac.uk/bugsからダウンロード可能
・(多少クセはあるが)わかりやすい言語仕様
S言語似、尤度・事前分布・超事前分布を書き下すだけでOK
グラフィカルモデルからパラメータ推定 DoodleBUGS
・Rから操作可能
Rのパッケージ”R2WinBUGS”を使えば、RからWinBUGSを操作できる
JAGS, OpenBUGSは(多少の違いはあるが)似たもの同士
<その他の選択肢>
・自作プログラム
・MCMC++(C++のライブラリ)
・geoRglm(Rのパッケージ、空間相関明示モデルをMCMCで推定)
まとめ
• 階層ベイズモデル:データ-パラメータ-超パラメー
タという階層構造により、パラメータ間の確率論
的関係を記述したモデル
⇒個体差・ブロック差・場所ごとの差を柔軟に表現
⇒生態プロセスが内在するモデリングが可能に
• 推定にはMCMC法を使用
条件付事後分布(1つ残して他のパラメータを固定した事
後分布)からサンプリングを繰り返して、複雑な事後分布
を推定