「ベイズ推定でパラメータリスクを捉える
&優れたサンプラーとしてのMCMC」
2014年3月13日
担当: 出井
1. ベイズ推定について
2
1. ベイズ推定について
パラメータの確率分布を求める一方法に「ベイズ推定」が
ある
条件付き確率が満たす式:
=	
( )
( )
上式で、 をパラメータ、 を観測されたデータとすると、
( )はデータの条件なしのパラメータの確率分布を、
はパラメータを条件としてデータが観測される確率
(つまり尤度)を、 はデータが得られた後のパラ
メータの確率分布を意味する
3
1. ベイズ推定について
つまり、
=	
( )
( )
( : パラメータ、 : 観測されたデータ)
さらに、 ( )はパラメータ によらない数なので、
∝ 	 (ただし = 1)
データを与えた時のパラメータの確率分布
「事後分布」
パラメータを与えた時のデータの確率
「尤度」
条件なしのパラメータの確率分布
「事前分布」
「事後分布」 「尤度」 「事前分布」
4
1. ベイズ推定について
【例】ある年度の死亡保険契約者4人の内、生存3人死亡
1人というデータが得られた。この場合死亡率 の分布をベ
イズ推定で出力することを考える
① 事前分布 ( )の設定: = 1	(0 ≤ ≤ 1)
② 尤度 の設定: 二項分布から4人中3人死亡が観
察されたと仮定して、 = (1 − )
③ よって ∝ 	 = (1 − )
事後分布は = 20 (1 − ) (ベータ分布 (2,4))
5
1. ベイズ推定について
0
0.5
1
1.5
2
2.5
0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1
事前分布
事後分布
結果、事前確率分布から事後確率分布は以下のように変化
6
1. ベイズ推定について
ところで ∝ 	 のパラメータAの分布
や とは何を意味するのか?
ベイズの教科書ではこれらは「確信度」といわれ、頻度論
をベースにする最尤法で漸近正規性を仮定したパラメータ
分布とは発想が違うようだ
– :データが手に入る前の、パラメータが何であるかにつ
いての確信度
– :データが手に入った後の、パラメータが何であるか
についての確信度
今回発表では定性的に「パラメータリスク」が表されたも
のと理解した
7
1. ベイズ推定について
一方で最尤法とベイズ推定は数理的には以下の関係がある
– 最尤法:観察データの尤度を最大化するパラメータを推定値
として点推定する(頻度主義)
– ベイズ推定:事後確率=尤度×事前確率としてパラメータの事
後確率を推定する(ベイズ主義)
事前分布として何らかのピークを持つ分布を指定しない場
合(「無情報事前分布」(例えばほぼ無限に平べったい正
規分布)である場合)、ベイズ推定で得られた事後確率を
最大とするパラメータ値は最尤推定の結果と一致する
– 事後確率を最大とするパラメータ推定をMAP推定(Maximum
A-Posteriori Estimation)と呼ぶ
8
1. ベイズ推定について
よく「ベイズ推定は事前分布に主観性が入るから問題だ」
と批判されるが、前頁のとおり無情報事前分布を選ぶと最
尤法の発想と大差ないことを考えるとベイズ推定そのもの
への正しい批判とは言えない
逆に、最初は経験のない事象でもエキスパートジャッジメ
ントで主観的に事前分布を決めることができ、データが得
られるたびに客観的に更新していけるというある種の融通
が利く点を利用した活用手法も考えられており特徴を理解
した上で選択肢の一つと考えるべき
– スパムメールフィルター
• ある単語を含むメールがスパムかは最初は分からないので主観的に決めるがデータで随時スパムである確率を
更新することでスパムか否かの判断の精度を上げていく
– シナリオVaR
• 金融危機などのストレス事象をテールに含む例えば株価収益の確率分布を事前分布として主観的に与え、デー
タで更新していくことで評価したいテール事象の情報を含む確率分布を作成、それでVaRを評価する
2. MCMC(Markov Chain
Monte Carlo)について
10
2. MCMC(Markov Chain Monte Carlo)について
ベイズ推定では、「事後分布∝尤度×事前分布」で計算す
るが、特定の尤度と事前分布の組み合わせを選んだ場合を
除いて通常は事後分布が複雑な形式に変化してしまい解析
的に求まらない
これをモンテカルロシミュレーションで求める手法として
MCMCがある
MCMCではランダムに与えた初期値パラメータを一定の手
順に従って更新していくことで事後分布に従ったパラメー
タサンプルを得る手法
11
2. MCMC(Markov Chain Monte Carlo)について
シミュレーションシナリオを更新する際に事後確率(図で
は対数尤度)の高い方だけでなく低い方も一定ルール
(「詳細釣合の条件」)で選択させる
引用元: http://hosho.ees.hokudai.ac.jp/~kubo/stat/2013/ou3/kubostat2013ou3.pdf
12
2. MCMC(Markov Chain Monte Carlo)について
結果的に事後分布をなぞるようなサンプリングがおこなわ
れパラメータの事後分布 のサンプリングが得られる
(図ではq: パラメータ)
引用元: http://hosho.ees.hokudai.ac.jp/~kubo/stat/2013/ou3/kubostat2013ou3.pdf
13
2. MCMC(Markov Chain Monte Carlo)について
利点 欠点
• 解析的に解けない複雑な
モデルでパラメータ推定
できる
• 多峰の分布で局所解に偏
りにくい(勾配法と違い
解付近を「ふらつく」)
• 事後分布に従うパラメー
タの乱数が手に入り再利
用が容易(この利点につ
いてはブートストラップ
法でも同様)
• 計算に時間がかかること
もある
• 手法が一般的でなくコー
ディングの文法も学習す
る必要があるので担当者
間での再現性が低い
• ソフトウェアを使用する
場合は理論的には可能で
もソフトで対応していな
かったりする
14
2. MCMC(Markov Chain Monte Carlo)について
MCMCを実装するにはツール(サンプラー)の使用が最適
以下のような候補がある
– R:ライブラリMCMCPackやその他
– BUGS(OpenBUGS, WinBUGSなど): インタプリター
– stan: コンパイラなのでBUGSよりずっと早い。行列計算にfor
文なしで対応できる
– JAGS
特に近年の計算速度の進化で一般的になってきた
15
2. MCMC(Markov Chain Monte Carlo)について
stanコードの書き方例:事前分布を(0,1)の一様分布とする
θをパラメータとするN件のベルヌーイ試行のデータyが得
られた場合のθの事後分布を出したい
data {
int<lower=0> N;
int<lower=0,upper=1> y[N];
}
parameters {
real<lower=0,upper=1> theta;
}
model {
theta ~ uniform(0,1);
for (n in 1:N)
y[n] ~ bernoulli(theta);
}
ただの入力データ形式の宣言
(データは別途入力)
ただのパラメータの宣言
事前分布の設定
尤度を計算するためのデータ
発生のメカニズムの設定
16
2. MCMC(Markov Chain Monte Carlo)について
モデル上で様々な変数を様々な形で導入してもサンプリン
グを実行することができる(医療系の場合に健康診断結果、
病歴などの共変量を入れる、交差項を入れる、状態空間
(うまく考えれば「レジーム変化を含む推定」のようなも
のもできるか(明示的にパラメータリスクIIを出力))
データが少なく「個体差」がデータに表れる場合や潜在変
数による効果があるモデルで測定したい場合
– 固定効果:
年齢、年度、商品、コーホートなど観察変数を要因に含む分析
– ランダム効果:
UWの質の差によるブレなどの潜在要因をメタなある分布からラン
ダムに発生した効果として含める分析 (階層ベイズ)
17
2. MCMC(Markov Chain Monte Carlo)について
固定効果の反映例
– 例えばLee Carterモデルln , = + + , 	にコーホート効果
を反映させてln , = , + , + , 	などとしたい場合はstanを
使ったMCMCでは尤度の設定部分:
をたとえば以下のように変更すれば対応可能
for (x in 1:41){ //コメント:50歳~90歳
for (t in 1:61){ //コメント:1950年~2010年
mxt <- exp(ax[x]+ bx[x] * kt[t]);
rxt[x,t] ~ binomial(nxt[x,t],mxt);
}
}
for (x in 1:41){ //コメント: 50歳~90歳
for (t in 1:61){ //コメント: 1950年~2010年
mxt <- exp(ax[x,t]+ bx[x,t] * kt[t]);
rxt[x,t] ~ binomial(nxt[x,t],mxt);
}
}
※実際は変数宣言部分等も変更必要のためこの例は手順のイメージと考えてください
18
2. MCMC(Markov Chain Monte Carlo)について
ランダム効果の反映例
– 例えばLee CarterモデルにUWの質の差など未観察の要因により平均
を0とするランダム効果!"が加わりln , ," = + !" + + , ,"	(#
はランダム効果の番号)かつ !"~正規分布(平均 = 0, 標準偏差 =
!%&)などとしたい場合はstanを使ったMCMCではたとえば以下のよ
うにコードを変更すれば対応可能(「階層ベイズ」)
ri ~ normal(0,rdx); //ランダム効果のメタ分布
rdx ~ uniform(0,1.0E3);
for (x in 1:41){ //50歳~90歳
for (t in 1:61){ //1950年~2010年
for (i in 1:10){ //ランダム効果が発生した単位として10区分あり、
//それぞれ効果が独立に発生したとする
mxt <- exp(ax[x]+ri[i]+ bx[x] * kt[t]);
rxt[x,t,i] ~ binomial(nxt[x,t,i],mxt);
}
}
}
※実際は変数宣言部分等も変更必要のためこの例は手順のイメージと考えてください
3. MCMCの実装例
20
3. MCMCの実装例
MCMCの実装を試してみる
使用ツール: stanをR上でrstanを通して実行
やり方:
① Lee-Carterモデルのパラメータにある値を与えてそれが真の
パラメータであるとする
② それから計算される死亡率から死亡者数が2項分布に従う
として乱数サンプリングしデータを生成、それを観察デー
タとする
③ 観測されたデータをモデルへの入力値としてMCMCを行う
ことで①の真のパラメータとMCMCによる推定を比較する
結果の見方:赤線が真のパラメータ、黒い帯は500本のシミュ
レーション結果が束になったもの
21
3. MCMCの実装例
例1 (LCモデルのパラメータ推定)
Lee Carterモデルln , = + + , 	を前提 (∑ = 1, ∑ = 0)
• 1 ≤ & ≤ 40: 年齢50~90歳
• 1 ≤ ( ≤ 61: 年度1950~2010年
• エクスポージャーは各年齢、各年10,000人ずつとする
• パラメータ ,	 , に真の値を与えそこから計算される死亡率から10,000人
に2項分布で死亡者数を乱数で与えて、エクスポージャーと死亡者数からパ
ラメータ推定を行う(500本のシュミレーション)
• 結果かかったランタイム:581秒
管理用メモ:
モデル#102 “LC_stan.R”
22
3. MCMCの実装例
例1 結果 ln , = + + , 	
管理用メモ:
モデル#102 “LC_stan.R”
23
3. MCMCの実装例
例1 結果 ln , = + + , 	
管理用メモ:
モデル#102 “LC_stan.R”
24
3. MCMCの実装例
例1 結果 ln , = + + , 	
管理用メモ:
モデル#102 “LC_stan.R”
25
3. MCMCの実装例
例2 (例2と同じ条件でN=100の場合)
Lee Carterモデルln , = + + , 	を前提 (∑ = 1, ∑ = 0)
• 1 ≤ & ≤ 40: 年齢50~90歳
• 1 ≤ ( ≤ 61: 年度1950~2010年
• エクスポージャーは各年齢、各年100人ずつとする
• パラメータ ,	 , に真の値を与えそこから計算される死亡率から100人に2
項分布で死亡者数を乱数で与えて、エクスポージャーと死亡者数からパラ
メータ推定を行う(500本のシュミレーション)
• 結果かかったランタイム:220秒
管理用メモ:
モデル#103 “LC_stan.R”
26
3. MCMCの実装例
例2 結果 ln , = + + , 	
管理用メモ:
モデル#103 “LC_stan.R”
27
3. MCMCの実装例
例2 結果 ln , = + + , 	
管理用メモ:
モデル#103“LC_stan.R”
28
3. MCMCの実装例
例2 結果 ln , = + + , 	
管理用メモ:
モデル#103 “LC_stan.R”
29
3. MCMCの実装例
例3 (ランダム効果を入れたモデル)
Lee Carterモデルから簡単のため死亡率改善の項を除いたln = + , 	を
前提するが、 何らかの理由によりに死亡率の水準を変える項!"を含む式
ln ," = + !" + , 	を真のモデル考える。この時さらにランダム効果項は
!"~正規分布(平均 = 0, 分散 = *+
)というメタな分布に従うとする階層ベイズモ
デルを考える。
• 1 ≤ & ≤ 40: 年齢50~90歳
• 1 ≤ ( ≤ 3: データ3年分
• 1 ≤ # ≤ 10: ランダム効果項は同一の分布(正規分布(平均 = 0, 分散 = *+
))
から10個出力されるとする
• エクスポージャーは各年齢、各年、各ランダム効果100人ずつとする
• パラメータ ,	*+
に真の値を与えそこから計算される死亡率から100人に2項
分布で死亡者数を乱数で与えて、エクスポージャーと死亡者数からパラ
メータ推定を行う(500本のシュミレーション)
• 結果かかったランタイム:6秒
管理用メモ:
モデル#8 “LC_stan_mixed4.R”,
ランダム効果項なし#9 “LC_stan_mixed4_noRE.R”
30
3. MCMCの実装例
例3 結果 ln ," = + !" + , 	、!"~正規分布(平均 = 0, 分散 = *+)
(!"の事後分布の平均がゼロでないシナリオはその分を調整)
管理用メモ:
モデル#8 “LC_stan_mixed4.R”,
ランダム効果項なし#9 “LC_stan_mixed4_noRE.R”
31
3. MCMCの実装例
例3 結果 ln ," = + !" + , 	、!"~正規分布(平均 = 0, 分散 = *+)
(!"の事後分布の平均がゼロでないシナリオはその分を調整)
管理用メモ:
モデル#8 “LC_stan_mixed4.R”,
ランダム効果項なし#9 “LC_stan_mixed4_noRE.R”
32
3. MCMCの実装例
例3 結果 ln ," = + !" + , 	、!"~正規分布(平均 = 0, 分散 = *+)
管理用メモ:
モデル#8 “LC_stan_mixed4.R”,
ランダム効果項なし#9 “LC_stan_mixed4_noRE.R”
33
3. MCMCの実装例
例3 参考結果
ランダム効果の項を省いた ln = + , 	をモデルにしてパラメータ推定行っ
た場合の (一部の死亡率が高いグループ(# = 5)に引っ張られ推定がずれる)
管理用メモ:
モデル#8 “LC_stan_mixed4.R”,
ランダム効果項なし#9 “LC_stan_mixed4_noRE.R”
34
3. MCMCの実装例
リスク量の試算
– 1年の「死亡率」で計測(リスク量(%)=1年の死亡数÷N)
– 年齢=85歳(& = 36)、年度=2000年(t = 51)、ランダム効果番号=1(i = 1)の組み合わせのみを対象
– 平均はMCMCからの500本のパラメータサンプリングの平均による死亡率
– パラメータリスクはMCMCからの500本のサンプリングを用いて99.5%tileで評価
– プロセスリスクは、Nと死亡率から2項分布の乱数をパラメータリスクとは独立に発生させ死亡数
をサンプリングして99.5%tileで評価
– (なおこのリスク定義では、パラvs.プロは元の乱数は独立でもリスク量は相関する)
実装例# N 平均 平均
+パラリスク
平均
+パラリスク
+プロリスク
例1 10,000 6.6% 6.7%
(+0.1%)
7.3%
(+0.6%)
例2 100 6.8% 8.5%
(+1.7%)
14.0%
(+5.5%)
例3 100 6.7% 8.0%
(+1.3%)
14.0%
(+6.0%)
4. まとめ
36
4. まとめ
ベイズ推定でパラメータの分布を算出できる
– つまりパラメータリスク(?)
MCMCはこわくない
– 複雑なモデル(階層化したパラメータ、状態空間系)でもパ
ラメータ推定してくれる
– パラメータの分布付きの推定とそのランダムサンプリングが
同時にできるというライフハック
– 優秀なサンプラーのおかげであなたも思いついた項を追加し
てすぐにシミュレーションしたくなる!(できてしまうので
やりたくなってしまう)
37
(参考)MCMCについてさらに調査したい個所
モデル選択をしたい場合はどうすればよいか?
– 赤池ベイズ情報量基準(ABIC)
ベイズベースでのパラメータの事後確率分布 の広が
りと頻度論ベースのフィッシャー情報行列に基づく信頼区
間との定量的な比較
パラメータ間の相関について

More Related Content

PDF
階層モデルの分散パラメータの事前分布について
PDF
ベルヌーイ分布からベータ分布までを関係づける
PDF
階層ベイズと自由エネルギー
PDF
負の二項分布について
PDF
自動微分変分ベイズ法の紹介
PDF
階層ディリクレ過程事前分布モデルによる画像領域分割
PPTX
ようやく分かった!最尤推定とベイズ推定
PDF
階層ベイズとWAIC
階層モデルの分散パラメータの事前分布について
ベルヌーイ分布からベータ分布までを関係づける
階層ベイズと自由エネルギー
負の二項分布について
自動微分変分ベイズ法の紹介
階層ディリクレ過程事前分布モデルによる画像領域分割
ようやく分かった!最尤推定とベイズ推定
階層ベイズとWAIC

What's hot (20)

PPTX
ベイズファクターとモデル選択
PDF
Stan超初心者入門
PDF
深層学習 勉強会第5回 ボルツマンマシン
PDF
Rで階層ベイズモデル
PDF
StanとRでベイズ統計モデリング 11章 離散値をとるパラメータ
PDF
計算論的学習理論入門 -PAC学習とかVC次元とか-
PDF
相関と因果について考える:統計的因果推論、その(不)可能性の中心
PDF
レプリカ交換モンテカルロ法で乱数の生成
PDF
計量経済学と 機械学習の交差点入り口 (公開用)
PDF
PRML輪読#2
PDF
Chapter2.3.6
PPTX
MCMC法
PDF
GiNZAで始める日本語依存構造解析 〜CaboCha, UDPipe, Stanford NLPとの比較〜
PPTX
StanとRでベイズ統計モデリング読書会(Osaka.stan) 第6章
PDF
初めてのグラフカット
PDF
Stanコードの書き方 中級編
PDF
変分推論法(変分ベイズ法)(PRML第10章)
PDF
比例ハザードモデルはとってもtricky!
PDF
最適輸送の計算アルゴリズムの研究動向
PDF
クラシックな機械学習入門:付録:よく使う線形代数の公式
ベイズファクターとモデル選択
Stan超初心者入門
深層学習 勉強会第5回 ボルツマンマシン
Rで階層ベイズモデル
StanとRでベイズ統計モデリング 11章 離散値をとるパラメータ
計算論的学習理論入門 -PAC学習とかVC次元とか-
相関と因果について考える:統計的因果推論、その(不)可能性の中心
レプリカ交換モンテカルロ法で乱数の生成
計量経済学と 機械学習の交差点入り口 (公開用)
PRML輪読#2
Chapter2.3.6
MCMC法
GiNZAで始める日本語依存構造解析 〜CaboCha, UDPipe, Stanford NLPとの比較〜
StanとRでベイズ統計モデリング読書会(Osaka.stan) 第6章
初めてのグラフカット
Stanコードの書き方 中級編
変分推論法(変分ベイズ法)(PRML第10章)
比例ハザードモデルはとってもtricky!
最適輸送の計算アルゴリズムの研究動向
クラシックな機械学習入門:付録:よく使う線形代数の公式
Ad

Viewers also liked (20)

PPTX
マルコフ連鎖モンテカルロ法 (2/3はベイズ推定の話)
PDF
エクセルで統計分析 統計プログラムHADについて
PDF
学部生向けベイズ統計イントロ(公開版)
PPTX
5分でわかるベイズ確率
PDF
春期インターンシップについて(レキサス)
PDF
第17回コンピュータビジョン勉強会@関東
PPTX
ベイズ基本0425
PDF
社内勉強会-ナイーブベイジアンフィルタの実装
PDF
Machine learning for biginner
PPTX
Webサービスを分類してみた
PDF
【Zansa】第12回勉強会 -PRMLからベイズの世界へ
PPTX
Zansa アト テクノロシ-ー業界の分析という仕事について http://zansa.info/materials-11.html
PPTX
機械学習基礎(3)(クラスタリング編)
PDF
ナイーブベイズによる言語判定
PDF
合コンで学ぶベイズ推定
PDF
いいからベイズ推定してみる
PPTX
機械学習基礎(2)(パラメータ推定)
PDF
機械学習基礎(1)(基礎知識編-最適化問題)
PDF
クラシックな機械学習の入門 2.ベイズ統計に基づく推論
PPT
大森ゼミ新歓
マルコフ連鎖モンテカルロ法 (2/3はベイズ推定の話)
エクセルで統計分析 統計プログラムHADについて
学部生向けベイズ統計イントロ(公開版)
5分でわかるベイズ確率
春期インターンシップについて(レキサス)
第17回コンピュータビジョン勉強会@関東
ベイズ基本0425
社内勉強会-ナイーブベイジアンフィルタの実装
Machine learning for biginner
Webサービスを分類してみた
【Zansa】第12回勉強会 -PRMLからベイズの世界へ
Zansa アト テクノロシ-ー業界の分析という仕事について http://zansa.info/materials-11.html
機械学習基礎(3)(クラスタリング編)
ナイーブベイズによる言語判定
合コンで学ぶベイズ推定
いいからベイズ推定してみる
機械学習基礎(2)(パラメータ推定)
機械学習基礎(1)(基礎知識編-最適化問題)
クラシックな機械学習の入門 2.ベイズ統計に基づく推論
大森ゼミ新歓
Ad

Similar to ベイズ推定でパラメータリスクを捉える&優れたサンプラーとしてのMCMC (20)

PDF
クラシックな機械学習の入門  9. モデル推定
PDF
「ベイズ推定でパラメータリスクを捉える &優れたサンプラーとしてのMCMC」の実装例rstanコード
PPTX
Quantum Support Vector Machine
PDF
2013.12.26 prml勉強会 線形回帰モデル3.2~3.4
PDF
第10回 配信講義 計算科学技術特論A(2021)
PDF
パターン認識第9章 学習ベクトル量子化
PDF
パターン認識 04 混合正規分布
PDF
線形カルマンフィルタの導出
PDF
逐次モンテカルロ法の基礎
PPTX
PRML読み会第一章
PDF
PRML セミナー
PDF
MLaPP 24章 「マルコフ連鎖モンテカルロ法 (MCMC) による推論」
PDF
東京都市大学 データ解析入門 6 回帰分析とモデル選択 1
PDF
クラシックな機械学習入門 1 導入
PPTX
自然科学の統計学2.2 slideshare
PDF
「3.1.2最小二乗法の幾何学」PRML勉強会4 @筑波大学 #prml学ぼう
PDF
PRML2.3.8~2.5 Slides in charge
PDF
PRML輪読#3
PPTX
数理最適化と機械学習の 融合アプローチ -分類と新しい枠組み-
PDF
PRML10-draft1002
クラシックな機械学習の入門  9. モデル推定
「ベイズ推定でパラメータリスクを捉える &優れたサンプラーとしてのMCMC」の実装例rstanコード
Quantum Support Vector Machine
2013.12.26 prml勉強会 線形回帰モデル3.2~3.4
第10回 配信講義 計算科学技術特論A(2021)
パターン認識第9章 学習ベクトル量子化
パターン認識 04 混合正規分布
線形カルマンフィルタの導出
逐次モンテカルロ法の基礎
PRML読み会第一章
PRML セミナー
MLaPP 24章 「マルコフ連鎖モンテカルロ法 (MCMC) による推論」
東京都市大学 データ解析入門 6 回帰分析とモデル選択 1
クラシックな機械学習入門 1 導入
自然科学の統計学2.2 slideshare
「3.1.2最小二乗法の幾何学」PRML勉強会4 @筑波大学 #prml学ぼう
PRML2.3.8~2.5 Slides in charge
PRML輪読#3
数理最適化と機械学習の 融合アプローチ -分類と新しい枠組み-
PRML10-draft1002

More from 基晴 出井 (7)

PDF
Introduction of VAR/GVAR Model as a Methodology to Develop Stress Test Scenar...
PDF
Pioneering Technology, Which (May) Change Management of Insurance Companies
PDF
Use of R in Actuarial Works
PDF
A New Approach to Predict Emerging Risks Using Risk DNA Model
PDF
TokyoR_日銀のマクロストレステストをRで追う
PDF
PPT
Introduction of VAR/GVAR Model as a Methodology to Develop Stress Test Scenar...
Pioneering Technology, Which (May) Change Management of Insurance Companies
Use of R in Actuarial Works
A New Approach to Predict Emerging Risks Using Risk DNA Model
TokyoR_日銀のマクロストレステストをRで追う

ベイズ推定でパラメータリスクを捉える&優れたサンプラーとしてのMCMC

  • 3. 2 1. ベイズ推定について パラメータの確率分布を求める一方法に「ベイズ推定」が ある 条件付き確率が満たす式: = ( ) ( ) 上式で、 をパラメータ、 を観測されたデータとすると、 ( )はデータの条件なしのパラメータの確率分布を、 はパラメータを条件としてデータが観測される確率 (つまり尤度)を、 はデータが得られた後のパラ メータの確率分布を意味する
  • 4. 3 1. ベイズ推定について つまり、 = ( ) ( ) ( : パラメータ、 : 観測されたデータ) さらに、 ( )はパラメータ によらない数なので、 ∝ (ただし = 1) データを与えた時のパラメータの確率分布 「事後分布」 パラメータを与えた時のデータの確率 「尤度」 条件なしのパラメータの確率分布 「事前分布」 「事後分布」 「尤度」 「事前分布」
  • 5. 4 1. ベイズ推定について 【例】ある年度の死亡保険契約者4人の内、生存3人死亡 1人というデータが得られた。この場合死亡率 の分布をベ イズ推定で出力することを考える ① 事前分布 ( )の設定: = 1 (0 ≤ ≤ 1) ② 尤度 の設定: 二項分布から4人中3人死亡が観 察されたと仮定して、 = (1 − ) ③ よって ∝ = (1 − ) 事後分布は = 20 (1 − ) (ベータ分布 (2,4))
  • 6. 5 1. ベイズ推定について 0 0.5 1 1.5 2 2.5 0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1 事前分布 事後分布 結果、事前確率分布から事後確率分布は以下のように変化
  • 7. 6 1. ベイズ推定について ところで ∝ のパラメータAの分布 や とは何を意味するのか? ベイズの教科書ではこれらは「確信度」といわれ、頻度論 をベースにする最尤法で漸近正規性を仮定したパラメータ 分布とは発想が違うようだ – :データが手に入る前の、パラメータが何であるかにつ いての確信度 – :データが手に入った後の、パラメータが何であるか についての確信度 今回発表では定性的に「パラメータリスク」が表されたも のと理解した
  • 8. 7 1. ベイズ推定について 一方で最尤法とベイズ推定は数理的には以下の関係がある – 最尤法:観察データの尤度を最大化するパラメータを推定値 として点推定する(頻度主義) – ベイズ推定:事後確率=尤度×事前確率としてパラメータの事 後確率を推定する(ベイズ主義) 事前分布として何らかのピークを持つ分布を指定しない場 合(「無情報事前分布」(例えばほぼ無限に平べったい正 規分布)である場合)、ベイズ推定で得られた事後確率を 最大とするパラメータ値は最尤推定の結果と一致する – 事後確率を最大とするパラメータ推定をMAP推定(Maximum A-Posteriori Estimation)と呼ぶ
  • 9. 8 1. ベイズ推定について よく「ベイズ推定は事前分布に主観性が入るから問題だ」 と批判されるが、前頁のとおり無情報事前分布を選ぶと最 尤法の発想と大差ないことを考えるとベイズ推定そのもの への正しい批判とは言えない 逆に、最初は経験のない事象でもエキスパートジャッジメ ントで主観的に事前分布を決めることができ、データが得 られるたびに客観的に更新していけるというある種の融通 が利く点を利用した活用手法も考えられており特徴を理解 した上で選択肢の一つと考えるべき – スパムメールフィルター • ある単語を含むメールがスパムかは最初は分からないので主観的に決めるがデータで随時スパムである確率を 更新することでスパムか否かの判断の精度を上げていく – シナリオVaR • 金融危機などのストレス事象をテールに含む例えば株価収益の確率分布を事前分布として主観的に与え、デー タで更新していくことで評価したいテール事象の情報を含む確率分布を作成、それでVaRを評価する
  • 10. 2. MCMC(Markov Chain Monte Carlo)について
  • 11. 10 2. MCMC(Markov Chain Monte Carlo)について ベイズ推定では、「事後分布∝尤度×事前分布」で計算す るが、特定の尤度と事前分布の組み合わせを選んだ場合を 除いて通常は事後分布が複雑な形式に変化してしまい解析 的に求まらない これをモンテカルロシミュレーションで求める手法として MCMCがある MCMCではランダムに与えた初期値パラメータを一定の手 順に従って更新していくことで事後分布に従ったパラメー タサンプルを得る手法
  • 12. 11 2. MCMC(Markov Chain Monte Carlo)について シミュレーションシナリオを更新する際に事後確率(図で は対数尤度)の高い方だけでなく低い方も一定ルール (「詳細釣合の条件」)で選択させる 引用元: http://hosho.ees.hokudai.ac.jp/~kubo/stat/2013/ou3/kubostat2013ou3.pdf
  • 13. 12 2. MCMC(Markov Chain Monte Carlo)について 結果的に事後分布をなぞるようなサンプリングがおこなわ れパラメータの事後分布 のサンプリングが得られる (図ではq: パラメータ) 引用元: http://hosho.ees.hokudai.ac.jp/~kubo/stat/2013/ou3/kubostat2013ou3.pdf
  • 14. 13 2. MCMC(Markov Chain Monte Carlo)について 利点 欠点 • 解析的に解けない複雑な モデルでパラメータ推定 できる • 多峰の分布で局所解に偏 りにくい(勾配法と違い 解付近を「ふらつく」) • 事後分布に従うパラメー タの乱数が手に入り再利 用が容易(この利点につ いてはブートストラップ 法でも同様) • 計算に時間がかかること もある • 手法が一般的でなくコー ディングの文法も学習す る必要があるので担当者 間での再現性が低い • ソフトウェアを使用する 場合は理論的には可能で もソフトで対応していな かったりする
  • 15. 14 2. MCMC(Markov Chain Monte Carlo)について MCMCを実装するにはツール(サンプラー)の使用が最適 以下のような候補がある – R:ライブラリMCMCPackやその他 – BUGS(OpenBUGS, WinBUGSなど): インタプリター – stan: コンパイラなのでBUGSよりずっと早い。行列計算にfor 文なしで対応できる – JAGS 特に近年の計算速度の進化で一般的になってきた
  • 16. 15 2. MCMC(Markov Chain Monte Carlo)について stanコードの書き方例:事前分布を(0,1)の一様分布とする θをパラメータとするN件のベルヌーイ試行のデータyが得 られた場合のθの事後分布を出したい data { int<lower=0> N; int<lower=0,upper=1> y[N]; } parameters { real<lower=0,upper=1> theta; } model { theta ~ uniform(0,1); for (n in 1:N) y[n] ~ bernoulli(theta); } ただの入力データ形式の宣言 (データは別途入力) ただのパラメータの宣言 事前分布の設定 尤度を計算するためのデータ 発生のメカニズムの設定
  • 17. 16 2. MCMC(Markov Chain Monte Carlo)について モデル上で様々な変数を様々な形で導入してもサンプリン グを実行することができる(医療系の場合に健康診断結果、 病歴などの共変量を入れる、交差項を入れる、状態空間 (うまく考えれば「レジーム変化を含む推定」のようなも のもできるか(明示的にパラメータリスクIIを出力)) データが少なく「個体差」がデータに表れる場合や潜在変 数による効果があるモデルで測定したい場合 – 固定効果: 年齢、年度、商品、コーホートなど観察変数を要因に含む分析 – ランダム効果: UWの質の差によるブレなどの潜在要因をメタなある分布からラン ダムに発生した効果として含める分析 (階層ベイズ)
  • 18. 17 2. MCMC(Markov Chain Monte Carlo)について 固定効果の反映例 – 例えばLee Carterモデルln , = + + , にコーホート効果 を反映させてln , = , + , + , などとしたい場合はstanを 使ったMCMCでは尤度の設定部分: をたとえば以下のように変更すれば対応可能 for (x in 1:41){ //コメント:50歳~90歳 for (t in 1:61){ //コメント:1950年~2010年 mxt <- exp(ax[x]+ bx[x] * kt[t]); rxt[x,t] ~ binomial(nxt[x,t],mxt); } } for (x in 1:41){ //コメント: 50歳~90歳 for (t in 1:61){ //コメント: 1950年~2010年 mxt <- exp(ax[x,t]+ bx[x,t] * kt[t]); rxt[x,t] ~ binomial(nxt[x,t],mxt); } } ※実際は変数宣言部分等も変更必要のためこの例は手順のイメージと考えてください
  • 19. 18 2. MCMC(Markov Chain Monte Carlo)について ランダム効果の反映例 – 例えばLee CarterモデルにUWの質の差など未観察の要因により平均 を0とするランダム効果!"が加わりln , ," = + !" + + , ," (# はランダム効果の番号)かつ !"~正規分布(平均 = 0, 標準偏差 = !%&)などとしたい場合はstanを使ったMCMCではたとえば以下のよ うにコードを変更すれば対応可能(「階層ベイズ」) ri ~ normal(0,rdx); //ランダム効果のメタ分布 rdx ~ uniform(0,1.0E3); for (x in 1:41){ //50歳~90歳 for (t in 1:61){ //1950年~2010年 for (i in 1:10){ //ランダム効果が発生した単位として10区分あり、 //それぞれ効果が独立に発生したとする mxt <- exp(ax[x]+ri[i]+ bx[x] * kt[t]); rxt[x,t,i] ~ binomial(nxt[x,t,i],mxt); } } } ※実際は変数宣言部分等も変更必要のためこの例は手順のイメージと考えてください
  • 21. 20 3. MCMCの実装例 MCMCの実装を試してみる 使用ツール: stanをR上でrstanを通して実行 やり方: ① Lee-Carterモデルのパラメータにある値を与えてそれが真の パラメータであるとする ② それから計算される死亡率から死亡者数が2項分布に従う として乱数サンプリングしデータを生成、それを観察デー タとする ③ 観測されたデータをモデルへの入力値としてMCMCを行う ことで①の真のパラメータとMCMCによる推定を比較する 結果の見方:赤線が真のパラメータ、黒い帯は500本のシミュ レーション結果が束になったもの
  • 22. 21 3. MCMCの実装例 例1 (LCモデルのパラメータ推定) Lee Carterモデルln , = + + , を前提 (∑ = 1, ∑ = 0) • 1 ≤ & ≤ 40: 年齢50~90歳 • 1 ≤ ( ≤ 61: 年度1950~2010年 • エクスポージャーは各年齢、各年10,000人ずつとする • パラメータ , , に真の値を与えそこから計算される死亡率から10,000人 に2項分布で死亡者数を乱数で与えて、エクスポージャーと死亡者数からパ ラメータ推定を行う(500本のシュミレーション) • 結果かかったランタイム:581秒 管理用メモ: モデル#102 “LC_stan.R”
  • 23. 22 3. MCMCの実装例 例1 結果 ln , = + + , 管理用メモ: モデル#102 “LC_stan.R”
  • 24. 23 3. MCMCの実装例 例1 結果 ln , = + + , 管理用メモ: モデル#102 “LC_stan.R”
  • 25. 24 3. MCMCの実装例 例1 結果 ln , = + + , 管理用メモ: モデル#102 “LC_stan.R”
  • 26. 25 3. MCMCの実装例 例2 (例2と同じ条件でN=100の場合) Lee Carterモデルln , = + + , を前提 (∑ = 1, ∑ = 0) • 1 ≤ & ≤ 40: 年齢50~90歳 • 1 ≤ ( ≤ 61: 年度1950~2010年 • エクスポージャーは各年齢、各年100人ずつとする • パラメータ , , に真の値を与えそこから計算される死亡率から100人に2 項分布で死亡者数を乱数で与えて、エクスポージャーと死亡者数からパラ メータ推定を行う(500本のシュミレーション) • 結果かかったランタイム:220秒 管理用メモ: モデル#103 “LC_stan.R”
  • 27. 26 3. MCMCの実装例 例2 結果 ln , = + + , 管理用メモ: モデル#103 “LC_stan.R”
  • 28. 27 3. MCMCの実装例 例2 結果 ln , = + + , 管理用メモ: モデル#103“LC_stan.R”
  • 29. 28 3. MCMCの実装例 例2 結果 ln , = + + , 管理用メモ: モデル#103 “LC_stan.R”
  • 30. 29 3. MCMCの実装例 例3 (ランダム効果を入れたモデル) Lee Carterモデルから簡単のため死亡率改善の項を除いたln = + , を 前提するが、 何らかの理由によりに死亡率の水準を変える項!"を含む式 ln ," = + !" + , を真のモデル考える。この時さらにランダム効果項は !"~正規分布(平均 = 0, 分散 = *+ )というメタな分布に従うとする階層ベイズモ デルを考える。 • 1 ≤ & ≤ 40: 年齢50~90歳 • 1 ≤ ( ≤ 3: データ3年分 • 1 ≤ # ≤ 10: ランダム効果項は同一の分布(正規分布(平均 = 0, 分散 = *+ )) から10個出力されるとする • エクスポージャーは各年齢、各年、各ランダム効果100人ずつとする • パラメータ , *+ に真の値を与えそこから計算される死亡率から100人に2項 分布で死亡者数を乱数で与えて、エクスポージャーと死亡者数からパラ メータ推定を行う(500本のシュミレーション) • 結果かかったランタイム:6秒 管理用メモ: モデル#8 “LC_stan_mixed4.R”, ランダム効果項なし#9 “LC_stan_mixed4_noRE.R”
  • 31. 30 3. MCMCの実装例 例3 結果 ln ," = + !" + , 、!"~正規分布(平均 = 0, 分散 = *+) (!"の事後分布の平均がゼロでないシナリオはその分を調整) 管理用メモ: モデル#8 “LC_stan_mixed4.R”, ランダム効果項なし#9 “LC_stan_mixed4_noRE.R”
  • 32. 31 3. MCMCの実装例 例3 結果 ln ," = + !" + , 、!"~正規分布(平均 = 0, 分散 = *+) (!"の事後分布の平均がゼロでないシナリオはその分を調整) 管理用メモ: モデル#8 “LC_stan_mixed4.R”, ランダム効果項なし#9 “LC_stan_mixed4_noRE.R”
  • 33. 32 3. MCMCの実装例 例3 結果 ln ," = + !" + , 、!"~正規分布(平均 = 0, 分散 = *+) 管理用メモ: モデル#8 “LC_stan_mixed4.R”, ランダム効果項なし#9 “LC_stan_mixed4_noRE.R”
  • 34. 33 3. MCMCの実装例 例3 参考結果 ランダム効果の項を省いた ln = + , をモデルにしてパラメータ推定行っ た場合の (一部の死亡率が高いグループ(# = 5)に引っ張られ推定がずれる) 管理用メモ: モデル#8 “LC_stan_mixed4.R”, ランダム効果項なし#9 “LC_stan_mixed4_noRE.R”
  • 35. 34 3. MCMCの実装例 リスク量の試算 – 1年の「死亡率」で計測(リスク量(%)=1年の死亡数÷N) – 年齢=85歳(& = 36)、年度=2000年(t = 51)、ランダム効果番号=1(i = 1)の組み合わせのみを対象 – 平均はMCMCからの500本のパラメータサンプリングの平均による死亡率 – パラメータリスクはMCMCからの500本のサンプリングを用いて99.5%tileで評価 – プロセスリスクは、Nと死亡率から2項分布の乱数をパラメータリスクとは独立に発生させ死亡数 をサンプリングして99.5%tileで評価 – (なおこのリスク定義では、パラvs.プロは元の乱数は独立でもリスク量は相関する) 実装例# N 平均 平均 +パラリスク 平均 +パラリスク +プロリスク 例1 10,000 6.6% 6.7% (+0.1%) 7.3% (+0.6%) 例2 100 6.8% 8.5% (+1.7%) 14.0% (+5.5%) 例3 100 6.7% 8.0% (+1.3%) 14.0% (+6.0%)
  • 37. 36 4. まとめ ベイズ推定でパラメータの分布を算出できる – つまりパラメータリスク(?) MCMCはこわくない – 複雑なモデル(階層化したパラメータ、状態空間系)でもパ ラメータ推定してくれる – パラメータの分布付きの推定とそのランダムサンプリングが 同時にできるというライフハック – 優秀なサンプラーのおかげであなたも思いついた項を追加し てすぐにシミュレーションしたくなる!(できてしまうので やりたくなってしまう)