Upload
others
View
0
Download
0
Embed Size (px)
Citation preview
2016年5月24日@統計モデリング
担当:田中冬彦
統計モデリング 第六回 配布資料
文献: 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 は日本語訳 (ともに石田基広, 石田和枝訳, 丸善出版) あり
出典:東京電力HP
今後の予定
第七回 グループ発表1 -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θθθ のヒストグラム )|( xθπ の関数形
第六回 数値技法(MCMC)
第八回 線形モデルのベイズ解析
第九回 一般化線形モデルのベイズ解析
今日の内容
1.モンテカルロ法 2.マルコフ核 3.マルコフ連鎖と定常分布 4.マルコフ連鎖モンテカルロ法 ~Metropolis-Hastings Method 5.マルコフ連鎖モンテカルロ法 ~Gibbs Sampler 6.WinBUGS
1. モンテカルロ法
続・冬のカナタ (以下は架空のものです)
・村上冬樹さんは「泣けるシナリオ大賞」を目指して「続・冬のカナタ」というシナリオを書き上げました.
・目標としては国民の8割以上が泣くシナリオを目指しています.
・ 周囲の友人に「続・冬のカナタ」を読んでもらい, 泣いたかどうかを聞きました.
Introduction
続・冬のカナタを読んで泣く人の割合(確率)を q とし設定は事前分布以
外, 前回と同じ. q の事後分布は以下のようになったという
考えてみよう
( ) ),1tanh(3| 3 qCqxq −==π
冬樹さんは q に関する以下の確率を評価したいが, どうすればいいか途方に暮れている・・・・
10 ≤≤ q
( )dqxqxq ∫ ===≥1
8.03|)3|8.0Pr( π
ここでCは積分定数.
統計の素養を身につけたあなたから冬樹さんへのアドバイス
の関数形が簡単な形でない場合、以下の積分は困難 )|( xθπ
モンテカルロ法(1/2)
∫∫ ==∈ θθθπθθθπθ dxxEdxxAA
)|(]|[,)|()|Pr(
ベイズ統計の難点 (~1980年)
→ 今回紹介するモンテカルロ法、特にマルコフ連鎖モンテカルロ法の導入で、高次元の積分計算も個人PCなどでできるようになった
高次元のパラメータ θ
モンテカルロサンプリング
うまいプログラムをつくると, あたかも事後分布(確率分布)から値が発生したかのように見える. このように値を抽出する方法をモンテカルロサンプリングという
)()2()1( ,,, Mθθθ
モンテカルロ法(2/2)
プログラムを実行して, のようなM個の値が出てきたとする.
-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θθθ のヒストグラム )|( xθπ の関数形
ベイズ統計におけるモンテカルロ法
事後分布(確率分布)に関する様々な量を近似的に計算する方法.
)()2()1( ,,, Mθθθ モンテカルロサンプル を用いて
∫∑ ≈=
θθθπθ d)|(11
)( xM
M
j
j
)|( xθπ≈
)}|(,),|(),|(max{ )()2()1( xxx Mθπθπθπ
のモード(最頻値)
モンテカルロサンプルを用いた計算例
モンテカルロ法は確率分布に関する量の近似計算法
→ 事後分布でなく一般の確率分布として以下では説明
∫≈1
8.0d)|( θθπ x
0.8 から1の間に入る の数
M
)( jθ
)()2()1( ,,, Mθθθ )|( xθπ のモンテカルロサンプル
(a) ∫∑ ≈=
θθπθθ d)|()()(11
)( xhhM
M
j
j
(b)
(c)
モンテカルロサンプルは組み込み関数などから独立に発生
独立同一分布でのモンテカルロ法
∫∑ →=
θθθθ d)()()(11
)( fhhM
M
j
j
・1,2次元の場合は棄却法で任意の確率分布から発生できる(数値積分でもよい)
・サンプリング数 で収束するが効率の面から工夫が必要
・変数変換やImportance Sampling
∞→M
注意点
↑ 数値積分法と対比して, モンテカルロ積分法などという
∞→M
)(~,,,...
)()2()1( θθθθ fdii
M
基本的な確率分布の場合
Importance Sampling 工夫が必要な例
)1,0(~ NX ]1[)20Pr( }20{ ≥=≥ XEX
Importance Sampling (重点サンプリング)
Q2. Q1 の例で正規分布の代りにコーシー分布をつかってモンテカルロ積分をすることができる. h, f, g から被積分関数を具体的に書き下せ.
次の恒等式を用いた変数変換が有効
∫∫ −+∞ − ==≥t u
t
v dueu
dvetX/1
0
2/12
2/ 22 121
21)Pr(
ππ
∑∫∫=
≈=M
jj
jj
gfh
Mg
gfhfh
1)(
)()(
)()()(1d)(
)()()(d)()(
θθθθθ
θθθθθθ
ただし, うまい変数変換を見つける必要がある
Q1. モンテカルロ積分で計算する方法を説明せよ. また, その問題点を述べよ
2. マルコフ核
マルコフ核
以下を満たす条件付き分布の族をマルコフ核 (Markov kernel)という.
X: 有限集合
XyXx ∈∀∈∀ ,1)|( =∑
∈XxyxK
,0)|( ≥yxKXy∈∀
マルコフ核はX上の分布をX上の分布へ写す
∑∈
=Xy
ypyxKxp )()|()(~ .)()(~ constxpxpXxXx
== ∑∑∈∈
Kpp =~)|(][ yxKKxy =← 行列表記
*実在のWebサイトとは一切関係ありません。
無料ブログサイトJC2には10万人程度のブロガー(ほぼ初心者)が登録している. JC2ではブロガーをゴールド(G)、シルバー(S)、ブロンズ(B)にクラス分けすることにした. すなわち, 下記の称号を付与し, 称号に応じて様々な特典を与えることにした.
ゴールドブロガー, シルバーブロガー, ブロンズブロガー ただし, 毎週、前の週の閲覧実績や更新頻度などから以下のルールでクラス間の遷移が発生する.
例題:黄金のブロガー
ゴールド: 70%が残留;30%がシルバーに降格 シルバー: 80%が残留;10%がブロンズに降格、10%がゴールドに昇格 ブロンズ: 80%が残留:20%がシルバーに昇格
注: 登録ブロガーは一定数とし, 第 n 週目の各比率を
とあらわす.(称号はG,S,B).
第一週は, 全員, S からスタート.
例題:黄金のブロガー
)()2( Bp
G S B G S B G S B
1)()1( =Sp
)(),(),( )()()( BpSpGp nnn
)()2( Gp
)()2( Sp
ゴールド 目指すズラ!
{ }BSGX ,,= 上の分布が毎週、変化していく
K K
計算してみよう 1. )(),( )3()2( SpSp を求めなさい.
2.
8.0)()2( =Sp 69.0)()3( =Sp
),,(),()( BSGxxp n = から,
),,(),()1( BSGxxp n =+を計算する漸化式を書きなさい
)(1.0)(7.0)( )()()1( SpGpGp nnn +=+
)(8.0)(1.0)( )()()1( BpSpBp nnn +=+
)(2.0)(8.0)(3.0)( )()()()1( BpSpGpSp nnnn ++=+
挑戦してみよう 3. (a) 2を行列Kとベクトルで書き, Kがマルコフ核になっていることを確認せよ.
qp n =+ )1((b) 今, の時は, となり全体の比率は不変であるという. このようなq を求めなさい. (線形代数の問題!)
qp n =)(
=
=
11/311/611/2
)()()(
BqSqGq
q
3. マルコフ連鎖と定常分布
マルコフ連鎖
初期値を としてマルコフ核から次のように乱数(確率変数)の列が得られる
(その意味で をマルコフ連鎖とよぶことも)
Xx ∈0
,,,, 21 txxxこのように生成する確率変数の列がマルコフ連鎖 (Markov Chain)
)|(~| 11 tttt xxKxx ++
XyxyxK ∈,)}|({
マルコフ連鎖が与えられた時, 以下を満たす確率分布を定常分布という
XxxpypyxKXy
∈∀=∑∈
),()()|(
XyxyxK ∈,)}|({ X上のマルコフ核
例題:黄金のブロガー
JC2サイトでは先の行列Kを用いてランダムにブロガーの昇格・降格を決めていた。
事情はさておき・・・
nX
*実在のWebサイトとは一切関係ありません。
あるブロガーの n 週目の称号(クラス)
BSGyyX n ,,);Pr( == から, n+1 週目に各クラスにいる確率 の計算式は以下のようになる.
∑=
==BSGy
n yXyxK,,
)Pr()|(
∑=
++ =====BSGy
nnnn yXyXxXxX,,
11 )Pr()|Pr()Pr(
私の苦労は 何だったの?
計算してみよう 1. 第一週目にシルバーからスタートしたブロガーが
第二、三週目にブロンズクラスにいる確率を求めよ.
69.0)Pr( 3 == BX10.0)Pr( 2 == BX
2. という毎週のクラスはマルコフ連鎖となっている. このマルコフ連鎖に関する定常分布を求めよ.(実はすでに求めている.)
,,,, 21 txxx
=
=
11/311/611/2
)()()(
BqSqGq
q
基本的な事実 以下では定常分布が唯一存在するケースのみを考える
0x
)Pr()()( xXxp tt ==
XyxyxK ∈,)}|({ マルコフ連鎖
基本的な事実 1(厳密なStatementは文献参照)
とおくと
∞→t
定常分布 )(xp∞
したがって, 初期値 に依存しなくなる
∞→ pp t )(
考えてみよう
2. マルコフ核K から, 定常分布を数値的にシミュレーションする方法としてどのようなものが考えられるだろうか。
Q1. 2つ以上定常分布が存在する例をつくれ Q2. |X| = ∞ の場合は定常分布が存在しないケースがありえる. 具体的に構成せよ
ここでは定常分布が唯一存在することを仮定するが, そのための条件に関して以下の問に答えよ
1*.
基本的な事実その2
0x
XyxyxK ∈,)}|({ マルコフ連鎖
基本的な事実 2(厳密なStatementは文献参照)
定常分布 )(xp∞
特に初期値 に依存しなくなる ,,,, 21 txxx実現値 の経験分布は ∞→t で定常分布
)(xp∞ に収束.
MCMC法の核心 )(xp確率分布 を与えたとき、 その確率分布を定常分布にもつような
マルコフ連鎖 を具体的に構成 XyxyxK ∈,)}|({(定常分布が唯一存在するから, もともとの確率分布に収束してくれる)
-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∞
4. マルコフ連鎖モンテカルロ法 ~ Metropolis-Hastings Method
マルコフ連鎖モンテカルロ法(MCMC法)
モンテカルロサンプル を発生させるアルゴリズム (マルコフ核は実は煩雑)
,,,, 21 txxx
理論
を満たすマルコフ核 を与え
発生させたい分布 (Target distribution)
0)(,1)(),( ≥=∑ xxxx
πππ
XxxyyxKXy
∈∀=∑∈
),()()|( ππ
XyxyxK ∈,)}|({
)|(~| 11 tttt xxKxx ++
,,,, 21 txxx を以下、順次発生
実際には(ほとんどのテキスト)
資料ではアルゴリズムとマルコフ核の両方を紹介(時間の都合でとばすかも)
紹介するアルゴリズム
代表的な2つ
MH法
- MH法 (Metropolis-Hastings Method) - Gibbs Sampler (Gibbs Sampling)
- 詳細つり合い条件 (detailed balance condition) を満たすマルコフ核
Gibbs Sampler
- 定常条件を直接満たすマルコフ核(詳細つり合い条件は満たさないかも)
独立MH法, 一般MH法
二段階GS, 多段階GS
詳細つり合い条件
詳細つりあい条件 (Detailed Balance Condition)
)()|()()|( yyxKxxyK ππ = yx∀∀
MCMC法の基本原理
任意の初期値 から生成するマルコフ連鎖
π について詳細つりあい条件を満たすマルコフ核を とする. )|( yxK
0x ,,,, 21 txxxの経験分布 (ヒストグラム)は, ∞→t で, に収束 π
詳細つりあい条件を満たす分布 は, 実は定常分布 π
Q.詳細つりあい条件を満たす分布が定常分布になっていることを示せ
Q.「基本的な事実その2」を用いて, 上を示しなさい.
参考:詳細つり合い条件
=
5/210/310/3
)(xπ
=
2/13/204/103/24/13/13/1
)|( yxK
1.定常分布は唯一であり以下で与えられる(DBCをみたさない)
状態数が2(Kが2×2行列) の場合、DBCと定常条件は同値 状態数が3以上の場合, DBCを満たさない場合がある。
例:
2.DBCを満たす分布は存在しない
2点間のMH法 (1/2) 2点間のMH法
y x
)(xπ)(yπ
)()( xy ππ >
今,
(a) 行き先候補 を の中からランダムに選ぶ
tz (=x, y) が所与の下
1+tz
propz { }yx,
2/1)()( ==== yzPxzP propprop
次の行き先 を確率的に定める.
(b) バランスを崩さないように本当に移動するか, 踏みとどまるか決める
1)(
)(≥
t
prop
zz
ππ
propt zz =+1
1)(
)(<
t
prop
zz
ππ
propt zz =+1)()(
t
prop
zz
ππ
確率 で
確率 )()(
1t
prop
zz
ππ
− で tt zz =+1
←覚え方: 転職先の給与額が高ければ迷わず移動
Rでの実装例(1/2) 2点間のMH法の実装例
y x
)(xπ)(yπ
3/2)2(,3/1)1( == ππz=1,2 をMH法に基づいてランダムに動き回る シミュレーション
プログラム例
f_prior <- function(x){ if(x==1){ return(1/3) }; if(x==2){ return(2/3) }; return(0); } Nsim <- 10^3;z <- array(0, Nsim); # z= 1, 2 をうろうろする. z[1] <- 1; # initial value for(t in 1:(Nsim-1)){ z_prop <- sample(1:2, 1); if ( f_prior(z_prop)/f_prior(z[t]) >= runif(1) ){ z[t+1] <- z_prop ; }else{z[t+1] <- z[t];} }
2点間MH法の実行結果をプロット
プログラム例
par(mfrow=c(2,1)); plot(1:50, z[1:50], type="b",xlab="time", main="Two-point MH algorithm"); plot(950:1000, z[950:1000], type="b",xlab="time", main="Two-point MH algorithm");
1 0 10 20 30 40 501.
01.
41.
8
Two-point MH algorithm
time
z[1:5
0]
950 960 970 980 990 1000
1.0
1.4
1.8
Two-point MH algorithm
time
z[950
:100
0]
2
3/1)1( =π
3/2)2( =π
Rでの実装例(2/2)
−+
=∑
<1)()(:
)()(1
21
21
)()(,1min
21
)|(
wuu
wu
wv
wvK
ππ π
πππ
Q1.
wv ≠
{ }yxwv ,, ∈ として以下のマルコフ核に相当
wv =
∑ =v
wvK 1)|(
Q2. )()|()()|( vvwKwwvK ππ =
を示せ
(詳細つりあい条件)を示せ
先に紹介したアルゴリズムは
2点間のMH法 (2/2) マルコフ核
Q2’. 3/1)1( =π 3/2)2( =π のとき,マルコフ核を行列であらわせ.
独立MH法 (1/2) 簡単のため有限集合 上の分布を考える
今,
(a) 行き先候補
Θ∈tz が所与の下 1+tz
)(~ zqz prop
次の行き先 を確率的に定める.
(b) 本当に移動するか踏みとどまるか決める
propt zz =+1確率 で
確率 で tt zz =+1
← 一般のMH法は詳細つりあい条件を満たすようにここが複雑になる
1≥ρ
1<ρ ρρ−1
)()()()(
tprop
propt
zzqzzqπ
πρ =
0)(,1)( ≥=∑Θ∈
zqzqz
q(z): 提案分布 (自由に設定)
Θ
propt zz =+1
−+
=∑
<1)()()()(:
)()()()(1)()(
)()()()(,1min)(
)|(
wuquwqu
wuquwquqvq
wvqvwqvq
wvK
ππ π
πππ
Q3.
wv ≠
Θ∈wv,(簡単のため離散分布で表現)
wv =
∑Θ∈
=v
wvK 1)|(
Q4. )()|()()|( vvwKwwvK ππ =
を示せ
(詳細つりあい条件)を示せ
提案分布は現在の場所 に依存してもよい(次に紹介) Θ∈tz
独立MH法 (2/2) マルコフ核
一般MH法
今,
(a) 行き先候補
Θ∈tz が所与の下 1+tz
)|(~ tprop zzqz
次の行き先 を条件付き分布で定める.
(b) 本当に移動するか踏みとどまるか決める
1≥ρ propt zz =+1
1<ρ propt zz =+1ρ確率 で
確率 ρ−1 で tt zz =+1
)()|()()|(
ttprop
proppropt
zzzqzzzq
ππ
ρ =
Q5. 独立MH法と同様にマルコフ核を書き下せ, また詳細つりあい条件を満たすことを示せ
独立MH法の実装例
histogram of MCMC
X
Freq
uenc
y
0.0 0.2 0.4 0.6 0.8
050
100
200
300
histogram of rbeta
hikaku
Freq
uenc
y
0.0 0.2 0.4 0.6 0.8
050
100
200
300
ベータ分布 Be(2.7, 6.3) MCMC利用(MH法)とRの組み込み関数rbeta() の比較
プログラム例 (MCMC)
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); } S <- Nsim/40; MAX_Y <- S*max(dbeta((1:10000)/10000,a,b)); hist(X, col=2, breaks=40, ylim = c(0, MAX_Y), main="histogram of MCMC"); curve(S*dbeta(x, a,b), add=T);
# Rの組み込み関数を用いる場合 hikaku <- rbeta(Nsim, a,b);
理解度チェック:MCMC法
MCMC法を提案する場合、発生させたい確率分布(事後分布)について、詳細つり合い条件を満たすマルコフ核を与える必要がある
モンテカルロサンプルの定常分布への収束は一般の場合で証明できるが、早く収束するような工夫は個別に必要である
MH法のアルゴリズムをマルコフ核で書き下すと、発生させたい確率分布は、常に詳細つりあい条件を満たしている。
MCMC法でサンプル数を増やしていくと, ほとんど一定の値しか出てこなくなり, 収束していく。
独立MH法では、次の行き先を決める分布(提案分布)は現在の状態と独立である
5. マルコフ連鎖モンテカルロ法 ~ Gibbs Sampler
*Gibbs Sampling ともいう
Gibbs Sampler
Gibbs Sampling を紹介, 統計学者の間で認知され広まる
Geman and Geman (1984)
応用でGibbs Samplerを使った
Gelfand and Smith (1990)
周辺分布や同時分布が簡単に書けない(サンプリングが難しい)が、条件付き分布はサンプリングしやすい(正規分布など)場合に使う
基本的な使用の方針
Two Stage Gibbs Sampling
サンプリングしたい確率分布 (x, yの同時分布!)
Two Stage Gibbs Sampling
1. 初期値を選ぶ
)|(~| 1|11 −−− ⋅= tXYttt xfxXY
Algorithm
2. 条件付き分布から逐次的に を生成
),( yxf二つの条件付き分布 (こちらは比較的簡単な形)
)|(),|( || yxfxyf YXXY
00 xX =
)|(~| | tYXttt yfyYX ⋅=
tt yx ,
(*この例は棄却法などでも可能)
1. 補助変数 ( ) を加えた積分表示を求めて, 同時分布 を考える
νθθθ
)1()2/exp()( 2
2
+−
= Cf
3. Two Stage GS
やりかた
3=ν
η∫∞ −
+−−=
0
12
2
21exp)2/exp()( ηηηθθθ ν dDf
2. 次の二つの条件付き分布を求める
+−
+=
−
2
1 21exp
)1(21)|( θη
ηπηθf
+−
+Γ
= − ηθηθν
θη νν
21exp
21
)(1)|(
21
2
f
Gibbs Samplingの実装例 (1/2)
確率分布 (GSで発生させたい分布)
),( ηθf
Gibbs Samplingの実装例 (2/2)
確率分布 (GSで発生させたい分布)
点線は理論曲線をヒストグラムにあわせて描いたもの
νθθθ
)1()2/exp()( 2
2
+−
= Cf
プログラム例
3=ν
Nsim <- 5000; theta <- eta <- array(0, dim=c(Nsim, 1)); nu <- 3; theta[1] <- rnorm(1); eta[1] <- rgamma(1, shape=nu, rate= (1+theta[1]^2)/2); for (i in 2:Nsim){ theta[i] <- rnorm(1, mean=0, sd=1/sqrt( 1 + eta[i-1])); eta[i] <- rgamma(1, shape=nu, rate= (1+theta[i]^2)/2); }
Gibbs sim
theta
Freq
uenc
y
-3 -2 -1 0 1 2 3
020
040
060
080
010
00
2次元同時事後分布を作る場合
確率分布
同時分布を求めたい場合
),(~ vNX i θ
やりかたは同じ
ni ,,2,1 =
)|,(~),( xvv θπθしかし, 次の二つの条件付き分布を使うのは(組み込み関数が使えるので)容易
),(~ 0 wN θθ),(~ baIGv
事後分布 の直接のサンプリングはめんどう (MH法)
),(~,|),,(~,| BAIGxvVNxv θξθ
2)(,2/
2θ−++=+=
xnSbBanA
∑=
−=n
jjn xxS
1
2)(wnv
vxnwnwv
vwV n
++
=+
= 0)(, θξ
計算部分
確率分布 補足(計算部分)
),(~ vNX i θ ni ,,2,1 =
)|,(~),( xvv θπθ
−−
−−∝ 2
02 )(
21exp)(
/21exp),|( θθθθπ
wx
nvxv n
),(~ 0 wN θθ),(~ baIGv
),|( xv θπ
−−∝ 2)(
21exp ξθV 1
01
/)/(,1
/11
−
−
++
=+=wvnwxvn
wnvVn θξ
vban e
vwvxnS
vxv /
1
20
2
2/
12
)(exp2
)(exp1)|,( −+
−−
−+−∝
θθθθπ
+
−+−∝ ++ v
bvxnS
v an 2)(exp1 2
12/
θ
),(~,| BAIGxv θ2
)(,2/2θ−+
+=+=xnSbBanA
Multi Stage Gibbs Sampling
サンプリングしたい確率分布
Multi Stage Gibbs Sampling
1. 初期値を選ぶ
),,|(~ )1()1(21
)(1
−−⋅ tp
tt xxfx
Algorithm
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 −⋅
Gibbs Samplingの収束性 証明の概略
マルコフ連鎖
Gibbs sampler で生成される は以下のマルコフ核をもつマルコフ連鎖
※GSのマルコフ核は一般に詳細つりあい条件は満たしてない
)(zf
p=3 で示す(一般の場合も同様)
,,,..., )1()()0( +tt xxx のマルコフ核Kについて
fが定常分布であることを示せば十分. (詳細は文献参照)
),|(),|(),|()|( 321131222133 yyzfyzzfzzzfyzK =
)(tx
また, )(~ yfy の時, z の分布は
∫= dyyfyzKzgz )()|()(~
ところがこれは計算すると に一致する.
したがって, f はマルコフ連鎖の定常分布
計算部分 p=3 で
∫=∈ dydzyfyzKzAzP A )()|()(1)(
)()()|()( zfdyyfyzKzg == ∫
ここで,
やや一般的に以下を計算 (A は任意のz可測集合)
∫= dzdyyyyfyyzfyzzfzzzfzA ),,(),|(),|(),|()(1 321321131222133
∫∫∫ = 2323211213213211 ),(),|(),,(),|( dyyyfyyzfdydyyyyfyyzf
を示す
),(
),,(
31
2321
yzf
dyyyzf
=
= ∫
といった計算を繰り返すと
∫= 33213131222133 ),(),|(),|()(1 dydzdzdzyzfyzzfzzzfzA
∫= 33213212133 ),,(),|()(1 dydzdzdzyzzfzzzfzA
∫= 321321 ),,()(1 dzdzdzzzzfzA )(~ zfzしたがって
理解度チェック:MCMC法2
高次元のパラメータに関する積分であっても、組み込み関数で簡単に独立乱数を発生できるなら、MCMC法は必要ない
Two Stage Gibbs Sampling では、同時分布f(x,y)からのサンプリングを利用して、条件付分布のモンテカルロサンプルを求める
Two Stage, Multi Stage Gibbs Sampling は, 条件付分布を利用して、逐次的にサンプリングするという点で同じである。
f(x,y)でのTwo Stage Gibbs Sampling では、十分、xのサンプルを独立に発生させた後で、条件付分布からy のサンプルを発生させる.
条件付き確率分布が簡単な形で書けない場合は、Gibbs Sampling を利用するしかない
6.WinBUGS
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)
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. からも使える
Example: Coal Mining (1/2)
ここでは変化点問題として、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)
統計モデル
← BUGS コードでは, 分散の逆数を指定するので が出てくる
),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 τµ −+=
610−
)112,1(~ Uτ ← 変化点は本来、離散値だが、連続値として一様分布をふっている
Example: Coal Mining (2/2)
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
MCMCサンプルの取り出し方法 1 (収束が確認できた後で) bugs 関数 (codaPkg=FALSE)でWinBUGSを実行 → 出力オブジェクトから取り出す
> coalmining.sim.dat <- bugs(data, inits, parameters, "coalmining.txt", n.chains=3, n.iter=1000, bugs.directory="c:/Program Files/WinBUGS14/", codaPkg=FALSE); > coalmining.sim.dat$sims.list$changeyear[1:10] [1] 40.60 40.69 40.81 41.77 37.52 37.67 40.40 38.97 38.31 36.49 > coalmining.sim.dat$sims.list$b[1:10,] [,1] [,2] [1,] 1.362 -1.4190 [2,] 1.193 -1.1050 [3,] 1.095 -1.1670 [4,] 1.049 -0.9935 [5,] 1.230 -1.3540 [6,] 1.120 -1.2310 [7,] 1.127 -1.4230 [8,] 1.184 -1.3800 [9,] 1.275 -1.3890 [10,] 1.405 -1.3830
MCMCサンプルの取り出し (1/2)
MCサンプルの取り出し方法 2 codaPkg=TRUE で実行, read.bugs()でリストを生成. → リストの中身を直接、参照する.
> coalmining.coda[1:3,] [[1]] b[1] b[2] changeyear deviance [1,] 1.175 -1.134 37.20 336.6 [2,] 1.243 -1.538 41.94 339.3 [3,] 1.242 -1.481 38.11 340.2 [[2]] b[1] b[2] changeyear deviance [1,] 0.9676 -1.153 43.10 341.5 [2,] 1.0320 -1.225 40.31 335.6 [3,] 1.1270 -1.016 36.00 338.6 [[3]] b[1] b[2] changeyear deviance [1,] 1.256 -1.482 37.49 337.8 [2,] 1.300 -1.561 37.73 339.7 [3,] 1.376 -1.668 39.84 343.4
MCMCサンプルの取り出し (2/2)
1.トレンドがはっきり見えると、確率分布から独立標本とほど遠いのでダメ 2.自己相関関数(時系列データとして)を計算してすそが0に近づかない場合はダメ 3.初期値を変えて数回走らせる → 時系列でプロットしたときに振る舞いが明らかに違うとダメ
トレースプロット 時系列データとして各パラメータ値をプロットしたもの
トレースプロットでのチェック
MCMCの収束診断 (1/2)
トレースプロットの例
4500 4550 4600 4650 4700 4750 4800
0.00.1
0.20.3
0.40.5
0.60.7
a= 2.7 :b= 6.3 :c= 2.669
step
x
・明らかに収束してないケースをはじくことは容易 ・パラメータの次元が大きい場合すべてのパラメータの視覚的な収束診断は不可能 ・収束してないけど、さまざまな判断基準をパスする可能性もある (この条件を満たせば収束OK といえる、万能な判断基準はない!!)
MCMCの収束診断 (2/2)
注意点
理論とのギャップ
(適切なMCMCの設定の下では)MCMCサンプルの数 → ∞ で サンプルの分布は、必ず求めたい事後分布に収束 → しかし、MCMCを使う必要がある場合、収束の速さなどもうまく評価できない
・WinBUGSでの解析例 (統計モデル, BUGS のコード)が次第に増えてきている → Exampleで、解析したいケースと類似のケースを探してみる
まとめ
MCMCで分析したいとき
・(共役事前分布を用いるなどして)陽な形で事後分布がかけるモデルでやってみる ・階層ベイズにすることで、かなり柔軟な統計モデルがつくれる
・類似例が見つからない、もしくはうまくいかない場合 → 自分で統計モデルをたてるしかない → WinBUGSを経由せず(Rなどで)いちからGS, MH法などでプログラムを作るのがベストかも【今回、紹介した以外にも方法はある】
ベイズモデリングの指針