SlideShare a Scribd company logo
1 of 23
Download to read offline
データ解析のための統計モデリング入門 
9章: GLMのベイズモデル化と事後分布の推定 前半 
@siero5335 
#みどりぼん 
2014/09/09
自己紹介 
Twitter ID: @siero5335 
仕事: 某大学で 
   化学物質曝露影響の解析 
   測定法の開発してます 
   専門: 環境化学、分析化学 
測定結果の解析に統計を使用
 目次 
9.0: 
例題データ紹介 
9.1: 
種子数のポアソン回帰 
9.2: 
GLMのベイズモデル化 
9.3: 
無情報事前分布 
9.4: 
ベイズ統計モデルの事後分布の推定 
9.4.1: 
ベイズ統計モデルのコーディング 
(Stan) 
9.4.2: 
事後分布推定の準備 
9.4.3: 
どれだけ長くMCMCサンプリングすればいいのか
 9.0: 
例題データ紹介 
今回はどんなデータ? 
架空植物: n = 20 
x: 体サイズ 
y: 種子数 
仮説 
体サイズxiに依存して種子数yiの平均が増減する 
実際は 
のポアソン分布から生成したデータ 
x 
y 
3 
5 
3.210526 
3 
3.421053 
6 
3.631579 
7 
3.842105 
7 
4.052632 
5 
4.263158 
9 
4.473684 
9 
4.684211 
7 
4.894737 
10 
5.105263 
12 
5.315789 
8 
5.526316 
7 
5.736842 
4 
5.947368 
4 
6.157895 
11 
6.368421 
9 
6.578947 
9 
6.789474 
8 
7 
6 
λ = exp(1.5 + 0.1x)
 9.1: 
種子数のポアソン回帰 
3 4 5 6 7 
4 6 8 10 12 
Call: 
glm(formula 
= 
y 
~ 
x, 
family 
= 
poisson, 
data 
= 
d) 
Coefficients: 
(Intercept) 
x 
1.56606 
0.08334 
Degrees 
of 
Freedom: 
19 
Total 
(i.e. 
Null); 
18 
Residual 
Null 
Deviance: 
15.66 
Residual 
Deviance: 
14.17 
AIC: 
94.04 
図9.1 
p195より引用 
今回はこのGLMをベイズ統計モデルに移植し、 
事後分布の推定に取り組む
 9.2: 
GLMのベイズモデル化 
1. 個体iの種子数yiのばらつきを平均λiのポアソン分布 
p(yi|λi) 
に従うとする。 
2. GLMの時と同様に、線形予測子と対数リンク関数で平均を 
λi = exp(β1 + β2xi) 
と指定する。個体差は考慮しないのでランダム効果の項はなし。 
3.このモデルの尤度関数: L(β1, β2)は 
β!, β! = ! 
! 
!! λ! =! ! 
! 
(!! |β!, β!, !!)! 
となる。ここまではGLMといっしょ。
 9.2: 
GLMのベイズモデル化 
5. 今回はベイズモデル化して事後分布を推定したい 
  ベイズモデルの事後分布は 
(尤度) × (事前分布) 
に比例するので、今回の例題では以下の関係が成り立つ。 
事後分布 切片β1, 傾きβ2の 
事前分布 
β1,β2がある値の時 
Yが得られる確率 
この切片β1, 傾きβ2を適切に指定できれば 
ベイズモデル化したGLMが得られる
 9.3: 
無情報事前分布 
どうやって切片β1, 傾きβ2の事前分布を推定するのか 
架空植物の平均種子数を増減させる 
切片、傾きの確率分布なんて分かるわけない。 
[-∞, ∞]の範囲で好きな値をとっていいことにする。 
→ 無情報事前分布と呼ぶ。
 9.3: 
無情報事前分布 
どうやって切片β1, 傾きβ2の事前分布を推定するのか 
架空植物の平均種子数を増減させる 
切片、傾きの確率分布なんて分かるわけない。 
[-∞, ∞]の範囲で好きな値をとっていいことにする。 
→ 無情報事前分布と呼ぶ。 
どんな確率分布? 
範囲を取る一様分布 
ひらべったい正規分泌 
標準正規分布 
-10 -5 0 5 10 
0.0 0.1 0.2 0.3 0.4 
平均0, 標準偏差100の 
正規分布 
図9.2 
p197より引用
 9.3: 
無情報事前分布 
どうやって切片β1, 傾きβ2の事前分布を推定するのか 
架空植物の平均種子数を増減させる 
切片、傾きの確率分布なんて分かるわけない。 
[-∞, ∞]の範囲で好きな値をとっていいことにする。 
→ 無情報事前分布と呼ぶ。 
どんな確率分布? 
範囲を取る一様分布 
ひらべったい正規分泌
 9.4.1: 
ベイズ統計モデルのコーディング 
(BUGS) 
Model 
{ 
for 
(i 
in 
1:N) 
{ 
Y[i] 
~ 
dpois 
( 
lambda 
[i] 
) 
log 
( 
lambda 
[i] 
) 
<-­‐ 
beta1 
+ 
beta2 
* 
(X 
[i] 
–Mean.X 
) 
} 
beta1 
~ 
dnorm 
(0, 
1.0E-­‐4) 
beta1 
~ 
dnorm 
(0, 
1.0E-­‐4) 
}
 9.4.1: 
ベイズ統計モデルのコーディング 
(BUGS) 
Model 
{ 
for 
(i 
in 
1:N) 
{ 
Y[i] 
~ 
dpois 
( 
lambda 
[i] 
) 
log 
( 
lambda 
[i] 
) 
<-­‐ 
beta1 
+ 
beta2 
* 
(X 
[i] 
–Mean.X 
) 
} 
beta1 
~ 
dnorm 
(0, 
1.0E-­‐4) 
beta1 
~ 
dnorm 
(0, 
1.0E-­‐4) 
} 
Y[1] 
~ 
dpois 
( 
lambda 
[1] 
) 
log 
( 
lambda 
[1] 
) 
<-­‐ 
beta1 
+ 
beta2 
* 
(X 
[1] 
–Mean.X 
) 
Y[2] 
~ 
dpois 
( 
lambda 
[2] 
) 
log 
( 
lambda 
[2] 
) 
<-­‐ 
beta1 
+ 
beta2 
* 
(X 
[2] 
–Mean.X 
) 
・・・ 
Y[20] 
~ 
dpois 
( 
lambda 
[20] 
) 
log 
( 
lambda 
[20] 
) 
<-­‐ 
beta1 
+ 
beta2 
* 
(X 
[20] 
–Mean.X 
) 
ブロック 
統計モデルの記述 
ブロックは以下のように展開されてWinBUGSに解釈される 
iはYやlambdaについてる変数の添字
 9.4.1: 
ベイズ統計モデルのコーディング 
(BUGS) 
Y[i] 
~ 
dpois 
( 
lambda 
[i] 
) 
個体i 
の種子数Y[i]が平均 lambda 
[i] 
のポアソン分布 
dpois 
( 
lambda 
[i] 
)に従うという意味 
log 
( 
lambda 
[i] 
) 
<-­‐ 
beta1 
+ 
beta2 
* 
(X 
[i] 
–Mean.X 
) 
左辺: 
個体iの平均種子数lambda 
[i] 
は対数リンク関数に従う 
beta1 
= 
切片β1 
beta2 
= 
傾きβ2 
X 
[i] 
= 
説明変数(個体iのサイズxi) 
Mean.X 演算高速化のために標本平均を引いて中央化
 9.4.1: 
