rstanで情報仮説による
モデル評価をしてみる
広島大学大学院教育学研究科
 徳岡 大
1
第2回R勉強会@広島(#HijiyamaR)
2015年5月23日
自己紹介
•  徳岡  ⼤大(とくおか  まさる)
•  広島⼤大学⼤大学院教育学研究科D4
•  動機づけ,⽬目標理理論論なんかの研究してます
•  R歴:4年年⽬目。思い通りに関数とか使えないまだまだ初⼼心者
•  twitter:      @t_̲macya
•  DARM(RとMplusを使⽤用した医療療・⼼心理理データ解析勉強会)
を主催しています。今年年も1回くらいは開催したい。。
2
本発表のモチベーション
•  前回のHiRoshima.Rに参加できなかった無念念
•  なんだか周りでベイズやらMCMCが流流⾏行行っている
•  ベイズを使うと仮説の尤もらしさが⽐比較できるらしい
し,差がないという仮説も主張できるらしい
•  論論⽂文にはBUGSのコードが載っていてもrstanの
コードはないのでrstanに翻訳しながら,理理解を
深めていきたい
3
注意!!
•  発表者もまだ発表内容について勉強中
•  発表内容は,コードなどは⼀一応計算結果を確認して
いるが,概念念的な理理解の細かいところで誤っている
可能性はあり
•  間違いなどを⾒見見つけたらご指摘ください!
•  今回の内容は,基本的に以下の紹介
岡⽥田謙介  (2014).  ベイズ統計による情報仮説の評価
は分散分析にとって代わるか?  基礎⼼心理理学研究,  
32,  2,  223-‐‑‒231.
•  なので,詳しく知りたい⼈人は岡⽥田(2014)を。
4
情報仮説でモデル評価のメリット
•  帰無仮説も含めて,どの仮説が尤もらしいか
⽐比較できる
•  仮説の複雑さも反映される
•  事後モデル確率率率(posterior  model  probability:  
PMP)を求めることでそれぞれの仮説が真で
ある確率率率を算出できる←わかりやすい!
•  他のベイズ主義的なメリットも享受できる
5
情報仮説でモデル評価って何?
•  情報仮説:不不等式制約で表現される仮説(                    )
•  無制約仮説(            )
•  情報仮説の複雑さを考慮して,ベイズファクターを算
出。ベイズファクターの値で評価する
※仮説の複雑さ:情報仮説と整合的な確率率率密度度の割合
※ベイズファクター(BF):前⽥田和寛先⽣生の資料料がわかりやすい
ので参照してください(http://www.slideshare.net/
kazutantan/bayes-‐‑‒factor)
6
情報仮説H1:µ1 > µ2の場合
•  データを取る前の事前分布で情報仮説を満たすのは
右下の半分
•  つまり,事前分布の50%が情報仮説に適合
•  仮説の複雑さ  =  0.5
7
情報仮説H1:µ1 > µ2の場合
•  データを取ってMCMCしたらこんな感じの事後分布
•  情報仮説に合うのは右下の半分。事後分布の82.5%
が情報仮説に適合
•  情報仮説H1の尤もらしさ
※f1:事後分布の適合度度
(モデルの当てはまり)
※c1:H1の複雑さ
8
岡田(2014)をrstanで再現
•  使⽤用データ:マウスの体重データ(Lock5Data
パッケージのLightatNightというデータセット)
•  従属変数:4週間後の体重の増加量量
•  独⽴立立変数:LD群,LL群,DM群の1要因3⽔水準
•  3つの仮説
•  どの仮説が真である確率率率が⾼高いか
9
分析前にデータを整えたり
10
パッケージを読み込んから
データセットを読み込む
独⽴立立変数の⽔水準に対応するダミー変数を作成
①独⽴立立変数のダミー変数と従属変数だけをdat3に移す②
各変数の名前を変更更③サンプルサイズの変数を作成
データをリスト形式に
11
rstanが読み込めるリスト形
式にする。
こんな⾵風になっていれば
⼤大丈夫
stanコード
12
このあたりのことは,⼩小杉考司先⽣生の資料料
がわかりやすいので参照してください。
http://www.slideshare.net/KojiKosugi/r-stan
”informative_hypothese.stan”というファイ
ル名でこのモデルを作業ディレクトリに
保存しておきます。
データブロック
•  stanに読み込ませるデータセットにどんなものが
⼊入っているかを教えてあげるブロック
•  int:整数
•  real:実数
•  [  ]内は添え字。d1とかは  n  個⼊入ってますよ
13
パラメタブロック
推定したいパラメタをstanに教えてあげるブロック
•  今回は,各⽔水準ごとの平均(mu1,mu2とmu3)
と分散(sigma)を推定したい
14
パラメタ変換ブロック
推定したいパラメタを変換するブロック
•  平均を各⽔水準と対応させるためにmu1〜~3とd1〜~3
を組み合わせてmuという変数を作成
•  sigmaを平⽅方根して,sという標準偏差を推定
•  新しいパラメタを全て指定してから,変換式を記述
15
モデルブロック
•  事前分布:mu1〜~3にそれぞれ平均0,分散1000の
正規分布を,分散のsigmaに無情報(0.01,  0.01)
の逆ガンマ分布を当てはめる
•  事後分布:yに平均mu,標準偏差sの正規分布を当
てはめる
※stanの場合,normal(平均,標準偏差)
16
rstanでMCMC(*´Д`)ハァハァする
17
stanのモデルをコンパイル
するためのコード
MCMCを実⾏行行するためのコード。論論⽂文と同じよう
に1000回のバーンアウト区間を設け,その後,
1000000回分のMCMC標本を推定に利利⽤用。たぶん
ここまで多くなくていいけど,論論⽂文に合わせた反復復
回数にしてあります。
結果を見てみる
•  元のデータセットのデータと⽐比較
18
BFとPMPの算出
19
MCMC標本の抽出
①MCMC標本それぞれに対してDM > LDなら1,でなけれ
ば0でコード化②LL > DMなら1  ,でなければ0でコード化
③DM > LDかつLL > DMなら1でなければ0でコード化④③
を満たすMCMC標本の割合を算出
BFとPMPの算出
20
複雑さは,⺟母数の数と不不等式の数の場合
の数によって求めることができる(c1 =
3! = 6, c2 = 3C1 = 3)
BFの算出
PMPの算出
•  残りのBFやPMPも同様に算出していく
結果の比較:BUGSとrstan
H1 H2 Hu
ci 0.1667 0.3333 -
fi(fit) 0.9277 0.9349 -
BFiu 5.57 2.80 1.00
PMPi 0.59 0.30 0.11
H1 H2 Hu
fi(fit) 0.9278 0.9349 -
BFiu 5.57 2.80 1.00
PMPi 0.59 0.30 0.11
岡田(2014)の結果
rstanでの推定結果
21•  H1とH2のfとPMPの確率率率差が仮説の複雑性の影響
ついでに自分のデータでもやってみた
•  ⽇日本版達成⽬目標尺度度(AGQ-‐‑‒R)の項⽬目内容の妥当性
•  習得回避⽬目標:“私の⽬目的は⾃自分のベストをつくさな
いことを少しでも避けることだ”
•  定義:課題習得の失敗に注意が向けられており、失
敗を回避しようとする⽬目標
•  項⽬目が失敗回避っていうよりも成功接近では??
•  回答者が項⽬目内容を失敗回避的に捉えているのかを
検討する
22
データの中身
成功接近的意味
•  ポジティブなこと(成功、有能)意味がどの程度度
含まれているか(7件法)
失敗回避的意味
•  ネガティブなこと(失敗、無能)を回避する意味が
どの程度度含まれているか(7件法)
•  仮説
23
H1: 成功接近的意味<失敗回避的意味
H0: 成功接近的意味=失敗回避的意味
せっかくだから階層ベイズで
今回使⽤用するstanコード
•  橙⾊色枠内が平均の個⼈人差に関わる
データ⽣生成モデル
24
MCMCはこんな条件で
•  反復復回数は21000回  (iter  =21000)
•  2本のMCMCを⾛走らせる  (chain  =  2)
•  バーンアウト区間は1000回  (warmup  =  1000)
•  10回ごとにMCMC標本をとってくる  (thin  =  10)
•  最終的に2000のMCMC標本が得られる
25
収束チェック
•  Rhat  =  1.000
26
推定結果をshinyStanで出力
•  mu1,  mu2の95%信⽤用区間
27
個人差はこんな感じ
28
どの仮説が尤もらしいか
H1:失敗回避>成功接近
•  BF10  =  0.83  
•  PMP1  =  0.45
H0:失敗回避=成功接近
•  BF00  =  1  
•  PMP0  =  0.55
結論論:H0のほうが妥当な仮説といえそう
•  帰無仮説のBFは常に1になるのでPMPが極端に⼤大きい
値にはならない。帰無仮説を主張したい場合よりも,
複数の仮説から選択したい場合に有効かも
29

rstanで情報仮説によるモデル評価してみる@Hjiyama.R