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

Cmdstanr入門とreduce_sum()解説
Cmdstanr入門とreduce_sum()解説Cmdstanr入門とreduce_sum()解説
Cmdstanr入門とreduce_sum()解説Hiroshi Shimizu
 
MCMCでマルチレベルモデル
MCMCでマルチレベルモデルMCMCでマルチレベルモデル
MCMCでマルチレベルモデルHiroshi Shimizu
 
StanとRでベイズ統計モデリング読書会 導入編(1章~3章)
StanとRでベイズ統計モデリング読書会 導入編(1章~3章)StanとRでベイズ統計モデリング読書会 導入編(1章~3章)
StanとRでベイズ統計モデリング読書会 導入編(1章~3章)Hiroshi Shimizu
 
15分でわかる(範囲の)ベイズ統計学
15分でわかる(範囲の)ベイズ統計学15分でわかる(範囲の)ベイズ統計学
15分でわかる(範囲の)ベイズ統計学Ken'ichi Matsui
 
マルコフ連鎖モンテカルロ法入門-2
マルコフ連鎖モンテカルロ法入門-2マルコフ連鎖モンテカルロ法入門-2
マルコフ連鎖モンテカルロ法入門-2Nagi Teramo
 
基礎からのベイズ統計学第5章
基礎からのベイズ統計学第5章基礎からのベイズ統計学第5章
基礎からのベイズ統計学第5章hiro5585
 
マルコフ連鎖モンテカルロ法入門-1
マルコフ連鎖モンテカルロ法入門-1マルコフ連鎖モンテカルロ法入門-1
マルコフ連鎖モンテカルロ法入門-1Nagi Teramo
 
ブートストラップ法とその周辺とR
ブートストラップ法とその周辺とRブートストラップ法とその周辺とR
ブートストラップ法とその周辺とRDaisuke Yoneoka
 
一般化線形モデル
一般化線形モデル一般化線形モデル
一般化線形モデルMatsuiRyo
 
ベイズ統計入門
ベイズ統計入門ベイズ統計入門
ベイズ統計入門Miyoshi Yuya
 
ベイズ統計学の概論的紹介
ベイズ統計学の概論的紹介ベイズ統計学の概論的紹介
ベイズ統計学の概論的紹介Naoki Hayashi
 
心理学者のためのGlmm・階層ベイズ
心理学者のためのGlmm・階層ベイズ心理学者のためのGlmm・階層ベイズ
心理学者のためのGlmm・階層ベイズHiroshi Shimizu
 
学部生向けベイズ統計イントロ(公開版)
学部生向けベイズ統計イントロ(公開版)学部生向けベイズ統計イントロ(公開版)
学部生向けベイズ統計イントロ(公開版)考司 小杉
 
PRML輪読#2
PRML輪読#2PRML輪読#2
PRML輪読#2matsuolab
 
【読書会資料】『StanとRでベイズ統計モデリング』Chapter12:時間や空間を扱うモデル
【読書会資料】『StanとRでベイズ統計モデリング』Chapter12:時間や空間を扱うモデル【読書会資料】『StanとRでベイズ統計モデリング』Chapter12:時間や空間を扱うモデル
【読書会資料】『StanとRでベイズ統計モデリング』Chapter12:時間や空間を扱うモデルMasashi Komori
 
glmmstanパッケージを作ってみた
glmmstanパッケージを作ってみたglmmstanパッケージを作ってみた
glmmstanパッケージを作ってみたHiroshi Shimizu
 
StanとRでベイズ統計モデリング読書会(Osaka.stan) 第6章
StanとRでベイズ統計モデリング読書会(Osaka.stan) 第6章StanとRでベイズ統計モデリング読書会(Osaka.stan) 第6章
StanとRでベイズ統計モデリング読書会(Osaka.stan) 第6章Shushi Namba
 
20160311 基礎からのベイズ統計学輪読会第6章 公開ver
20160311 基礎からのベイズ統計学輪読会第6章 公開ver20160311 基礎からのベイズ統計学輪読会第6章 公開ver
20160311 基礎からのベイズ統計学輪読会第6章 公開verTakashi Kitano
 

What's hot (20)

Cmdstanr入門とreduce_sum()解説
Cmdstanr入門とreduce_sum()解説Cmdstanr入門とreduce_sum()解説
Cmdstanr入門とreduce_sum()解説
 
MCMCでマルチレベルモデル
MCMCでマルチレベルモデルMCMCでマルチレベルモデル
MCMCでマルチレベルモデル
 