ベイズ統計モデルのコーディング 
(BUGS) 
Model 
{ 
for 
(i 
in 
1:N) 
{ 
Y[i] 
~ 
dpois 
( 
lambda 
[i] 
) 
log 
( 
lambda 
[i] 
) 
<-­‐ 
beta1 
+ 
beta2 
* 
(X 
[i] 
–Mean.X 
) 
} 
beta1 
~ 
dnorm 
(0, 
1.0E-­‐4) 
beta2 
~ 
dnorm 
(0, 
1.0E-­‐4) 
} 
dnorm 
(mean, 
tau) 
mean 
= 
平均 
tau 
= 
分散の逆数 
標準偏差 
= 
パラメータβ1 
,β2の事前分布を指定 
tau 
= 
1.0E-­‐4なので 
パラメータβ1 
,β2の事前分布は 
平均0, 
分散100の無情報事前分布 
標準偏差は100だが、リンク関数が対数なので無情報と言って良い
 9.4.1: 
ベイズ統計モデルのコーディング 
(BUGS) 
無情報事前分布 切片β1 
無情報事前分布 傾きβ2 
ポアソン分布 
データ(各個体のサイズX[i]) 平均λ[i] データ 
(各個体の種子数Y[i]) 
確率論的関係 
左辺は右辺の確率分布に従う: コード上表記 “~” 
決定論的関係 
左辺の内容は右辺である: コード上表記 “->”
 9.4.2: 
事後分布推定の準備 
手順 
(1) 
データの読み込み 
(2) 
推定したいパラメータの初期値を指定 
(3) 
RからWinBUGS読み出してデータ・初期値・サンプリング回数、 
コードファイル名を伝達 
(4) 
WinBUGSが働く 
(5) 
MCMCサンプリングが終わったら結果をRに渡す 
(6) 
MCMCサンプリングの結果をR内で調べる 
R2WinBUGSを使って普通は連携するが、使いやすくないので、 
本書では久保先生お手製のR2WBwapper.Rを使って操作を簡易化
 9.4.2: 
事後分布推定の準備 
source 
(“R2WBwrapper.R”) 
#ラッパー読み込み 
load(“d.RData”) 
# 
(1) 
必要なデータの準備 
clear.data.param() 
# データ・初期値読み込みの準備 
#データの設定, 
set.data関数を使ってデータの中身を指定 
set,data(“N”, 
nrow(d)) 
#サンプルサイズ 
set.data(“Y”, 
d$y) 
#応答変数:種子数Y[i] 
set.data(“X”, 
d$x) 
#説明変数: 
体サイズX[i] 
set.data 
(“Mean.X, 
mean(d$x)) 
#X[i]の標本平均 
#パラメータの初期値設置(2), 
set.param関数で初期値設定 
set.param(“beta1”, 
0) 
set.param(“beta2”, 
0) 
#次スライドに続く
 9.4.2: 
事後分布推定の準備 
#サンプリング回数等の決定(3) 
#MCMCサンプリングが終わったら結果をRに渡す(5) 
post.bugs 
<-­‐ 
call.bugs( 
file 
= 
“model.bugs.txt”, 
n.iter 
= 
1600, 
n.burnin 
= 
100, 
n.thin 
=3 
} 
file 
= 
“model.bugs.txt”: 
BUGSコードを書いたファイル名の指定 
n.iter 
= 
1600: 
MCMCサンプリング1600回 
n.burnin 
= 
100: 
バーンイン, 
最初100回分のデータは使わない 
n.thin 
=3: 
101-­‐1600までの1500ステップを2個とばしで記録する 
→間引きのため(サンプリング回数検討の負担減らし)
 9.4.3: 
どれだけ長くMCMCサンプリングすればいいのか 
サンプリング数が足りないと 
事後分布を正確に推定できない。 多いと時間がかかる… 
収束診断で確認 
サンプリングを繰り返してサンブル列間の乖離を確認 
chain関数を指定(デフォルトは3) -> Rhat < 1.1(経験的な指標: 収束した、しない) 
Rhat! =! !"#!/! 
!"#! =! 
! − 1 
! 
! +! 
1 
! 
! 
図8.8 
p179より引用 
W: サンプル列内の分散 
B: サンプル列間の分散 var+: 周辺事後分布の分散
 9.4.3: 
Rhat 
> 
1.1の時どうする? 
n.iterを増やす 
→サンプリング回数増やす 
n.burninを増やす 
→定常分布になるまでの 
 待ち時間を増やす 
それでも改善しない時は? 
不適切な統計モデリング 
コード・データの間違い 
パラメータの初期値が不適切 
図9.4 
p205より引用
 まとめ 
まずGLMをベイズモデル化することで感覚をつかむ 
未知の値には無情報事前分布を事前分布に使ってみる 
WinBUGSなどにコードを渡してMCMCサンプリング! 
サンプル列間の乖離を調べて収束したか確かめる→ 
Rhat 
< 
1.1 
収束しない時は… 
サンプリング回数、Burn-­‐in期間を確認 
それでもダメならモデルの中身をチェック 
事後分布の推定については後半に!
 おまけ: 
glmer2stanでもうちょっとお手軽に 
library(rstan) 
# 
rstan読み出し 
library(glmer2stan) 
# 
glmer2stan読み出し 
res 
<-­‐ 
glmer2stan(y 
~ 
x, 
family 
= 
“poisson”, 
data 
= 
d, 
chain 
=3) 
#lme4のformula形式で記述 
(res) 
#結果の表示 
res@stanmodel 
#stanでどう表すか表示 
>(res) 
3 chains, each with iter=10000; warmup=5000; thin=1; 
post-warmup draws per chain=5000, total post-warmup draws=15000. 
mean 
se_mean 
sd 
2.50% 
25% 
50% 
75% 
97.50% 
n_eff 
Rhat 
Intercept 
1.55 
0.01 
0.36 
0.81 
1.31 
1.56 
1.8 
2.23 
1996 
1 
beta_x 
0.09 
0 
0.07 
-­‐0.04 
0.04 
0.08 
0.13 
0.22 
1987 
1 
dev 
92.02 
0.04 
2.04 
90.08 
90.6 
91.39 
92.75 
97.51 
2553 
1 
lp__ 
143.98 
0.02 
1.02 
141.24 
143.62 
144.3 
144.69 
144.95 
2553 
1 
iter, 
warmup 
(burn-­‐in), 
chain, 
thin回数については 
XX 
(内容) 
= 
X 
(回数) 
で指定可能 
デフォルトは iter 
= 
10000, 
warmup 
= 
5000, 
chain 
= 
1, 
thin 
= 
1
 おまけ: 
glmer2stanでもうちょっとお手軽に 
res@stanmodel 
#stanでどう表すか表示 
> 
res@stanmodel 
S4 
class 
stanmodel 
'y 
~ 
x 
[poisson]' 
coded 
as 
follows: 
data{ 
int 
N; 
int 
y[N]; 
real 
x[N]; 
} 
parameters{ 
real 
Intercept; 
real 
beta_x; 
} 
#右へ続く 
model{ 
real 
vary[N]; 
real 
glm[N]; 
// 
Priors 
Intercept 
~ 
normal( 
0 
, 
100 
); 
beta_x 
~ 
normal( 
0 
, 
100 
); 
// 
Fixed 
effects 
for 
( 
i 
in 
1:N 
) 
{ 
glm[i] 
<-­‐ 
Intercept 
+ 
beta_x 
* 
x[i]; 
glm[i] 
<-­‐ 
exp( 
glm[i] 
); 
} 
y 
~ 
poisson( 
glm 
); 
} 
generated 
quanwwes{ 
real 
dev; 
real 
vary[N]; 
real 
glm[N]; 
dev 
<-­‐ 
0; 
for 
( 
i 
in 
1:N 
) 
{ 
glm[i] 
<-­‐ 
Intercept 
+ 
beta_x 
* 
x[i]; 
dev 
<-­‐ 
dev 
+ 
(-­‐2) 
* 
poisson_log( 
y[i] 
, 
exp(glm[i]) 
); 
} 
} 
今まで使っていたモデルをstanで書き換 
えるとどうやって書くのかわかるので、 
stan事始めに向いているかも?

