統計モデリング 第六回...

64
2017523日@統計モデリング 担当:田中冬彦 統計モデリング 第六回 配布資料 文献: a) C. P. Robert and G. Casella: Monte Carlo Statistical Methods. 2nd ed., Springer, 2004. 配布資料の一部は以下からもDLできます. 短縮URL http://tinyurl.com/lxb7kb8 b) C. P. Robert and G. Casella: Introducing Monte Carlo Methods with R. Springer, 2010. c) J. Albert: Bayesian Computation with R. 2nd ed. Springer, 2009 b,c は日本語訳 (ともに石田基広, 石田和枝訳, 丸善出版) あり 講義後, 修正あり!

Transcript of 統計モデリング 第六回...

Page 1: 統計モデリング 第六回 配布資料bayes.sigmath.es.osaka-u.ac.jp/ftanaka/T/modeling/... · 任意の初期値 からスタートして ... ターゲット分布 から毎回、独立に乱数を生成できるとする

2017年5月23日@統計モデリング

担当:田中冬彦

統計モデリング 第六回 配布資料

文献: a) C. P. Robert and G. Casella: Monte Carlo Statistical Methods. 2nd ed., Springer, 2004.

配布資料の一部は以下からもDLできます. 短縮URL http://tinyurl.com/lxb7kb8

b) C. P. Robert and G. Casella: Introducing Monte Carlo Methods with R. Springer, 2010.

c) J. Albert: Bayesian Computation with R. 2nd ed. Springer, 2009

b,c は日本語訳 (ともに石田基広, 石田和枝訳, 丸善出版) あり

講義後, 修正あり!

Page 2: 統計モデリング 第六回 配布資料bayes.sigmath.es.osaka-u.ac.jp/ftanaka/T/modeling/... · 任意の初期値 からスタートして ... ターゲット分布 から毎回、独立に乱数を生成できるとする

理解度チェック:ベイズファクター 前回の講義内容に沿って〇か×をつけてください

ベイズファクターは定義から必ず1以上になる(数学的に示せる)

スポーツ関係のデータなど, 大量の情報が分析に使える場合, それらをすべて加味した統計モデルを最初に構築すべきである。

ベイズ統計でも, 通常の統計(頻度論的な統計)と同様にパラメータの推定や仮説検定などができる.

ベイズファクターでは3つ以上の統計モデルの比較も可能である.

尤度関数はデータが与えられた下でのパラメータの関数である.

Page 3: 統計モデリング 第六回 配布資料bayes.sigmath.es.osaka-u.ac.jp/ftanaka/T/modeling/... · 任意の初期値 からスタートして ... ターゲット分布 から毎回、独立に乱数を生成できるとする

今日の内容

1.導入 2.モンテカルロ法 3.マルコフ連鎖 4.定常分布 5.マルコフ連鎖モンテカルロ法 ~Metropolis-Hastings Method 6.マルコフ連鎖モンテカルロ法 ~Gibbs Sampler 7.WinBUGS

Page 4: 統計モデリング 第六回 配布資料bayes.sigmath.es.osaka-u.ac.jp/ftanaka/T/modeling/... · 任意の初期値 からスタートして ... ターゲット分布 から毎回、独立に乱数を生成できるとする

1. 導入

Page 5: 統計モデリング 第六回 配布資料bayes.sigmath.es.osaka-u.ac.jp/ftanaka/T/modeling/... · 任意の初期値 からスタートして ... ターゲット分布 から毎回、独立に乱数を生成できるとする