Stan超初心者入門
Stan超初心者入門Stan超初心者入門
Stan超初心者入門
 
StanとRでベイズ統計モデリング読書会 導入編(1章~3章)
StanとRでベイズ統計モデリング読書会 導入編(1章~3章)StanとRでベイズ統計モデリング読書会 導入編(1章~3章)
StanとRでベイズ統計モデリング読書会 導入編(1章~3章)
 
15分でわかる(範囲の)ベイズ統計学
15分でわかる(範囲の)ベイズ統計学15分でわかる(範囲の)ベイズ統計学
15分でわかる(範囲の)ベイズ統計学
 
マルコフ連鎖モンテカルロ法入門-2
マルコフ連鎖モンテカルロ法入門-2マルコフ連鎖モンテカルロ法入門-2
マルコフ連鎖モンテカルロ法入門-2
 
基礎からのベイズ統計学第5章
基礎からのベイズ統計学第5章基礎からのベイズ統計学第5章
基礎からのベイズ統計学第5章
 
マルコフ連鎖モンテカルロ法入門-1
マルコフ連鎖モンテカルロ法入門-1マルコフ連鎖モンテカルロ法入門-1
マルコフ連鎖モンテカルロ法入門-1
 
ブートストラップ法とその周辺とR
ブートストラップ法とその周辺とRブートストラップ法とその周辺とR
ブートストラップ法とその周辺とR
 
一般化線形モデル
一般化線形モデル一般化線形モデル
一般化線形モデル
 
ベイズ統計入門
ベイズ統計入門ベイズ統計入門
ベイズ統計入門
 
ベイズ統計学の概論的紹介
ベイズ統計学の概論的紹介ベイズ統計学の概論的紹介
ベイズ統計学の概論的紹介
 
心理学者のためのGlmm・階層ベイズ
心理学者のためのGlmm・階層ベイズ心理学者のためのGlmm・階層ベイズ
心理学者のためのGlmm・階層ベイズ
 
学部生向けベイズ統計イントロ(公開版)
学部生向けベイズ統計イントロ(公開版)学部生向けベイズ統計イントロ(公開版)
学部生向けベイズ統計イントロ(公開版)
 
PRML輪読#2
PRML輪読#2PRML輪読#2
PRML輪読#2
 
階層ベイズとWAIC
階層ベイズとWAIC階層ベイズとWAIC
階層ベイズとWAIC
 
【読書会資料】『StanとRでベイズ統計モデリング』Chapter12:時間や空間を扱うモデル
【読書会資料】『StanとRでベイズ統計モデリング』Chapter12:時間や空間を扱うモデル【読書会資料】『StanとRでベイズ統計モデリング』Chapter12:時間や空間を扱うモデル
【読書会資料】『StanとRでベイズ統計モデリング』Chapter12:時間や空間を扱うモデル
 
glmmstanパッケージを作ってみた
glmmstanパッケージを作ってみたglmmstanパッケージを作ってみた
glmmstanパッケージを作ってみた
 
StanとRでベイズ統計モデリング読書会(Osaka.stan) 第6章
StanとRでベイズ統計モデリング読書会(Osaka.stan) 第6章StanとRでベイズ統計モデリング読書会(Osaka.stan) 第6章
StanとRでベイズ統計モデリング読書会(Osaka.stan) 第6章
 
20160311 基礎からのベイズ統計学輪読会第6章 公開ver
20160311 基礎からのベイズ統計学輪読会第6章 公開ver20160311 基礎からのベイズ統計学輪読会第6章 公開ver
20160311 基礎からのベイズ統計学輪読会第6章 公開ver
 

Viewers also liked

超要約 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
 
みどりぼん3章前半
みどりぼん3章前半みどりぼん3章前半
みどりぼん3章前半Akifumi Eguchi
 
#みどりぼん 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
 

Viewers also liked (19)

超要約 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
 
みどりぼん3章前半
みどりぼん3章前半みどりぼん3章前半
みどりぼん3章前半
 
#みどりぼん 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
 
シンギュラリティを知らずに機械学習を語るな
シンギュラリティを知らずに機械学習を語るなシンギュラリティを知らずに機械学習を語るな
シンギュラリティを知らずに機械学習を語るな
 
最適化超入門
最適化超入門最適化超入門
最適化超入門
 
PyMC mcmc
PyMC mcmcPyMC mcmc
PyMC mcmc
 

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事始めに向いているかも?