More Related Content

What's hot

RでMplusがもっと便利にーmplusAutomationパッケージー #Hiroshimar05
RでMplusがもっと便利にーmplusAutomationパッケージー #Hiroshimar05 RでMplusがもっと便利にーmplusAutomationパッケージー #Hiroshimar05
RでMplusがもっと便利にーmplusAutomationパッケージー #Hiroshimar05 Masaru Tokuoka
 
RStanとShinyStanによるベイズ統計モデリング入門
RStanとShinyStanによるベイズ統計モデリング入門RStanとShinyStanによるベイズ統計モデリング入門
RStanとShinyStanによるベイズ統計モデリング入門Masaki Tsuda
 
重回帰分析で交互作用効果
重回帰分析で交互作用効果重回帰分析で交互作用効果
重回帰分析で交互作用効果Makoto Hirakawa
 
MCMCによるベイズ因子分析法について
MCMCによるベイズ因子分析法についてMCMCによるベイズ因子分析法について
MCMCによるベイズ因子分析法について考司 小杉
 
構造方程式モデルによる因果探索と非ガウス性
構造方程式モデルによる因果探索と非ガウス性構造方程式モデルによる因果探索と非ガウス性
構造方程式モデルによる因果探索と非ガウス性Shiga University, RIKEN
 
Mplusの使い方 初級編
Mplusの使い方 初級編Mplusの使い方 初級編
Mplusの使い方 初級編Hiroshi Shimizu
 
マルチレベルモデル講習会 実践編
マルチレベルモデル講習会 実践編マルチレベルモデル講習会 実践編
マルチレベルモデル講習会 実践編Hiroshi Shimizu
 
マルコフ連鎖モンテカルロ法入門-2
マルコフ連鎖モンテカルロ法入門-2マルコフ連鎖モンテカルロ法入門-2
マルコフ連鎖モンテカルロ法入門-2Nagi Teramo
 
構造方程式モデルによる因果推論: 因果構造探索に関する最近の発展
構造方程式モデルによる因果推論: 因果構造探索に関する最近の発展構造方程式モデルによる因果推論: 因果構造探索に関する最近の発展
構造方程式モデルによる因果推論: 因果構造探索に関する最近の発展Shiga University, RIKEN
 
有意性と効果量について しっかり考えてみよう
有意性と効果量について しっかり考えてみよう有意性と効果量について しっかり考えてみよう
有意性と効果量について しっかり考えてみようKen Urano
 
医療データベース研究における バイアスと交絡への対処法
医療データベース研究におけるバイアスと交絡への対処法医療データベース研究におけるバイアスと交絡への対処法
医療データベース研究における バイアスと交絡への対処法Takashi Fujiwara
 
頻度論とベイズ論と誤差最小化について
頻度論とベイズ論と誤差最小化について頻度論とベイズ論と誤差最小化について
頻度論とベイズ論と誤差最小化についてShohei Miyashita
 
分割時系列解析(ITS)の入門
分割時系列解析(ITS)の入門分割時系列解析(ITS)の入門
分割時系列解析(ITS)の入門Koichiro Gibo
 
みどりぼん3章前半
みどりぼん3章前半みどりぼん3章前半
みどりぼん3章前半Akifumi Eguchi
 
Cmdstanr入門とreduce_sum()解説
Cmdstanr入門とreduce_sum()解説Cmdstanr入門とreduce_sum()解説
Cmdstanr入門とreduce_sum()解説Hiroshi Shimizu
 
多重代入法の書き方 公開用
多重代入法の書き方 公開用 多重代入法の書き方 公開用
多重代入法の書き方 公開用 Koichiro Gibo
 
因果探索: 基本から最近の発展までを概説
因果探索: 基本から最近の発展までを概説因果探索: 基本から最近の発展までを概説
因果探索: 基本から最近の発展までを概説Shiga University, RIKEN
 

What's hot (20)

潜在クラス分析
潜在クラス分析潜在クラス分析
潜在クラス分析
 
RでMplusがもっと便利にーmplusAutomationパッケージー #Hiroshimar05
RでMplusがもっと便利にーmplusAutomationパッケージー #Hiroshimar05 RでMplusがもっと便利にーmplusAutomationパッケージー #Hiroshimar05
RでMplusがもっと便利にーmplusAutomationパッケージー #Hiroshimar05
 
WAICとWBICのご紹介
WAICとWBICのご紹介WAICとWBICのご紹介
WAICとWBICのご紹介
 
RStanとShinyStanによるベイズ統計モデリング入門
RStanとShinyStanによるベイズ統計モデリング入門RStanとShinyStanによるベイズ統計モデリング入門
RStanとShinyStanによるベイズ統計モデリング入門
 
重回帰分析で交互作用効果
重回帰分析で交互作用効果重回帰分析で交互作用効果
重回帰分析で交互作用効果
 
MCMCによるベイズ因子分析法について
MCMCによるベイズ因子分析法についてMCMCによるベイズ因子分析法について
MCMCによるベイズ因子分析法について
 
構造方程式モデルによる因果探索と非ガウス性
構造方程式モデルによる因果探索と非ガウス性構造方程式モデルによる因果探索と非ガウス性
構造方程式モデルによる因果探索と非ガウス性
 
Mplusの使い方 初級編
Mplusの使い方 初級編Mplusの使い方 初級編
Mplusの使い方 初級編
 
Stan超初心者入門
Stan超初心者入門Stan超初心者入門
Stan超初心者入門
 
マルチレベルモデル講習会 実践編
マルチレベルモデル講習会 実践編マルチレベルモデル講習会 実践編
マルチレベルモデル講習会 実践編
 
マルコフ連鎖モンテカルロ法入門-2
マルコフ連鎖モンテカルロ法入門-2マルコフ連鎖モンテカルロ法入門-2
マルコフ連鎖モンテカルロ法入門-2
 
構造方程式モデルによる因果推論: 因果構造探索に関する最近の発展
構造方程式モデルによる因果推論: 因果構造探索に関する最近の発展構造方程式モデルによる因果推論: 因果構造探索に関する最近の発展
構造方程式モデルによる因果推論: 因果構造探索に関する最近の発展
 
有意性と効果量について しっかり考えてみよう
有意性と効果量について しっかり考えてみよう有意性と効果量について しっかり考えてみよう
有意性と効果量について しっかり考えてみよう
 
医療データベース研究における バイアスと交絡への対処法
医療データベース研究におけるバイアスと交絡への対処法医療データベース研究におけるバイアスと交絡への対処法
医療データベース研究における バイアスと交絡への対処法
 
頻度論とベイズ論と誤差最小化について
頻度論とベイズ論と誤差最小化について頻度論とベイズ論と誤差最小化について
頻度論とベイズ論と誤差最小化について
 
分割時系列解析(ITS)の入門
分割時系列解析(ITS)の入門分割時系列解析(ITS)の入門
分割時系列解析(ITS)の入門
 
みどりぼん3章前半
みどりぼん3章前半みどりぼん3章前半
みどりぼん3章前半
 
Cmdstanr入門とreduce_sum()解説
Cmdstanr入門とreduce_sum()解説Cmdstanr入門とreduce_sum()解説
Cmdstanr入門とreduce_sum()解説
 