の関数形が簡単な形 )|( xθπ

事後分布に関する計算

これまで(第4回、第5回)

1次元のパラメータ θ

がんばれば手計算できるレベルだった・・・

次回以降 (第8回、第9回)

の関数形が簡単でない形 )|( xθπ 多次元のパラメータ θ

簡単な例でも実際のベイズ分析では計算機の使用が必須になる!

Page 6: 統計モデリング 第六回 配布資料bayes.sigmath.es.osaka-u.ac.jp/ftanaka/T/modeling/... · 任意の初期値 からスタートして ... ターゲット分布 から毎回、独立に乱数を生成できるとする

今日の題材

モンテカルロ法 (ベイズに限らず)乱数を利用して積分や最大値の探索などを行う数値手法全般

本講義でのMCMC法の位置づけ ・ベイズ分析ツールにある程度MCMC法が組み込まれているため(実装は目標とせず), 今回限り動作原理を紹介

・グループタスクとして必要に応じて, MCMC法を実装できると望ましい【主に 統計研究室の学生】

マルコフ連鎖モンテカルロ法(MCMC法) 乱数の生成にマルコフ連鎖を利用, ベイズ分析では必須

Page 7: 統計モデリング 第六回 配布資料bayes.sigmath.es.osaka-u.ac.jp/ftanaka/T/modeling/... · 任意の初期値 からスタートして ... ターゲット分布 から毎回、独立に乱数を生成できるとする

2. モンテカルロ法

Page 8: 統計モデリング 第六回 配布資料bayes.sigmath.es.osaka-u.ac.jp/ftanaka/T/modeling/... · 任意の初期値 からスタートして ... ターゲット分布 から毎回、独立に乱数を生成できるとする

モンテカルロサンプリング

条件 任意の初期値 からスタートして, の時に, そのヒストグラムがある特定の確率分布(ターゲット分布) に近づいていく.

モンテカルロサンプリング

一般に乱数を利用して, を以下を満たすように順次

生成する方法(簡単のため, 1次元として説明).

,,,, )()2()1( Mθθθ

∞→M)0(θ

実際のM 個の値 を(サイズMの)モンテカルロサンプル

(MCサンプル)という

)()2()1( ,,, Mθθθ

)(θp

モンテカルロサンプル (MCサンプル)

(理論上は からのIIDサンプル【後述】で十分だが, 応用上, 問題あり) )(θp

Page 9: 統計モデリング 第六回 配布資料bayes.sigmath.es.osaka-u.ac.jp/ftanaka/T/modeling/... · 任意の初期値 からスタートして ... ターゲット分布 から毎回、独立に乱数を生成できるとする

モンテカルロサンプルの重要性

-3 -2 -1 0 1 2

0.0

0.1

0.2

0.3

0.4

posterior distribution

theta

dist

ribut

ion

sample histogram

x

Freq

uenc

y

-2 -1 0 1 2

05

1015

∞→M

)()2()1( ,,, Mθθθ のヒストグラム ターゲット分布

(定義から) モンテカルロサンプルは, 十分 M を大きくとれば、

ターゲット分布の良い近似を与える. (多次元の分布でも同様)

要点

このことから、ターゲット分布の積分の近似計算が可能になる

Page 10: 統計モデリング 第六回 配布資料bayes.sigmath.es.osaka-u.ac.jp/ftanaka/T/modeling/... · 任意の初期値 からスタートして ... ターゲット分布 から毎回、独立に乱数を生成できるとする

モンテカルロサンプルを用いた積分の近似

モンテカルロサンプルを利用して積分の近似値を求める方法

)()2()1( ,,, Mθθθ

)|( xθπ

モンテカルロサンプル(MCサンプル)

モンテカルロ積分

モンテカルロ積分の例

(一般には高次元の積分で使うが, 説明のため1次元積分ですべて考える)

∑=

≈M

j

j

M 1

)(1 θ

]|[d)|( xEx θθθπθ =∫← MCサンプルの単純平均

ターゲット分布

Page 11: 統計モデリング 第六回 配布資料bayes.sigmath.es.osaka-u.ac.jp/ftanaka/T/modeling/... · 任意の初期値 からスタートして ... ターゲット分布 から毎回、独立に乱数を生成できるとする

histogram of x

x_norm

Den

sity

-4 -2 0 2 4

0.0

0.1

0.2

0.3

モンテカルロ積分の実装例

)()2()1( ,,, Mθθθ

Rの組み込み関数からIIDで発生 (M=10^6; 5ケタで表示)

-1.1788 0.8820 1.1108 -1.9134 0.1768

1.1042 -1.2245 1.0239 1.0574 -1.5943

.............

set.seed(61250); Nsim <- 10^6; x_norm <- rnorm(Nsim); print(mean(x_norm)); print(var(x_norm)); hist(x_norm, freq=F, breaks=20, xlim=c(-5,5), main="histogram of x", col=2); curve(dnorm(x), add=T);

実行結果; [1] -0.001283968 [1] 0.9992965

← 理論値は 0 ← 理論値は 1 0.1 % 程度の誤差

ターゲット分布: )1,0(~ NθMCサンプル:

][],[ 2θθ EE の近似値を計算

Page 12: 統計モデリング 第六回 配布資料bayes.sigmath.es.osaka-u.ac.jp/ftanaka/T/modeling/... · 任意の初期値 からスタートして ... ターゲット分布 から毎回、独立に乱数を生成できるとする

)|( xθπ )}|(,),|(),|(max{ )()2()1( xxx Mθπθπθπ の最大値 (xは固定)

考えてみよう

∫1

8.0d)|( θθπ x 0.8 から1の間に入る の数

M

)( jθ

問: 十分な数のMCサンプルがあれば, 事後分布に関する様々な量が簡単な近似計算で求められる. 以下の積分, 最大値はMCサンプル

を用いてどのように求めればよいか 【モンテカルロ法】

(a)

(b)

(c)

∑=

M

j

j

M 1

2)( )(1 θ≈∫ θθπθ d)|(2 x

)()2()1( ,,, Mθθθ

Page 13: 統計モデリング 第六回 配布資料bayes.sigmath.es.osaka-u.ac.jp/ftanaka/T/modeling/... · 任意の初期値 からスタートして ... ターゲット分布 から毎回、独立に乱数を生成できるとする

理想的なサンプリング

計算機上で, ターゲット分布 から毎回、独立に乱数を生成できるとする

)(~,,,...

)()2()1( θθθθ pdii

M

このとき, をIIDサンプルとよび最良の MCサンプル )()2()1( ,,, Mθθθ

1.1次元、もしくは多次元の有名な確率分布はIIDサンプルを効率よく生成できる.

2.1次元,2次元の場合は、変数変換と逆関数法(1次元)、棄却法などで、あらゆる確率分布でIIDサンプルを効率よく生成できる.

IIDサンプル利用の目安

)(θp

IIDサンプル

3.1, 2以外の場合は効率が悪いかも・・・・

Page 14: 統計モデリング 第六回 配布資料bayes.sigmath.es.osaka-u.ac.jp/ftanaka/T/modeling/... · 任意の初期値 からスタートして ... ターゲット分布 から毎回、独立に乱数を生成できるとする

ベイズ統計の難点 ターゲット分布

本当に欲しいもの (IIDサンプル)

サンプリング 効率悪すぎ・・・・

)|(~,,,...

)()2()1( xdii

M θπθθθ

(関数形が簡単な形でない;有名なタイプではない・・・) )|( xθπ← 高次元のパラメータ θ

計算機を利用しても事後分布のIIDサンプルは効率が悪すぎる!!

Page 15: 統計モデリング 第六回 配布資料bayes.sigmath.es.osaka-u.ac.jp/ftanaka/T/modeling/... · 任意の初期値 からスタートして ... ターゲット分布 から毎回、独立に乱数を生成できるとする

3. マルコフ連鎖

Page 16: 統計モデリング 第六回 配布資料bayes.sigmath.es.osaka-u.ac.jp/ftanaka/T/modeling/... · 任意の初期値 からスタートして ... ターゲット分布 から毎回、独立に乱数を生成できるとする

マルコフ核

以下を満たす条件付き分布の族をマルコフ核 (Markov kernel)という.

X: (簡単のため)有限集合

XyXx ∈∀∈∀ ,

1)|( =∑∈Xx

yxK

,0)|( ≥yxKXy∈∀

== ][ |yxKK

x

5/410/105/15/410/3

010/110/7y

マルコフ核の例: 行列として表示 y=3 の時の条件付き分布 { }3,2,1=X

Page 17: 統計モデリング 第六回 配布資料bayes.sigmath.es.osaka-u.ac.jp/ftanaka/T/modeling/... · 任意の初期値 からスタートして ... ターゲット分布 から毎回、独立に乱数を生成できるとする

マルコフ核の性質

マルコフ核はX 上の確率分布 (確率ベクトル)を確率分布に写す

∑∈

=Xy

ypyxKxp )()|()(~

1)( =∑∈Xx

xp

Kpp =~

=

)2()1(

pp

pXxxp ∈∀≥ ,0)(

以下の計算で, 新しい確率分布(確率ベクトル)が生じる

行列とベクトルの表記を用いると

Page 18: 統計モデリング 第六回 配布資料bayes.sigmath.es.osaka-u.ac.jp/ftanaka/T/modeling/... · 任意の初期値 からスタートして ... ターゲット分布 から毎回、独立に乱数を生成できるとする

練習してみよう 問:とうけい村の毎日の天気は, 以下のルールで確率的に定まるものとする.

== ][ |yxKK

5/410/105/15/410/3

010/110/7晴

ある日の天気がy の時, 翌日の天気がx になる(条件付き)確率は

1. 今日は「くもり」とする。明日、晴れる確率は?

),|( yxK

くもり 雨

くもり

ルール

2*.今日は「晴れ」とする。2日後、雨の確率は?

101

翌日の天気

となる.

1003

101

103

Page 19: 統計モデリング 第六回 配布資料bayes.sigmath.es.osaka-u.ac.jp/ftanaka/T/modeling/... · 任意の初期値 からスタートして ... ターゲット分布 から毎回、独立に乱数を生成できるとする

マルコフ連鎖

初期値を としてマルコフ核から次のように乱数(確率変数)の列が得られる

(その意味で をマルコフ連鎖とよぶことも)

Xx ∈0

,,,, 21 txxxこのように生成する確率変数の列がマルコフ連鎖 (Markov Chain)

)|(~| 11 tttt xxKxx ++

XyxyxK ∈,)}|({

XyxyxK ∈,)}|({ X上のマルコフ核

マルコフ連鎖

Page 20: 統計モデリング 第六回 配布資料bayes.sigmath.es.osaka-u.ac.jp/ftanaka/T/modeling/... · 任意の初期値 からスタートして ... ターゲット分布 から毎回、独立に乱数を生成できるとする

例:1次元ランダムウオーク 簡単のため 1次元の座標を格子点にとる

00 =xtx

1次元格子点上のランダムウオーク ルール 1. 時刻 t=0 に原点からスタート 2. 各時刻(t=1,2,3,...)ごとに、1/2 の確率で右に、1/2の確率で左に1ステップ進む。 3. 各時刻ごとの位置(座標)を記録する

時刻 t (=0,1,2,3,...)での座標を とする.

,,,, 21 txxx

{ },2,1,0 ±±=X

(確率変数の列!)が マルコフ連鎖

1/2 1/2

Page 21: 統計モデリング 第六回 配布資料bayes.sigmath.es.osaka-u.ac.jp/ftanaka/T/modeling/... · 任意の初期値 からスタートして ... ターゲット分布 から毎回、独立に乱数を生成できるとする

例:1次元ランダムウオーク 簡単のため 1次元の座標を格子点にとる

マルコフ核による表現 ルール2を数式で表現(翻訳)する

21)|1( 1 ==+=+ jxjxK tt

0)|( 1 ===+ jxlxK tt

21)|1( 1 ==−=+ jxjxK tt

1±≠ jl の時

1/2 1/2

Page 22: 統計モデリング 第六回 配布資料bayes.sigmath.es.osaka-u.ac.jp/ftanaka/T/modeling/... · 任意の初期値 からスタートして ... ターゲット分布 から毎回、独立に乱数を生成できるとする

例:1次元ランダムウオーク

1/2

1/2

tx

0 200 400 600 800 1000

-30

-20

-10

010

2030

Random Walk

1:Nsim

x

time

Page 23: 統計モデリング 第六回 配布資料bayes.sigmath.es.osaka-u.ac.jp/ftanaka/T/modeling/... · 任意の初期値 からスタートして ... ターゲット分布 から毎回、独立に乱数を生成できるとする

例:1次元山登りウオーク

概略: 各時刻ごとに、以下の確率で右または左に1ステップ進む。

-30 -20 -10 0 10 20 30

02

46

810

Mountain

x

Prob

.

p(x)

)1()1()1(−++

+jpjp

jp==+=+ )|1( 1 jxjxK tt==−=+ )|1( 1 jxjxK tt )1()1(

)1(−++

−jpjp

jp

Page 24: 統計モデリング 第六回 配布資料bayes.sigmath.es.osaka-u.ac.jp/ftanaka/T/modeling/... · 任意の初期値 からスタートして ... ターゲット分布 から毎回、独立に乱数を生成できるとする

考えてみよう p(x)

-30 -20 -10 0 10 20 30

02

46

810

Mountain

x

Prob

.

問: 次のステップ、 確率が高いのはどっち?

左に移動(山を登る) ・ 右に移動(山をくだる)

Page 25: 統計モデリング 第六回 配布資料bayes.sigmath.es.osaka-u.ac.jp/ftanaka/T/modeling/... · 任意の初期値 からスタートして ... ターゲット分布 から毎回、独立に乱数を生成できるとする

0 2000 4000 6000 8000 10000

-20

-10

010

20

Get-Higher Walk

time

x

例:1次元山登りウオーク

tx

最初のランダムウオークよりも. 原点(山の頂上)付近をうろうろしている!

0 200 400 600 800 1000

-30

-20

-10

010

2030

Random Walk

1:Nsim

x

Page 26: 統計モデリング 第六回 配布資料bayes.sigmath.es.osaka-u.ac.jp/ftanaka/T/modeling/... · 任意の初期値 からスタートして ... ターゲット分布 から毎回、独立に乱数を生成できるとする

例:1次元山登りウオーク

(山の曲線 p(x) と似た形になっている・・・)

実際のデータ値 (1ずつ変化!) x1 =-1 x2 =-2 x3 =-1 x4 =0 ..... x9998 =12 x9999 =13 x10000=12

histogram of x

x

Den

sity

-30 -20 -10 0 10 20 30

0.00

0.01

0.02

0.03

0.04

0.05

p(x)

各時刻ごとの位置 を標本とみなしてヒストグラムを作成 ,,,, 21 txxx

Page 27: 統計モデリング 第六回 配布資料bayes.sigmath.es.osaka-u.ac.jp/ftanaka/T/modeling/... · 任意の初期値 からスタートして ... ターゲット分布 から毎回、独立に乱数を生成できるとする

ここまでのまとめ

数学的にはマルコフ核で表現

,,,, 21 txxx

XyxyxK ∈,)}|({今いる場所 ( ) に応じて, 次の場所 を適当な確率で選んで移動

各時刻 t ごとの場所(座標)

tx 1+tx

マルコフ連鎖(アルゴリズムとして表現)

1次元山登りウオーク

独立同一(IID)にある分布から発生 ・ そうではない

,,,, 21 txxx

マルコフ核に従って発生 ・ そうではない

山の標高に相当する正の関数 が与えられている. )(xp

ヒストグラム → なんらかの確率分布の形にみえる!

Page 28: 統計モデリング 第六回 配布資料bayes.sigmath.es.osaka-u.ac.jp/ftanaka/T/modeling/... · 任意の初期値 からスタートして ... ターゲット分布 から毎回、独立に乱数を生成できるとする

4. 定常分布

Page 29: 統計モデリング 第六回 配布資料bayes.sigmath.es.osaka-u.ac.jp/ftanaka/T/modeling/... · 任意の初期値 からスタートして ... ターゲット分布 から毎回、独立に乱数を生成できるとする

定常分布

,,,, 21 txxxのヒストグラムは

この確率分布を

∞→t

マルコフ連鎖の性質

定常分布 という.

マルコフ連鎖から発生させたデータ

で, ある確率分布 に近づく

-3 -2 -1 0 1 2

0.0

0.1

0.2

0.3

0.4

posterior distribution

theta

dist

ribut

ion

sample histogram

x

Freq

uenc

y

-2 -1 0 1 2

05

1015

∞→t

のヒストグラム の関数形 ,,,, 21 txxx )(xp∞

)(xp∞

Page 30: 統計モデリング 第六回 配布資料bayes.sigmath.es.osaka-u.ac.jp/ftanaka/T/modeling/... · 任意の初期値 からスタートして ... ターゲット分布 から毎回、独立に乱数を生成できるとする

例:1次元山登りウオーク ,,,, 21 txxxマルコフ連鎖から発生させたデータ

1回1回のシミュレーションで発生する経路(サンプルパス)は異なるが・・・

0 2000 6000 10000

-20

-10

010

20Get-Higher Walk

time

x

0 2000 6000 10000

-20

-10

010

20

Get-Higher Walk

time

x

0 2000 6000 10000

-20

-10

010

20

Get-Higher Walk

time

x

0 2000 6000 10000

-20

-10

010

20Get-Higher Walk

time

x

Page 31: 統計モデリング 第六回 配布資料bayes.sigmath.es.osaka-u.ac.jp/ftanaka/T/modeling/... · 任意の初期値 からスタートして ... ターゲット分布 から毎回、独立に乱数を生成できるとする

例:1次元山登りウオーク ,,,, 21 txxxマルコフ連鎖から発生させたデータ

ヒストグラムを作ってみると同じ形状(→ 定常分布に近づいている風) histogram of x

x_path

Den

sity

-30 -10 0 10 20 30

0.00

0.02

0.04

0.06

histogram of x

x_path

Den

sity

-30 -10 0 10 20 30

0.00

0.02

0.04

0.06

histogram of x

x_path

Den

sity

-30 -10 0 10 20 30

0.00

0.02

0.04

0.06

histogram of x

x_path

Den

sity

-30 -10 0 10 20 30

0.00

0.02

0.04

0.06

Page 32: 統計モデリング 第六回 配布資料bayes.sigmath.es.osaka-u.ac.jp/ftanaka/T/modeling/... · 任意の初期値 からスタートして ... ターゲット分布 から毎回、独立に乱数を生成できるとする

定常分布の数学的な定義

以下を満たす確率分布を定常分布という

XxxpypyxKXy

∈∀=∑∈

),()()|(

XyxyxK ∈,)}|({ X上のマルコフ核

XxxpdyypyxK ∈∀=∫ ),()()|(1.連続値の場合

定常分布をもたないマルコフ核や複数存在することもある. しかし, この後は唯一存在すると仮定して話を進める.

補足

2.定常分布の存在

Page 33: 統計モデリング 第六回 配布資料bayes.sigmath.es.osaka-u.ac.jp/ftanaka/T/modeling/... · 任意の初期値 からスタートして ... ターゲット分布 から毎回、独立に乱数を生成できるとする

計算してみよう 問*: 3つの状態を遷移するマルコフ核K が以下の行列で与えられている.

(a) 行列K、ベクトルα について, Kα を求めてみよ.

=

5/410/105/15/410/3

010/110/7K

=

362

α

また, なんとな~く, ベクトルα を右に与えておく.

本日のラッキーナンバー

は2,6,3 であります!

αα =

=

362

K

*(文系学部出身などで) 3×3の行列を習ってない場合は, やらなくてよい.

Page 34: 統計モデリング 第六回 配布資料bayes.sigmath.es.osaka-u.ac.jp/ftanaka/T/modeling/... · 任意の初期値 からスタートして ... ターゲット分布 から毎回、独立に乱数を生成できるとする

計算してみよう

,pKp =(b) 以下を満たす確率ベクトル p を求めよ. (これが定常分布!)

(c) (状態数有限の)マルコフ連鎖(マルコフ核K)が与えられたときに、

定常分布を求める問題は, 線形代数のどのような問題に対応しているか.

むむ!! これは難しい線形代数の問題であります!

=

)3()2()1(

ppp

p

=

11/311/611/2

p0)3(),2(),1(

,1)3()2()1(≥=++

pppppp

固有値問題(固有値1をもつ固有ベクトルを求める問題)

Page 35: 統計モデリング 第六回 配布資料bayes.sigmath.es.osaka-u.ac.jp/ftanaka/T/modeling/... · 任意の初期値 からスタートして ... ターゲット分布 から毎回、独立に乱数を生成できるとする

MCMC法の核心

,,,, 21 txxxのヒストグラムは ∞→t

マルコフ連鎖の性質

は定常分布 からの

マルコフ連鎖から発生させたデータ

で, 定常分布 に近づく )(xp∞

,,,, 21 txxx )(xp∞

モンテカルロサンプル (これを用いて積分計算できる).

マルコフ連鎖によるモンテカルロサンプルの生成方法

)(xq モンテカルロサンプルを生成したい確率分布(=ターゲット分布)

を 定常分布 にもつような )(xqマルコフ核(マルコフ連鎖) を構成すればよい

Page 36: 統計モデリング 第六回 配布資料bayes.sigmath.es.osaka-u.ac.jp/ftanaka/T/modeling/... · 任意の初期値 からスタートして ... ターゲット分布 から毎回、独立に乱数を生成できるとする

ヒントらしき補足の話

行列 K が与えられたとき, 以下を満たす固有ベクトル を求める.

行列 K を求める.

応用での問題

数学 (線形代数)の問題

ppK =

ベクトル が先に与えられて, これを固有ベクトルにもつような p

p

*文系の方や, ヒントとしての意味合いがつかめてない方は、統計研究室の学生に後で聞いてください.

Page 37: 統計モデリング 第六回 配布資料bayes.sigmath.es.osaka-u.ac.jp/ftanaka/T/modeling/... · 任意の初期値 からスタートして ... ターゲット分布 から毎回、独立に乱数を生成できるとする

この後紹介するアルゴリズム

代表的な2つ - MH法 (Metropolis-Hastings Method) - Gibbs Sampler (Gibbs Sampling)

マルコフ連鎖を利用したモンテカルロサンプル (MCMCサンプル)を生成する方法

MCMC (Markov Chain Monte Carlo)法

理解してほしいこと 1. ターゲット分布 (事後分布)のモンテカルロサンプルをどのように 出力するか【だいたいの流れ】 2. IIDサンプルとの違い (どこらへんがマルコフ連鎖??) 3. その他、特徴やポイント

4.【統計研究室のみ】 収束証明の論理

Page 38: 統計モデリング 第六回 配布資料bayes.sigmath.es.osaka-u.ac.jp/ftanaka/T/modeling/... · 任意の初期値 からスタートして ... ターゲット分布 から毎回、独立に乱数を生成できるとする

5. マルコフ連鎖モンテカルロ法 ~ Metropolis-Hastings Method

Page 39: 統計モデリング 第六回 配布資料bayes.sigmath.es.osaka-u.ac.jp/ftanaka/T/modeling/... · 任意の初期値 からスタートして ... ターゲット分布 から毎回、独立に乱数を生成できるとする

MH法のアルゴリズム (1/2)

2.

(a) 行き先候補を確率的に選ぶ

tz 1+tz

)|(~ tprop zzqz

にいるとして, 次の行き先 を以下の手順で定める.

(b) 本当に移動するか踏みとどまるかある方法で決める

: 提案分布 (自由に設定)

移動する場合: propt zz =+1

とどまる場合: tt zz =+1

)|( yzq

を定常分布(事後分布)からの Mzzz ,,, 21

補足: 実際には前半のサンプルは初期値依存性が強いため捨てる(M/2 程度).

モンテカルロサンプルとする

3.

(MCMCサンプルともよぶ.)

1. 初期値 を適当に定める. 1z

Page 40: 統計モデリング 第六回 配布資料bayes.sigmath.es.osaka-u.ac.jp/ftanaka/T/modeling/... · 任意の初期値 からスタートして ... ターゲット分布 から毎回、独立に乱数を生成できるとする

MH法の実装例

ターゲット分布 プログラム例

set.seed(1234); a <- 2.7; b <- 6.3; c <- 2.669; Nsim <- 5000; X <- rep(runif(1), Nsim); for (i in 2:Nsim){ Y <- runif(1); rho <- dbeta(Y, a, b)/dbeta(X[i-1], a, b) ; X[i] <- X[i-1] + (Y - X[i-1] )* (runif(1) < rho); }

> round(X, 4) [1] 0.5529 0.5513 0.5513 0.5513 0.3947 0.3947 0.1566 0.5105 0.3486 0.3486 [11] 0.3486 0.3993 0.3993 0.3993 0.3742 0.2580 0.2580 0.2580 0.2580 0.2580 ........

モンテカルロサンプル

踏みとどまったため, 同じ値が連続して出現!

)3.6,7.2(~ BetaX

3.57.1 )1()( xCxxf −=

↑ pdf

Page 41: 統計モデリング 第六回 配布資料bayes.sigmath.es.osaka-u.ac.jp/ftanaka/T/modeling/... · 任意の初期値 からスタートして ... ターゲット分布 から毎回、独立に乱数を生成できるとする

4500 4550 4600 4650 4700 4750 4800

0.00.2

0.40.6

0.81.0

Trace Plot

time

X

MH法で生成した点をつなげたもの(トレースプロット)

MH法でのトレースプロット

> plot(X, type="l", xlim=c(4500,4800), ylim=c(0,1), main="Trace Plot", xlab="time")

Page 42: 統計モデリング 第六回 配布資料bayes.sigmath.es.osaka-u.ac.jp/ftanaka/T/modeling/... · 任意の初期値 からスタートして ... ターゲット分布 から毎回、独立に乱数を生成できるとする

histogram of MCMC

X

Freq

uenc

y

0.0 0.2 0.4 0.6 0.80

5010

020

030

0

histogram of rbeta

hikaku

Freq

uenc

y

0.0 0.2 0.4 0.6 0.8

050

100

200

300

MCMCサンプル(MH法)とRの組み込み関数rbeta() による独立同一サンプルの比較

MCMCサンプルと独立同一サンプルの比較

同じ場所 (値)を繰り返すが, IIDサンプルと同等のサンプル! (MCMCサンプルで積分計算してもOK)

Page 43: 統計モデリング 第六回 配布資料bayes.sigmath.es.osaka-u.ac.jp/ftanaka/T/modeling/... · 任意の初期値 からスタートして ... ターゲット分布 から毎回、独立に乱数を生成できるとする

MH法のアルゴリズム (2/2)

2.

(a) 行き先候補を確率的に選ぶ

tz 1+tz

)|(~ tprop zzqz

にいるとして, 次の行き先 を以下の手順で定める.

: 提案分布 (自由に設定) )|( yzq

を定常分布(事後分布)からの Mzzz ,,, 21 モンテカルロサンプルとする

3.

1. 初期値 を適当に定める. 1z

(b) 以下の遷移確率 で移動

)()|()()|(

ttprop

proppropt

zpzzqzpzzq

( なら必ず移動) 1>ρ

ターゲット分布 ( 事後分布などを想定) )(zp

Page 44: 統計モデリング 第六回 配布資料bayes.sigmath.es.osaka-u.ac.jp/ftanaka/T/modeling/... · 任意の初期値 からスタートして ... ターゲット分布 から毎回、独立に乱数を生成できるとする

参考:MH法の収束性

)()|()()|( ypyxKxpxyK = yx∀∀

詳細つりあい条件を満たす分布 は, マルコフ核Kの定常分布になる.

p

*MH法の(a), (b) のやたら複雑な式 → ターゲット分布についてDBCを満たすようなマルコフ核K を作るため

詳細つり合い条件 (Detailed Balance Condition; DBC)

証明の方針

マルコフ連鎖 ,,,..., )1()()0( +tt xxx のマルコフ核Kを具体的に書き ターゲット分布 p(x) が上の条件を満たしていることを示す. (詳細は文献参照)

Page 45: 統計モデリング 第六回 配布資料bayes.sigmath.es.osaka-u.ac.jp/ftanaka/T/modeling/... · 任意の初期値 からスタートして ... ターゲット分布 から毎回、独立に乱数を生成できるとする

MH法を用いるにあたって 難点: 思い通りに動き回らない (一か所に居続ける)

MH法は万能な方法だが難点も多く, 最後の手段 → 次に紹介するGSが使える場合は、GSも利用.

・初期値の設定や提案分布など個別の調整

GSとの併用

・結局は プログラミング!( デバッグ能力)

(数学的な意味での「収束」は例えば一兆ステップくらい必要かも.)

4500 4550 4600 4650 4700 4750 4800

0.00.2

0.40.6

0.81.0

Trace Plot

time

X

Page 46: 統計モデリング 第六回 配布資料bayes.sigmath.es.osaka-u.ac.jp/ftanaka/T/modeling/... · 任意の初期値 からスタートして ... ターゲット分布 から毎回、独立に乱数を生成できるとする

理解度チェック:MCMC法

MH法では, まず、次のステップの移動先として、適当な確率分布を用いて提案する必要がある.

MCMC法(MH法)で発生させたモンテカルロサンプルのヒストグラムは定常分布へ収束するが, 早く収束させる工夫は個別に必要である

MCMC法でサンプル数を増やしていくと, ほとんど一定の値しか出てこなくなり, 収束していく。

MH法では同じ値が連続して出てくるが、ターゲット分布への収束が確認できれば問題ない.

Page 47: 統計モデリング 第六回 配布資料bayes.sigmath.es.osaka-u.ac.jp/ftanaka/T/modeling/... · 任意の初期値 からスタートして ... ターゲット分布 から毎回、独立に乱数を生成できるとする

6. マルコフ連鎖モンテカルロ法 ~ Gibbs Sampler

*Gibbs Sampling ともいう

Page 48: 統計モデリング 第六回 配布資料bayes.sigmath.es.osaka-u.ac.jp/ftanaka/T/modeling/... · 任意の初期値 からスタートして ... ターゲット分布 から毎回、独立に乱数を生成できるとする

Gibbs Sampler

Gibbs Sampling を紹介, 統計学者の間で認知され広まる

応用でGibbs Samplerを使った

周辺分布や同時分布が簡単に書けない(サンプリングが難しい)が、条件付き分布はサンプリングしやすい(正規分布など)場合に使う

使用の目安

向いている人 条件付き密度の計算(積分計算)に慣れている人向け

ツールの有無 BUGS, Stanなどで使用可. 商用ツールでベイズ分析用のモデルに組み込まれている

歴史的経緯 Geman and Geman (1984)

Gelfand and Smith (1990)

Page 49: 統計モデリング 第六回 配布資料bayes.sigmath.es.osaka-u.ac.jp/ftanaka/T/modeling/... · 任意の初期値 からスタートして ... ターゲット分布 から毎回、独立に乱数を生成できるとする

Two Stage Gibbs Sampling ターゲット分布 (x, yの同時分布)

1. 初期値を選ぶ

)|(~| 1|11 −−− ⋅= tXYttt xfxXY

アルゴリズム

2. 条件付き分布から逐次的に を生成

),( yxfGSで使う分布: 条件付き分布 (こちらは比較的簡単な形)

)|(),|( || yxfxyf YXXY

00 xX =

)|(~| | tYXttt yfyYX ⋅=

tt yx ,

補足: 周辺分布 のモンテカルロサンプルは単に, を捨てればよい. )(xf X ty

3. がモンテカルロサンプル ( ) ( ) ( )MM yxyxyx ,,,,,, 2211

Page 50: 統計モデリング 第六回 配布資料bayes.sigmath.es.osaka-u.ac.jp/ftanaka/T/modeling/... · 任意の初期値 からスタートして ... ターゲット分布 から毎回、独立に乱数を生成できるとする

(*この例は人工的な例)

Gibbs Samplingの実装例 (1/2) ターゲット分布

+−−= ηθθηθ

21exp)2/exp(),(

22Df

∞<<η0

∞<<∞− θ

本当に欲しいもの (IID のモンテカルロサンプル)

多次元分布から、毎回、独立にサンプルを取り出すのは難しい

サンプリング むずかしそう・・・・

( ) ( ) ( ) ),(~,,,,,,...

2211 ηθηθηθηθ fdii

MM

Page 51: 統計モデリング 第六回 配布資料bayes.sigmath.es.osaka-u.ac.jp/ftanaka/T/modeling/... · 任意の初期値 からスタートして ... ターゲット分布 から毎回、独立に乱数を生成できるとする

Gibbs Samplingの実装例 (2/2) 条件付分布は1次元の確率分布(正規分布& 指数分布)

ηθ1

1,0~| N

+2

1~|2θθη Exp

1. 初期値を選ぶ

+ −− 2

)(1~|2

11

ttt Exp θθη

アルゴリズム

2. 条件付き分布から逐次的に を生成

)1,0(~0 Nθ( )tt ηθ ,

(a)

(b)

+ t

tt Nη

ηθ1

1,0~|

分布はなんでもよい

有名な1次元分布なので 組み込み関数で済む (次のスライド)

Page 52: 統計モデリング 第六回 配布資料bayes.sigmath.es.osaka-u.ac.jp/ftanaka/T/modeling/... · 任意の初期値 からスタートして ... ターゲット分布 から毎回、独立に乱数を生成できるとする

Gibbs Samplingの実装

1. 初期値を選ぶ

)|(~| 1|11 −−− ⋅= tXYttt xfxXY

アルゴリズム(再掲)

2. 条件付き分布から逐次的に を生成

00 xX =

)|(~| | tYXttt yfyYX ⋅=

tt yx ,

Nsim <- 5000; theta <- eta <- array(0, dim=Nsim); #1. 初期値 theta_0 <- rnorm(1); # 2 (a) eta[1] <- rgamma(1, shape=1, rate= (1+theta_0^2)/2); # 2 (b) theta[1] <- rnorm(1, mean=0, sd=1/sqrt( 1 + eta[1])); for (t in 2:Nsim){ # 2 (a) eta[t] <- rgamma(1, shape=1, rate= (1+theta[t-1]^2)/2); # 2 (b) theta[t] <- rnorm(1, mean=0, sd=1/sqrt( 1 + eta[t]));}

プログラム例

半信半疑でしたが思ってたより 簡単でした!! (板橋区・TKさん*)

* レビューはあくまで個人の感想です. 効果には個人差があります.

Page 53: 統計モデリング 第六回 配布資料bayes.sigmath.es.osaka-u.ac.jp/ftanaka/T/modeling/... · 任意の初期値 からスタートして ... ターゲット分布 から毎回、独立に乱数を生成できるとする

Histogram of eta

eta

Den

sity

0 5 10 15

0.0

0.1

0.2

0.3

0.4

0.5

Gibbs Samplingの実行結果

Histogram of theta

theta

Den

sity

-3 -2 -1 0 1 2 3

0.0

0.1

0.2

0.3

0.4

0.5

> param <- cbind(theta, eta) > param[50:100,] theta eta [1,] -1.495317163 0.57113836 [2,] -0.256467877 1.49928143 [3,] -0.931856340 1.50184380 ........... > hist(theta, col=2, breaks=12, freq=F) > hist(eta, col=2, breaks=12, freq=F)

← モンテカルロサンプルを表示

↑ のみのヒストグラムを表示 (周辺分布 の近似) θ

)(θf↑ のみのヒストグラムを表示 (周辺分布 の近似) η

)(ηf

Page 54: 統計モデリング 第六回 配布資料bayes.sigmath.es.osaka-u.ac.jp/ftanaka/T/modeling/... · 任意の初期値 からスタートして ... ターゲット分布 から毎回、独立に乱数を生成できるとする

Multi Stage Gibbs Sampling ターゲット分布

1. 初期値を選ぶ

),,|(~ )1()1(21

)(1

−−⋅ tp

tt xxfx

アルゴリズム

2. 条件付き分布から逐次的に を生成

),,,( 21 pxxxf

条件付き分布

),,,|(),,,|( 31221 pp xxxyfxxyf

)0()0(1 ,, pxx

)()(2

)(1 ,,, t

ptt xxx

),,,|(,, 121 −pp xxxyf

),,,|(~ )1()1(3

)(12

)(2

−−⋅ tp

ttt xxxfx

),,,|(~ )(1

)(2

)(1

)( tp

ttp

tp xxxfx −⋅

3. (p 次元ベクトルがM個) がモンテカルロサンプル )()2()1( ,,, Mxxx

),,,( 21 pxxxx =ただし,

Page 55: 統計モデリング 第六回 配布資料bayes.sigmath.es.osaka-u.ac.jp/ftanaka/T/modeling/... · 任意の初期値 からスタートして ... ターゲット分布 から毎回、独立に乱数を生成できるとする

参考:Gibbs Samplingの収束性 証明の方針

マルコフ連鎖

Gibbs sampler で生成される は以下のマルコフ核をもつマルコフ連鎖

※GSのマルコフ核は一般に詳細つりあい条件は満たしてない

)(zf

p=3 の場合(一般の場合も同様)

,,,..., )1()()0( +tt xxx のマルコフ核Kについて

ターゲット分布 f が定常分布であることを示す. (詳細は文献参照)

),|(),|(),|()|( 321131222133 yyzfyzzfzzzfyzK =

)(tx

また, )(~ yfy の時, z の分布は

∫= dyyfyzKzgz )()|()(~ところが g(z) はがんばって計算すると に一致する.

したがって, f はマルコフ連鎖の定常分布

Page 56: 統計モデリング 第六回 配布資料bayes.sigmath.es.osaka-u.ac.jp/ftanaka/T/modeling/... · 任意の初期値 からスタートして ... ターゲット分布 から毎回、独立に乱数を生成できるとする

理解度チェック:MCMC法2

高次元のパラメータに関する積分であっても、組み込み関数で簡単に独立乱数を発生できるなら、MCMC法は必要ない

Two Stage Gibbs Sampling では、同時分布f(x,y)からのサンプリングを利用して、条件付分布のモンテカルロサンプルを求める

Two Stage, Multi Stage Gibbs Sampling は, 条件付分布を利用して、逐次的にサンプリングするという点が同じである。

条件付き確率分布が簡単な形で書けない場合、MH法が使えないため、Gibbs Sampling を利用するしかない

Page 57: 統計モデリング 第六回 配布資料bayes.sigmath.es.osaka-u.ac.jp/ftanaka/T/modeling/... · 任意の初期値 からスタートして ... ターゲット分布 から毎回、独立に乱数を生成できるとする

7. WinBUGS

Page 58: 統計モデリング 第六回 配布資料bayes.sigmath.es.osaka-u.ac.jp/ftanaka/T/modeling/... · 任意の初期値 からスタートして ... ターゲット分布 から毎回、独立に乱数を生成できるとする

BUGS

WinBUGS = Windows上で動くバイナリー (closed source)

BUGS=Bayesian inference Using Gibbs Sampling

メジャーな確率分布を複数組み合わせて解析する場合に使う (たとえば正規分布のみでも複数組み合わせると条件付き分布の計算が面倒になってくる)

基本的な使用の方針

・統計モデル ・事前分布 ・データ ・初期値 ・固定パラメータ

MCMCサンプル 0.05155622 0.07840824 0.06736837 0.08869456 0.03744929 0.02129103 0.08448234 0.05873367 0.02704619 ....

*Open SourceのBUGSもある(OpenBUGS)

Page 59: 統計モデリング 第六回 配布資料bayes.sigmath.es.osaka-u.ac.jp/ftanaka/T/modeling/... · 任意の初期値 からスタートして ... ターゲット分布 から毎回、独立に乱数を生成できるとする

Rとの連携

Rプログラムの中で呼び出して使うことができる

(管理者として実行しないとエラーになることも)

・付属のGUIが使いにくい

・MCMC出力を使った処理が自由にできない

・統計モデル ・事前分布 ・データ ・初期値 ・固定パラメータ

MCMCサンプル 0.05155622 0.07840824 0.06736837 0.08869456 0.03744929 0.02129103 0.08448234 0.05873367 0.02704619 ....

WinBUGSの欠点

Rのインターフェース利用

ExcelやMATLAB, Stata, etc. からも使える

Page 60: 統計モデリング 第六回 配布資料bayes.sigmath.es.osaka-u.ac.jp/ftanaka/T/modeling/... · 任意の初期値 からスタートして ... ターゲット分布 から毎回、独立に乱数を生成できるとする

例: 炭鉱災害数と変化点検出

2つの独立なポアソンモデルからのデータ発生とみなして, その変化点を探索する (今回はWinBUGSの使用方法の説明用)

> N <- 112; > D <- c(4,5,4,1,0, 4,3,4,0,6, 3,3,4,0,2, 6,3,3,5,4, 5,3,1,4,4, 1,5,5,3,4, 2,5,2,2,3, 4,2,1,3,2, 1,1,1,1,1, 3,0,0,1,0, 1,1,0,0,3, 1,0,3,2,2, 0,1,1,1,0, 1,0,1,0,0, 0,2,1,0,0, 0,1,1,0,2,2,3,1,1,2, 1,1,1,1,2, 4,2,0,0,0, 1,4,0,0,0,1,0,0,0,0, 0,1,0,0,1, 0,0); > plot(1851:1962, D, main="Example of Poisson Change Point Model", xlab="Year", ylab="Num. of Accident")

1860 1880 1900 1920 1940 1960

01

23

45

6

Example of Poisson Change Point

Year

Num

. of A

ccid

ent

データ イギリスの炭鉱での災害数 1851年~1962年 (Carlin et al., 1992)

0,,5,4 11221 === DDD

↑モデルの変化点?

)( afterPo µ)( beforePo µ

Page 61: 統計モデリング 第六回 配布資料bayes.sigmath.es.osaka-u.ac.jp/ftanaka/T/modeling/... · 任意の初期値 からスタートして ... ターゲット分布 から毎回、独立に乱数を生成できるとする

統計モデルと事前分布

),10,0(~),10,0(~ 62

61 NbNb

)(~ tt PoD µ

model のBUGS言語での記述例 (coalmining.txt)

model { for(year in 1:N){ D[year] ~ dpois(mu[year]) log(mu[year]) <- b[1] + step(year - changeyear) * b[2] } for(j in 1:2){ b[j] ~ dnorm(0.0, 1.0E-6) } changeyear ~ dunif(1, N) }

21 )(log btHbt τµ −+=

)112,1(~ Uτ

人が準備する部分

BUGS コードでは, 分散の逆数を指定するので が出てくる(無情報事前分布) 610−

変化点は本来、離散値だが、連続値として一様分布をふっている

Page 62: 統計モデリング 第六回 配布資料bayes.sigmath.es.osaka-u.ac.jp/ftanaka/T/modeling/... · 任意の初期値 からスタートして ... ターゲット分布 から毎回、独立に乱数を生成できるとする

WinBUGSがやってくれること

炭鉱のデータ (R経由で受け渡し)

MCMCサンプル 0.05155622 0.07840824 0.06736837 0.08869456 0.03744929 0.02129103 0.08448234 0.05873367 0.02704619 ....

coalmining.txt

・統計モデル ・事前分布 ・初期値 ・固定パラメータ

3つのパラメータについて, 以下の事後分布をターゲットとする モンテカルロサンプルを生成!

( ) ( )11212121 ,,|,,~,, DDbbbb τπτ

以下のような各パラメータの周辺分布も表示

( ) ( ) ( )11211121211211 ,,|,,,|,,,| DDDDbDDb τπππ

Page 63: 統計モデリング 第六回 配布資料bayes.sigmath.es.osaka-u.ac.jp/ftanaka/T/modeling/... · 任意の初期値 からスタートして ... ターゲット分布 から毎回、独立に乱数を生成できるとする

R+WinBUGSの実行結果 実装例: ・ bugs 関数 (codaPkg=TRUE)でWinBUGSを実行、さらに read.bugs ・ plot でトレースプロットと事後分布(を推定したもの)が表示される.

data <- list("N", "D"); parameters <- c("changeyear", "b"); inits <- function(){ list(b=c(0,0), changeyear=50) }; coalmining.sim <- bugs(data, inits, parameters, "coalmining.txt", n.chains=3, n.iter=1000, bugs.directory="c:/Program Files/WinBUGS14/", codaPkg=TRUE); coalmining.coda <- read.bugs(coalmining.sim); plot(coalmining.coda); summary(coalmining.coda);

500 600 700 800 900 1000

0.9

1.1

1.3

Iterations

Trace of b[1]

0.8 1.0 1.2 1.4

01

23

4

Density of b[1]

N = 500 Bandw idth = 0.02272

500 600 700 800 900 1000-1

.8-1

.2-0

.6

Iterations

Trace of b[2]

-1.8 -1.6 -1.4 -1.2 -1.0 -0.8 -0.6

0.0

1.0

2.0

Density of b[2]

N = 500 Bandw idth = 0.03829

500 600 700 800 900 1000

3540

45

Iterations

Trace of changeyear

35 40 45

0.00

0.10

0.20

Density of changeyear

N = 500 Bandw idth = 0.5065

500 600 700 800 900 1000

335

345

355

Iterations

Trace of deviance

335 340 345 350 355

0.00

0.10

0.20

Density of deviance

N = 500 Bandw idth = 0.5497

今回はWinBUGSの紹介用なので 分析結果の考察は省略!!

Page 64: 統計モデリング 第六回 配布資料bayes.sigmath.es.osaka-u.ac.jp/ftanaka/T/modeling/... · 任意の初期値 からスタートして ... ターゲット分布 から毎回、独立に乱数を生成できるとする

1. フリー・商用 ともに, まずは類似の解析例を探す!

まとめ MCMCでの分析が必要になったら

1.まずはシンプルな統計モデルで!(&共役事前分布を用いるなど) 2.階層ベイズモデルなどMCMC前提のモデル

2. 類似例が見つからない、もしくはうまくいかない場合 → 自分で統計モデルをたてる もしくは, 雇う?!

ベイズモデリングの指針

*最近, Stan (& Rから呼び出すRStan) も使われるようになっており, 日本語の文献, web上の情報も増えてきた感がある. (→ 参考: 松浦健太郎著: StanとRでベイズ統計モデリング, 共立出版)

いよいよ, 第8・9回で本格的なベイズ分析を紹介(MH, GS なども利用.)