多重代入法の書き方 公開用
多重代入法の書き方 公開用 多重代入法の書き方 公開用
多重代入法の書き方 公開用
 
因果探索: 基本から最近の発展までを概説
因果探索: 基本から最近の発展までを概説因果探索: 基本から最近の発展までを概説
因果探索: 基本から最近の発展までを概説
 

Viewers also liked

5分でわかるベイズ確率
5分でわかるベイズ確率5分でわかるベイズ確率
5分でわかるベイズ確率hoxo_m
 
超要約 Stan Reference
超要約 Stan Reference超要約 Stan Reference
超要約 Stan ReferenceHiroki Mizukami
 
PyCon JP 2016 Talk#024 en
PyCon JP 2016 Talk#024 enPyCon JP 2016 Talk#024 en
PyCon JP 2016 Talk#024 endrillan
 
#みどりぼん 11章「空間構造のある階層ベイズモデル」後半
#みどりぼん 11章「空間構造のある階層ベイズモデル」後半#みどりぼん 11章「空間構造のある階層ベイズモデル」後半
#みどりぼん 11章「空間構造のある階層ベイズモデル」後半Katsushi Yamashita
 
みどりぼん第11回 前半
みどりぼん第11回 前半みどりぼん第11回 前半
みどりぼん第11回 前半Atsushi Hayakawa
 
「データ解析のための統計モデリング入門」読書会 最終回 クロージング
「データ解析のための統計モデリング入門」読書会 最終回 クロージング「データ解析のための統計モデリング入門」読書会 最終回 クロージング
「データ解析のための統計モデリング入門」読書会 最終回 クロージングKatsushi Yamashita
 
PyCon JP 2016 Talk#024 ja
 PyCon JP 2016 Talk#024 ja PyCon JP 2016 Talk#024 ja
PyCon JP 2016 Talk#024 jadrillan
 
データ解析で割安賃貸物件を探せ!(山手線沿線編) LT
データ解析で割安賃貸物件を探せ!(山手線沿線編) LTデータ解析で割安賃貸物件を探せ!(山手線沿線編) LT
データ解析で割安賃貸物件を探せ!(山手線沿線編) LT. .
 
分布から見た線形モデル・GLM・GLMM
分布から見た線形モデル・GLM・GLMM分布から見た線形モデル・GLM・GLMM
分布から見た線形モデル・GLM・GLMM. .
 
170311 MBD-Case_Room and MBD and I Ver1
170311 MBD-Case_Room and MBD and I Ver1 170311 MBD-Case_Room and MBD and I Ver1
170311 MBD-Case_Room and MBD and I Ver1 Shigenori Ueda
 
Jupyter NotebookとChainerで楽々Deep Learning
Jupyter NotebookとChainerで楽々Deep LearningJupyter NotebookとChainerで楽々Deep Learning
Jupyter NotebookとChainerで楽々Deep LearningJun-ya Norimatsu
 
カップルが一緒にお風呂に入る割合をベイズ推定してみた
カップルが一緒にお風呂に入る割合をベイズ推定してみたカップルが一緒にお風呂に入る割合をベイズ推定してみた
カップルが一緒にお風呂に入る割合をベイズ推定してみたhoxo_m
 
PyMCがあれば,ベイズ推定でもう泣いたりなんかしない
PyMCがあれば,ベイズ推定でもう泣いたりなんかしないPyMCがあれば,ベイズ推定でもう泣いたりなんかしない
PyMCがあれば,ベイズ推定でもう泣いたりなんかしないToshihiro Kamishima
 
データ分析-の波乗り遅れた気がしてる人のための Python×データ分析の超基礎の基礎 v1.0-20160831
 データ分析-の波乗り遅れた気がしてる人のための Python×データ分析の超基礎の基礎 v1.0-20160831 データ分析-の波乗り遅れた気がしてる人のための Python×データ分析の超基礎の基礎 v1.0-20160831
データ分析-の波乗り遅れた気がしてる人のための Python×データ分析の超基礎の基礎 v1.0-20160831Yusaku Kinoshita
 
普通のwebエンジニアでも出来る、ド素人からの機械学習のはじめ方
普通のwebエンジニアでも出来る、ド素人からの機械学習のはじめ方普通のwebエンジニアでも出来る、ド素人からの機械学習のはじめ方
普通のwebエンジニアでも出来る、ド素人からの機械学習のはじめ方Atsushi Harada
 
深層強化学習 Pydata.Okinawa Meetup #22
深層強化学習 Pydata.Okinawa Meetup #22深層強化学習 Pydata.Okinawa Meetup #22
深層強化学習 Pydata.Okinawa Meetup #22Naoto Yoshida
 
シンギュラリティを知らずに機械学習を語るな
シンギュラリティを知らずに機械学習を語るなシンギュラリティを知らずに機械学習を語るな
シンギュラリティを知らずに機械学習を語るなhoxo_m
 
最適化超入門
最適化超入門最適化超入門
最適化超入門Takami Sato
 
マルコフ連鎖モンテカルロ法 (2/3はベイズ推定の話)
マルコフ連鎖モンテカルロ法 (2/3はベイズ推定の話)マルコフ連鎖モンテカルロ法 (2/3はベイズ推定の話)
マルコフ連鎖モンテカルロ法 (2/3はベイズ推定の話)Yoshitake Takebayashi
 
15分でわかる(範囲の)ベイズ統計学
15分でわかる(範囲の)ベイズ統計学15分でわかる(範囲の)ベイズ統計学
15分でわかる(範囲の)ベイズ統計学Ken'ichi Matsui
 

Viewers also liked (20)

5分でわかるベイズ確率
5分でわかるベイズ確率5分でわかるベイズ確率
5分でわかるベイズ確率
 
超要約 Stan Reference
超要約 Stan Reference超要約 Stan Reference
超要約 Stan Reference
 
PyCon JP 2016 Talk#024 en
PyCon JP 2016 Talk#024 enPyCon JP 2016 Talk#024 en
PyCon JP 2016 Talk#024 en
 
#みどりぼん 11章「空間構造のある階層ベイズモデル」後半
#みどりぼん 11章「空間構造のある階層ベイズモデル」後半#みどりぼん 11章「空間構造のある階層ベイズモデル」後半
#みどりぼん 11章「空間構造のある階層ベイズモデル」後半
 
みどりぼん第11回 前半
みどりぼん第11回 前半みどりぼん第11回 前半
みどりぼん第11回 前半
 
「データ解析のための統計モデリング入門」読書会 最終回 クロージング
「データ解析のための統計モデリング入門」読書会 最終回 クロージング「データ解析のための統計モデリング入門」読書会 最終回 クロージング
「データ解析のための統計モデリング入門」読書会 最終回 クロージング
 
PyCon JP 2016 Talk#024 ja
 PyCon JP 2016 Talk#024 ja PyCon JP 2016 Talk#024 ja
PyCon JP 2016 Talk#024 ja
 
データ解析で割安賃貸物件を探せ!(山手線沿線編) LT
データ解析で割安賃貸物件を探せ!(山手線沿線編) LTデータ解析で割安賃貸物件を探せ!(山手線沿線編) LT
データ解析で割安賃貸物件を探せ!(山手線沿線編) LT
 
分布から見た線形モデル・GLM・GLMM
分布から見た線形モデル・GLM・GLMM分布から見た線形モデル・GLM・GLMM
分布から見た線形モデル・GLM・GLMM
 
170311 MBD-Case_Room and MBD and I Ver1
170311 MBD-Case_Room and MBD and I Ver1 170311 MBD-Case_Room and MBD and I Ver1
170311 MBD-Case_Room and MBD and I Ver1
 
Jupyter NotebookとChainerで楽々Deep Learning
Jupyter NotebookとChainerで楽々Deep LearningJupyter NotebookとChainerで楽々Deep Learning
Jupyter NotebookとChainerで楽々Deep Learning
 
カップルが一緒にお風呂に入る割合をベイズ推定してみた
カップルが一緒にお風呂に入る割合をベイズ推定してみたカップルが一緒にお風呂に入る割合をベイズ推定してみた
カップルが一緒にお風呂に入る割合をベイズ推定してみた
 
PyMCがあれば,ベイズ推定でもう泣いたりなんかしない
PyMCがあれば,ベイズ推定でもう泣いたりなんかしないPyMCがあれば,ベイズ推定でもう泣いたりなんかしない
PyMCがあれば,ベイズ推定でもう泣いたりなんかしない
 
データ分析-の波乗り遅れた気がしてる人のための Python×データ分析の超基礎の基礎 v1.0-20160831
 データ分析-の波乗り遅れた気がしてる人のための Python×データ分析の超基礎の基礎 v1.0-20160831 データ分析-の波乗り遅れた気がしてる人のための Python×データ分析の超基礎の基礎 v1.0-20160831
データ分析-の波乗り遅れた気がしてる人のための Python×データ分析の超基礎の基礎 v1.0-20160831
 
普通のwebエンジニアでも出来る、ド素人からの機械学習のはじめ方
普通のwebエンジニアでも出来る、ド素人からの機械学習のはじめ方普通のwebエンジニアでも出来る、ド素人からの機械学習のはじめ方
普通のwebエンジニアでも出来る、ド素人からの機械学習のはじめ方
 
深層強化学習 Pydata.Okinawa Meetup #22
深層強化学習 Pydata.Okinawa Meetup #22深層強化学習 Pydata.Okinawa Meetup #22
深層強化学習 Pydata.Okinawa Meetup #22
 
シンギュラリティを知らずに機械学習を語るな
シンギュラリティを知らずに機械学習を語るなシンギュラリティを知らずに機械学習を語るな
シンギュラリティを知らずに機械学習を語るな
 
最適化超入門
最適化超入門最適化超入門
最適化超入門
 
マルコフ連鎖モンテカルロ法 (2/3はベイズ推定の話)
マルコフ連鎖モンテカルロ法 (2/3はベイズ推定の話)マルコフ連鎖モンテカルロ法 (2/3はベイズ推定の話)
マルコフ連鎖モンテカルロ法 (2/3はベイズ推定の話)
 
15分でわかる(範囲の)ベイズ統計学
15分でわかる(範囲の)ベイズ統計学15分でわかる(範囲の)ベイズ統計学
15分でわかる(範囲の)ベイズ統計学
 

Similar to みどりぼん9章前半

Survival analysis0702 2
Survival analysis0702 2Survival analysis0702 2
Survival analysis0702 2Nobuaki Oshiro
 
NagoyaStat#7 StanとRでベイズ統計モデリング(アヒル本)4章の発表資料
NagoyaStat#7 StanとRでベイズ統計モデリング(アヒル本)4章の発表資料NagoyaStat#7 StanとRでベイズ統計モデリング(アヒル本)4章の発表資料
NagoyaStat#7 StanとRでベイズ統計モデリング(アヒル本)4章の発表資料nishioka1
 
K060 中心極限定理clt
K060 中心極限定理cltK060 中心極限定理clt
K060 中心極限定理cltt2tarumi
 
NagoyaStat #5 データ解析のための
統計モデリング入門 第10章
NagoyaStat #5 データ解析のための
統計モデリング入門 第10章NagoyaStat #5 データ解析のための
統計モデリング入門 第10章
NagoyaStat #5 データ解析のための
統計モデリング入門 第10章nishioka1
 
カテゴリカルデータの解析 (Kashiwa.R#3)
カテゴリカルデータの解析 (Kashiwa.R#3)カテゴリカルデータの解析 (Kashiwa.R#3)
カテゴリカルデータの解析 (Kashiwa.R#3)Takumi Tsutaya
 
不均衡データのクラス分類
不均衡データのクラス分類不均衡データのクラス分類
不均衡データのクラス分類Shintaro Fukushima
 
Rで実験計画法 前編
Rで実験計画法 前編Rで実験計画法 前編
Rで実験計画法 前編itoyan110
 
【DBDA勉強会2013】Doing Bayesian Data Analysis Chapter 8: Inferring Two Binomial P...
【DBDA勉強会2013】Doing Bayesian Data Analysis Chapter 8: Inferring Two Binomial P...【DBDA勉強会2013】Doing Bayesian Data Analysis Chapter 8: Inferring Two Binomial P...
【DBDA勉強会2013】Doing Bayesian Data Analysis Chapter 8: Inferring Two Binomial P...Junki Marui
 
一般化線形混合モデル isseing333
一般化線形混合モデル isseing333一般化線形混合モデル isseing333
一般化線形混合モデル isseing333Issei Kurahashi
 
ベイズ統計によるデータ解析
ベイズ統計によるデータ解析ベイズ統計によるデータ解析
ベイズ統計によるデータ解析Kunihiro Hisatsune
 
2013.12.26 prml勉強会 線形回帰モデル3.2~3.4
2013.12.26 prml勉強会 線形回帰モデル3.2~3.42013.12.26 prml勉強会 線形回帰モデル3.2~3.4
2013.12.26 prml勉強会 線形回帰モデル3.2~3.4Takeshi Sakaki
 
単純ベイズ法による異常検知 #ml-professional
単純ベイズ法による異常検知  #ml-professional単純ベイズ法による異常検知  #ml-professional
単純ベイズ法による異常検知 #ml-professionalAi Makabi
 
No55 tokyo r_presentation
No55 tokyo r_presentationNo55 tokyo r_presentation
No55 tokyo r_presentationfuuuumin
 
MLaPP 5章 「ベイズ統計学」
MLaPP 5章 「ベイズ統計学」MLaPP 5章 「ベイズ統計学」
MLaPP 5章 「ベイズ統計学」moterech
 
[PRML] パターン認識と機械学習(第1章:序論)
[PRML] パターン認識と機械学習(第1章:序論)[PRML] パターン認識と機械学習(第1章:序論)
[PRML] パターン認識と機械学習(第1章:序論)Ryosuke Sasaki
 

Similar to みどりぼん9章前半 (20)

Survival analysis0702 2
Survival analysis0702 2Survival analysis0702 2
Survival analysis0702 2
 
Survival analysis0702
Survival analysis0702Survival analysis0702
Survival analysis0702
 
NagoyaStat#7 StanとRでベイズ統計モデリング(アヒル本)4章の発表資料
NagoyaStat#7 StanとRでベイズ統計モデリング(アヒル本)4章の発表資料NagoyaStat#7 StanとRでベイズ統計モデリング(アヒル本)4章の発表資料
NagoyaStat#7 StanとRでベイズ統計モデリング(アヒル本)4章の発表資料
 
K060 中心極限定理clt
K060 中心極限定理cltK060 中心極限定理clt
K060 中心極限定理clt
 
NagoyaStat #5 データ解析のための
統計モデリング入門 第10章
NagoyaStat #5 データ解析のための
統計モデリング入門 第10章NagoyaStat #5 データ解析のための
統計モデリング入門 第10章
NagoyaStat #5 データ解析のための
統計モデリング入門 第10章
 
カテゴリカルデータの解析 (Kashiwa.R#3)
カテゴリカルデータの解析 (Kashiwa.R#3)カテゴリカルデータの解析 (Kashiwa.R#3)
カテゴリカルデータの解析 (Kashiwa.R#3)
 
不均衡データのクラス分類
不均衡データのクラス分類不均衡データのクラス分類
不均衡データのクラス分類
 
Rで実験計画法 前編
Rで実験計画法 前編Rで実験計画法 前編
Rで実験計画法 前編
 
【DBDA勉強会2013】Doing Bayesian Data Analysis Chapter 8: Inferring Two Binomial P...
【DBDA勉強会2013】Doing Bayesian Data Analysis Chapter 8: Inferring Two Binomial P...【DBDA勉強会2013】Doing Bayesian Data Analysis Chapter 8: Inferring Two Binomial P...
【DBDA勉強会2013】Doing Bayesian Data Analysis Chapter 8: Inferring Two Binomial P...
 
Rで学ぶロバスト推定
Rで学ぶロバスト推定Rで学ぶロバスト推定
Rで学ぶロバスト推定
 
一般化線形混合モデル isseing333
一般化線形混合モデル isseing333一般化線形混合モデル isseing333
一般化線形混合モデル isseing333
 
ベイズ統計によるデータ解析
ベイズ統計によるデータ解析ベイズ統計によるデータ解析
ベイズ統計によるデータ解析
 
2013.12.26 prml勉強会 線形回帰モデル3.2~3.4
2013.12.26 prml勉強会 線形回帰モデル3.2~3.42013.12.26 prml勉強会 線形回帰モデル3.2~3.4
2013.12.26 prml勉強会 線形回帰モデル3.2~3.4
 
単純ベイズ法による異常検知 #ml-professional
単純ベイズ法による異常検知  #ml-professional単純ベイズ法による異常検知  #ml-professional
単純ベイズ法による異常検知 #ml-professional
 
ma99992010id512
ma99992010id512ma99992010id512
ma99992010id512
 
No55 tokyo r_presentation
No55 tokyo r_presentationNo55 tokyo r_presentation
No55 tokyo r_presentation
 
NL20161222invited
NL20161222invitedNL20161222invited
NL20161222invited
 
MLaPP 5章 「ベイズ統計学」
MLaPP 5章 「ベイズ統計学」MLaPP 5章 「ベイズ統計学」
MLaPP 5章 「ベイズ統計学」
 
[PRML] パターン認識と機械学習(第1章:序論)
[PRML] パターン認識と機械学習(第1章:序論)[PRML] パターン認識と機械学習(第1章:序論)
[PRML] パターン認識と機械学習(第1章:序論)
 
R_note_02_ver1.0
R_note_02_ver1.0R_note_02_ver1.0
R_note_02_ver1.0
 

More from Akifumi Eguchi

PlaidML Kerasでやっていく #TokyoR 73
PlaidML Kerasでやっていく #TokyoR 73PlaidML Kerasでやっていく #TokyoR 73
PlaidML Kerasでやっていく #TokyoR 73Akifumi Eguchi
 
High-order factorization machines with R #tokyor 61
High-order factorization machines with R  #tokyor 61High-order factorization machines with R  #tokyor 61
High-order factorization machines with R #tokyor 61Akifumi Eguchi
 
Randomforestで高次元の変数重要度を見る #japanr LT
 Randomforestで高次元の変数重要度を見る #japanr LT Randomforestで高次元の変数重要度を見る #japanr LT
Randomforestで高次元の変数重要度を見る #japanr LTAkifumi Eguchi
 
統計的学習の基礎6章前半 #カステラ本
統計的学習の基礎6章前半 #カステラ本統計的学習の基礎6章前半 #カステラ本
統計的学習の基礎6章前半 #カステラ本Akifumi Eguchi
 
環境化学データ解析入門: 愛媛大講演資料 160728
環境化学データ解析入門: 愛媛大講演資料 160728環境化学データ解析入門: 愛媛大講演資料 160728
環境化学データ解析入門: 愛媛大講演資料 160728Akifumi Eguchi
 
統計的学習の基礎, 副読本紹介: An Introduction to Statistical Learning
統計的学習の基礎, 副読本紹介: An Introduction to Statistical Learning統計的学習の基礎, 副読本紹介: An Introduction to Statistical Learning
統計的学習の基礎, 副読本紹介: An Introduction to Statistical LearningAkifumi Eguchi
 
Mxnetで回帰 #TokyoR 53th
Mxnetで回帰 #TokyoR 53thMxnetで回帰 #TokyoR 53th
Mxnetで回帰 #TokyoR 53thAkifumi Eguchi
 
子どもたちの未来を支える機械学習: 定量的構造活性相関 (QSAR) による有機ハロゲン化合物の母子間移行率予測
子どもたちの未来を支える機械学習: 定量的構造活性相関 (QSAR) による有機ハロゲン化合物の母子間移行率予測子どもたちの未来を支える機械学習: 定量的構造活性相関 (QSAR) による有機ハロゲン化合物の母子間移行率予測
子どもたちの未来を支える機械学習: 定量的構造活性相関 (QSAR) による有機ハロゲン化合物の母子間移行率予測Akifumi Eguchi
 
ぞくパタ最終回: 13章「共クラスタリング」
ぞくパタ最終回: 13章「共クラスタリング」ぞくパタ最終回: 13章「共クラスタリング」
ぞくパタ最終回: 13章「共クラスタリング」Akifumi Eguchi
 
Deep learningもくもくハッカソンまとめup用
Deep learningもくもくハッカソンまとめup用Deep learningもくもくハッカソンまとめup用
Deep learningもくもくハッカソンまとめup用Akifumi Eguchi
 
Tokyo webmining 43 "化学物質汚染のデータ解析・リスク評価についての私見"
Tokyo webmining 43 "化学物質汚染のデータ解析・リスク評価についての私見"Tokyo webmining 43 "化学物質汚染のデータ解析・リスク評価についての私見"
Tokyo webmining 43 "化学物質汚染のデータ解析・リスク評価についての私見"Akifumi Eguchi
 
第2回ぞくパタ
第2回ぞくパタ第2回ぞくパタ
第2回ぞくパタAkifumi Eguchi
 
第一回ぞくパタ
第一回ぞくパタ第一回ぞくパタ
第一回ぞくパタAkifumi Eguchi
 
ぞくパタ はじめに
ぞくパタ はじめにぞくパタ はじめに
ぞくパタ はじめにAkifumi Eguchi
 

More from Akifumi Eguchi (18)

PlaidML Kerasでやっていく #TokyoR 73
PlaidML Kerasでやっていく #TokyoR 73PlaidML Kerasでやっていく #TokyoR 73
PlaidML Kerasでやっていく #TokyoR 73
 
High-order factorization machines with R #tokyor 61
High-order factorization machines with R  #tokyor 61High-order factorization machines with R  #tokyor 61
High-order factorization machines with R #tokyor 61
 
Randomforestで高次元の変数重要度を見る #japanr LT
 Randomforestで高次元の変数重要度を見る #japanr LT Randomforestで高次元の変数重要度を見る #japanr LT
Randomforestで高次元の変数重要度を見る #japanr LT
 
統計的学習の基礎6章前半 #カステラ本
統計的学習の基礎6章前半 #カステラ本統計的学習の基礎6章前半 #カステラ本
統計的学習の基礎6章前半 #カステラ本
 
Dslt祭り2夜
Dslt祭り2夜Dslt祭り2夜
Dslt祭り2夜
 
環境化学データ解析入門: 愛媛大講演資料 160728
環境化学データ解析入門: 愛媛大講演資料 160728環境化学データ解析入門: 愛媛大講演資料 160728
環境化学データ解析入門: 愛媛大講演資料 160728
 
統計的学習の基礎, 副読本紹介: An Introduction to Statistical Learning
統計的学習の基礎, 副読本紹介: An Introduction to Statistical Learning統計的学習の基礎, 副読本紹介: An Introduction to Statistical Learning
統計的学習の基礎, 副読本紹介: An Introduction to Statistical Learning
 
Mxnetで回帰 #TokyoR 53th
Mxnetで回帰 #TokyoR 53thMxnetで回帰 #TokyoR 53th
Mxnetで回帰 #TokyoR 53th
 
子どもたちの未来を支える機械学習: 定量的構造活性相関 (QSAR) による有機ハロゲン化合物の母子間移行率予測
子どもたちの未来を支える機械学習: 定量的構造活性相関 (QSAR) による有機ハロゲン化合物の母子間移行率予測子どもたちの未来を支える機械学習: 定量的構造活性相関 (QSAR) による有機ハロゲン化合物の母子間移行率予測
子どもたちの未来を支える機械学習: 定量的構造活性相関 (QSAR) による有機ハロゲン化合物の母子間移行率予測
 
ぞくパタ最終回: 13章「共クラスタリング」
ぞくパタ最終回: 13章「共クラスタリング」ぞくパタ最終回: 13章「共クラスタリング」
ぞくパタ最終回: 13章「共クラスタリング」
 
Deep learningもくもくハッカソンまとめup用
Deep learningもくもくハッカソンまとめup用Deep learningもくもくハッカソンまとめup用
Deep learningもくもくハッカソンまとめup用
 
Tokyo webmining 43 "化学物質汚染のデータ解析・リスク評価についての私見"
Tokyo webmining 43 "化学物質汚染のデータ解析・リスク評価についての私見"Tokyo webmining 43 "化学物質汚染のデータ解析・リスク評価についての私見"
Tokyo webmining 43 "化学物質汚染のデータ解析・リスク評価についての私見"
 
第2回ぞくパタ
第2回ぞくパタ第2回ぞくパタ
第2回ぞくパタ
 
第一回ぞくパタ
第一回ぞくパタ第一回ぞくパタ
第一回ぞくパタ
 
ぞくパタ はじめに
ぞくパタ はじめにぞくパタ はじめに
ぞくパタ はじめに
 
Tokyo.r #44 lt.pptx
Tokyo.r #44 lt.pptxTokyo.r #44 lt.pptx
Tokyo.r #44 lt.pptx
 
Tokyo r #43
Tokyo r #43Tokyo r #43
Tokyo r #43
 
Tokyo R #39
Tokyo R #39Tokyo R #39
Tokyo R #39
 

みどりぼん9章前半

  • 2. 自己紹介 Twitter ID: @siero5335 仕事: 某大学で    化学物質曝露影響の解析    測定法の開発してます    専門: 環境化学、分析化学 測定結果の解析に統計を使用
  • 3.  目次 9.0: 例題データ紹介 9.1: 種子数のポアソン回帰 9.2: GLMのベイズモデル化 9.3: 無情報事前分布 9.4: ベイズ統計モデルの事後分布の推定 9.4.1: ベイズ統計モデルのコーディング (Stan) 9.4.2: 事後分布推定の準備 9.4.3: どれだけ長くMCMCサンプリングすればいいのか
  • 4.  9.0: 例題データ紹介 今回はどんなデータ? 架空植物: n = 20 x: 体サイズ y: 種子数 仮説 体サイズxiに依存して種子数yiの平均が増減する 実際は のポアソン分布から生成したデータ x y 3 5 3.210526 3 3.421053 6 3.631579 7 3.842105 7 4.052632 5 4.263158 9 4.473684 9 4.684211 7 4.894737 10 5.105263 12 5.315789 8 5.526316 7 5.736842 4 5.947368 4 6.157895 11 6.368421 9 6.578947 9 6.789474 8 7 6 λ = exp(1.5 + 0.1x)
  • 5.  9.1: 種子数のポアソン回帰 3 4 5 6 7 4 6 8 10 12 Call: glm(formula = y ~ x, family = poisson, data = d) Coefficients: (Intercept) x 1.56606 0.08334 Degrees of Freedom: 19 Total (i.e. Null); 18 Residual Null Deviance: 15.66 Residual Deviance: 14.17 AIC: 94.04 図9.1 p195より引用 今回はこのGLMをベイズ統計モデルに移植し、 事後分布の推定に取り組む
  • 6.  9.2: GLMのベイズモデル化 1. 個体iの種子数yiのばらつきを平均λiのポアソン分布 p(yi|λi) に従うとする。 2. GLMの時と同様に、線形予測子と対数リンク関数で平均を λi = exp(β1 + β2xi) と指定する。個体差は考慮しないのでランダム効果の項はなし。 3.このモデルの尤度関数: L(β1, β2)は β!, β! = ! ! !! λ! =! ! ! (!! |β!, β!, !!)! となる。ここまではGLMといっしょ。
  • 7.  9.2: GLMのベイズモデル化 5. 今回はベイズモデル化して事後分布を推定したい   ベイズモデルの事後分布は (尤度) × (事前分布) に比例するので、今回の例題では以下の関係が成り立つ。 事後分布 切片β1, 傾きβ2の 事前分布 β1,β2がある値の時 Yが得られる確率 この切片β1, 傾きβ2を適切に指定できれば ベイズモデル化したGLMが得られる
  • 8.  9.3: 無情報事前分布 どうやって切片β1, 傾きβ2の事前分布を推定するのか 架空植物の平均種子数を増減させる 切片、傾きの確率分布なんて分かるわけない。 [-∞, ∞]の範囲で好きな値をとっていいことにする。 → 無情報事前分布と呼ぶ。
  • 9.  9.3: 無情報事前分布 どうやって切片β1, 傾きβ2の事前分布を推定するのか 架空植物の平均種子数を増減させる 切片、傾きの確率分布なんて分かるわけない。 [-∞, ∞]の範囲で好きな値をとっていいことにする。 → 無情報事前分布と呼ぶ。 どんな確率分布? 範囲を取る一様分布 ひらべったい正規分泌 標準正規分布 -10 -5 0 5 10 0.0 0.1 0.2 0.3 0.4 平均0, 標準偏差100の 正規分布 図9.2 p197より引用
  • 10.  9.3: 無情報事前分布 どうやって切片β1, 傾きβ2の事前分布を推定するのか 架空植物の平均種子数を増減させる 切片、傾きの確率分布なんて分かるわけない。 [-∞, ∞]の範囲で好きな値をとっていいことにする。 → 無情報事前分布と呼ぶ。 どんな確率分布? 範囲を取る一様分布 ひらべったい正規分泌
  • 11.  9.4.1: ベイズ統計モデルのコーディング (BUGS) Model { for (i in 1:N) { Y[i] ~ dpois ( lambda [i] ) log ( lambda [i] ) <-­‐ beta1 + beta2 * (X [i] –Mean.X ) } beta1 ~ dnorm (0, 1.0E-­‐4) beta1 ~ dnorm (0, 1.0E-­‐4) }
  • 12.  9.4.1: ベイズ統計モデルのコーディング (BUGS) Model { for (i in 1:N) { Y[i] ~ dpois ( lambda [i] ) log ( lambda [i] ) <-­‐ beta1 + beta2 * (X [i] –Mean.X ) } beta1 ~ dnorm (0, 1.0E-­‐4) beta1 ~ dnorm (0, 1.0E-­‐4) } Y[1] ~ dpois ( lambda [1] ) log ( lambda [1] ) <-­‐ beta1 + beta2 * (X [1] –Mean.X ) Y[2] ~ dpois ( lambda [2] ) log ( lambda [2] ) <-­‐ beta1 + beta2 * (X [2] –Mean.X ) ・・・ Y[20] ~ dpois ( lambda [20] ) log ( lambda [20] ) <-­‐ beta1 + beta2 * (X [20] –Mean.X ) ブロック 統計モデルの記述 ブロックは以下のように展開されてWinBUGSに解釈される iはYやlambdaについてる変数の添字
  • 13.  9.4.1: ベイズ統計モデルのコーディング (BUGS) Y[i] ~ dpois ( lambda [i] ) 個体i の種子数Y[i]が平均 lambda [i] のポアソン分布 dpois ( lambda [i] )に従うという意味 log ( lambda [i] ) <-­‐ beta1 + beta2 * (X [i] –Mean.X ) 左辺: 個体iの平均種子数lambda [i] は対数リンク関数に従う beta1 = 切片β1 beta2 = 傾きβ2 X [i] = 説明変数(個体iのサイズxi) Mean.X 演算高速化のために標本平均を引いて中央化
  • 14.  9.4.1: ベイズ統計モデルのコーディング (BUGS) Model { for (i in 1:N) { Y[i] ~ dpois ( lambda [i] ) log ( lambda [i] ) <-­‐ beta1 + beta2 * (X [i] –Mean.X ) } beta1 ~ dnorm (0, 1.0E-­‐4) beta2 ~ dnorm (0, 1.0E-­‐4) } dnorm (mean, tau) mean = 平均 tau = 分散の逆数 標準偏差 = パラメータβ1 ,β2の事前分布を指定 tau = 1.0E-­‐4なので パラメータβ1 ,β2の事前分布は 平均0, 分散100の無情報事前分布 標準偏差は100だが、リンク関数が対数なので無情報と言って良い
  • 15.  9.4.1: ベイズ統計モデルのコーディング (BUGS) 無情報事前分布 切片β1 無情報事前分布 傾きβ2 ポアソン分布 データ(各個体のサイズX[i]) 平均λ[i] データ (各個体の種子数Y[i]) 確率論的関係 左辺は右辺の確率分布に従う: コード上表記 “~” 決定論的関係 左辺の内容は右辺である: コード上表記 “->”
  • 16.  9.4.2: 事後分布推定の準備 手順 (1) データの読み込み (2) 推定したいパラメータの初期値を指定 (3) RからWinBUGS読み出してデータ・初期値・サンプリング回数、 コードファイル名を伝達 (4) WinBUGSが働く (5) MCMCサンプリングが終わったら結果をRに渡す (6) MCMCサンプリングの結果をR内で調べる R2WinBUGSを使って普通は連携するが、使いやすくないので、 本書では久保先生お手製のR2WBwapper.Rを使って操作を簡易化
  • 17.  9.4.2: 事後分布推定の準備 source (“R2WBwrapper.R”) #ラッパー読み込み load(“d.RData”) # (1) 必要なデータの準備 clear.data.param() # データ・初期値読み込みの準備 #データの設定, set.data関数を使ってデータの中身を指定 set,data(“N”, nrow(d)) #サンプルサイズ set.data(“Y”, d$y) #応答変数:種子数Y[i] set.data(“X”, d$x) #説明変数: 体サイズX[i] set.data (“Mean.X, mean(d$x)) #X[i]の標本平均 #パラメータの初期値設置(2), set.param関数で初期値設定 set.param(“beta1”, 0) set.param(“beta2”, 0) #次スライドに続く
  • 18.  9.4.2: 事後分布推定の準備 #サンプリング回数等の決定(3) #MCMCサンプリングが終わったら結果をRに渡す(5) post.bugs <-­‐ call.bugs( file = “model.bugs.txt”, n.iter = 1600, n.burnin = 100, n.thin =3 } file = “model.bugs.txt”: BUGSコードを書いたファイル名の指定 n.iter = 1600: MCMCサンプリング1600回 n.burnin = 100: バーンイン, 最初100回分のデータは使わない n.thin =3: 101-­‐1600までの1500ステップを2個とばしで記録する →間引きのため(サンプリング回数検討の負担減らし)
  • 19.  9.4.3: どれだけ長くMCMCサンプリングすればいいのか サンプリング数が足りないと 事後分布を正確に推定できない。 多いと時間がかかる… 収束診断で確認 サンプリングを繰り返してサンブル列間の乖離を確認 chain関数を指定(デフォルトは3) -> Rhat < 1.1(経験的な指標: 収束した、しない) Rhat! =! !"#!/! !"#! =! ! − 1 ! ! +! 1 ! ! 図8.8 p179より引用 W: サンプル列内の分散 B: サンプル列間の分散 var+: 周辺事後分布の分散
  • 20.  9.4.3: Rhat > 1.1の時どうする? n.iterを増やす →サンプリング回数増やす n.burninを増やす →定常分布になるまでの  待ち時間を増やす それでも改善しない時は? 不適切な統計モデリング コード・データの間違い パラメータの初期値が不適切 図9.4 p205より引用
  • 21.  まとめ まずGLMをベイズモデル化することで感覚をつかむ 未知の値には無情報事前分布を事前分布に使ってみる WinBUGSなどにコードを渡してMCMCサンプリング! サンプル列間の乖離を調べて収束したか確かめる→ Rhat < 1.1 収束しない時は… サンプリング回数、Burn-­‐in期間を確認 それでもダメならモデルの中身をチェック 事後分布の推定については後半に!
  • 22.  おまけ: glmer2stanでもうちょっとお手軽に library(rstan) # rstan読み出し library(glmer2stan) # glmer2stan読み出し res <-­‐ glmer2stan(y ~ x, family = “poisson”, data = d, chain =3) #lme4のformula形式で記述 (res) #結果の表示 res@stanmodel #stanでどう表すか表示 >(res) 3 chains, each with iter=10000; warmup=5000; thin=1; post-warmup draws per chain=5000, total post-warmup draws=15000. mean se_mean sd 2.50% 25% 50% 75% 97.50% n_eff Rhat Intercept 1.55 0.01 0.36 0.81 1.31 1.56 1.8 2.23 1996 1 beta_x 0.09 0 0.07 -­‐0.04 0.04 0.08 0.13 0.22 1987 1 dev 92.02 0.04 2.04 90.08 90.6 91.39 92.75 97.51 2553 1 lp__ 143.98 0.02 1.02 141.24 143.62 144.3 144.69 144.95 2553 1 iter, warmup (burn-­‐in), chain, thin回数については XX (内容) = X (回数) で指定可能 デフォルトは iter = 10000, warmup = 5000, chain = 1, thin = 1
  • 23.  おまけ: glmer2stanでもうちょっとお手軽に res@stanmodel #stanでどう表すか表示 > res@stanmodel S4 class stanmodel 'y ~ x [poisson]' coded as follows: data{ int N; int y[N]; real x[N]; } parameters{ real Intercept; real beta_x; } #右へ続く model{ real vary[N]; real glm[N]; // Priors Intercept ~ normal( 0 , 100 ); beta_x ~ normal( 0 , 100 ); // Fixed effects for ( i in 1:N ) { glm[i] <-­‐ Intercept + beta_x * x[i]; glm[i] <-­‐ exp( glm[i] ); } y ~ poisson( glm ); } generated quanwwes{ real dev; real vary[N]; real glm[N]; dev <-­‐ 0; for ( i in 1:N ) { glm[i] <-­‐ Intercept + beta_x * x[i]; dev <-­‐ dev + (-­‐2) * poisson_log( y[i] , exp(glm[i]) ); } } 今まで使っていたモデルをstanで書き換 えるとどうやって書くのかわかるので、 stan事始めに向いているかも?