Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

心理学者のためのGlmm・階層ベイズ

11,909 views

Published on

北海道大学で講演した,GLM,HLM,GLMM,階層ベイズについてのスライド後半です。
前半のスライドはこちら
http://www.slideshare.net/simizu706/ss-58585233

Published in: Data & Analytics
  • Hello! Get Your Professional Job-Winning Resume Here - Check our website! https://vk.cc/818RFv
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here

心理学者のためのGlmm・階層ベイズ

  1. 1. 心理学者のための GLMM・階層ベイズ 清水裕士 関西学院大学社会学部
  2. 2. 自己紹介 • 清水裕士 – 関西学院大学社会学部 • 専門 – 社会心理学・グループダイナミックス • 趣味 – 心理統計 – フリーの統計ソフトHADの開発 • Web – http:norimune.net – twitter:@simizu706
  3. 3. このスライドは・・・ • 心理学者のための統計モデリングの続き – http://www.slideshare.net/simizu706/ss-58585233 – 統計モデリングやGLMの話についてまとめてます – GLMMの話の助走的なスライドです • ここからでも独立に見れます – GLMM = G + M + LM • 一般化線形混合モデル = 一般化+混合+線形モデル – 前のスライドはG(一般化)の話 – このスライドはM(混合)の話と,GLMMの話
  4. 4. Mの話
  5. 5. Gの話が終わったので • Mの話:Linear Mixed Model – 線形混合モデル • Mixedとはなにか – 固定効果と変量効果の両方が混ざってるモデル – Fixed effectとRandom effect – 固定効果は,従来の切片や回帰係数のこと – というわけで,Mの話は変量効果の話
  6. 6. 変量効果の導入の動機 • 大きく分けて2つある – 集団ごとにネストされたデータを分析するため • 個人が反復測定された場合もここ – 1パラメータの分布(ポアソン,二項)の過分散問 題を解決するため • 今日は上の動機から説明 – 社会心理学者にはこっちのほうがわかりよい – 過分散の話も後でします
  7. 7. 階層線形モデル:HLM • 最もシンプルなLMM – (正規分布の)回帰分析+変量効果 – Mixed Modelというと,もう少し広い意味 • HLMはどういうときに使う? – データがグループでネストされているような場合 – このようなデータを階層的なデータと呼ぶ
  8. 8. 個人-集団データの階層性 • 集団ごとにネストされたデータ • 集団内で類似したデータ • 学校-生徒、カップルデータ、反復測定データ・・・etc このようなデータを階層的データと呼ぶ 集団1 集団2 個 人 1 個 人 2 個 人 3 個 人 4 個 人 5 個 人 6 8
  9. 9. またもやプロ野球データ • 日本プロ野球は12球団に分かれる – 球団によって,モデルが変わる可能性 広島・・・!?
  10. 10. 年俸をHRで予測 • チーム別の回帰直線 teamID 切片 傾き DeNA 16.415 5.509 ヤクルト 19.767 4.872 巨人 10.757 13.057 広島 25.402 2.376 阪神 31.144 12.030 中日 20.227 9.165 オリックス 54.865 3.291 ソフトバンク 57.501 11.436 ロッテ 16.689 11.390 楽天 55.265 3.497 西武 27.366 6.923 日本ハム 14.588 6.832 0 100 200 300 400 500 600 0 10 20 30 40 salary HR 広島・・・!?
  11. 11. チームによってモデルは違うっぽい • お金がある球団ほど,HRの効果が大きそう – でもそれをどうやってモデリングしたらいいだろうか? • 愚直な考え:12個の回帰モデルを解釈する – 巨人のHRの効果はいくら,広島の効果はいくら・・・ – 12ならまだいいが,集団が100個の場合は? • パラメータ数が増える→オーバーフィッティング – そもそも個々の集団に興味がない場合は? • 実験的に作られた集団それぞれの効果が出ても・・・
  12. 12. そこで階層線形モデル • グループごとの違いを同時にモデリング – 回帰直線をグループごとに仮定することなく,一 度に推定する – しかし,グループごとの違いをうまく表現する • そこで使えるのが変量効果 – 個々の推定値には興味がないが,全体的な散ら ばりはモデルに含めておきたい場合
  13. 13. 少し違う視点:回帰分析の仮定 • データは独立に生成されている – 独立性(正確には無相関の仮定) • データ内に局所的な相関がない • データは同じ(分散の)分布から生成されている – 同一性(均一分散の仮定) • データはすべて同じ(分散の)分布に従っている • データは正規分布から生成されている – 正規性
  14. 14. 年俸は球団が払う • 当然,球団単位で年俸は影響を受ける – 年俸データが各選手について,独立に生成されてい ると考えるのは無理がある – 球団内に,局所的な相関が存在すると考えられる
  15. 15. 独立性の仮定の逸脱 • 推定がうまくいかない – パラメータの標準誤差を過少推定してしまう – 極端な話,チームごとにすべて同じデータが入っ ている場合,データが単純に水増しされているこ とになる! • 非独立の程度をモデリングしてやる – データがどれほどチーム内で相関があるのかを 推定することで,それを解決
  16. 16. HLM早わかり
  17. 17. 普通の回帰分析 切片a 回帰係数b 1単位 17
  18. 18. 複数のグループの回帰分析 100個の回帰直線 Aグループ Bグループ ・ ・ ・ 100回も回帰分析をするの・・・? 切片と回帰係数が100個ずつ・・・ 18
  19. 19. HLMによる回帰直線 切片の集団間変動 固定効果(平均) 変量効果(分散) 変量効果・・・集団ごとに異なる値 19
  20. 20. HLMによる回帰直線 切片と回帰係数の集団間変動 固定効果(平均) 変量効果(分散) 変量効果(分散) 100個のパラメータを,平均と分散で(つまり2個)で表現する 20
  21. 21. HLMのモデリング
  22. 22. おさらい:回帰分析ってなんだっけ • 基本の回帰分析(一般線形モデル)の式 – Yi = β0 + β1Xi + ei 式1 • ただし、Yは従属変数、Xは独立変数、eは残差得点 • β0は切片、β1は回帰係数 添え字のiは個人を表す 添え字を持つ記号は、個人ごとで異なる 切片β0 回帰係数β1 Xが1単位増えたときのYの増加量 Xが0のときの Yの予測値 22
  23. 23. おさらい:回帰分析ってなんだっけ • Yi = β0 + β1Xi + ei 式1 • 切片と回帰係数 – β0とβ1は定数なので,「固定効果」と呼ぶ • 残差得点 – eiは人によって値が違うので,「変量効果」と呼ぶ – 変量効果は,その分散(残差分散)を推定する • eiの分散をσ(シグマと読む)と表現する • ei ~ N(0, σ ) • 残差は,平均0,標準偏差σの正規分布に従う 23
  24. 24. HLMの考え方1 複数の回帰分析 • 基本の回帰分析の式 – Yi = β0 + β1Xi + ei 式1 • ここで、各母数が集団ごとで違うと仮定する – たとえば、集団ごとに、切片と傾きが異なる • いわゆる多母集団分析 – Yij = β0j + β1jXij + eij 式2 添え字のjは集団を表し、iは個人を表す 24
  25. 25. HLMの考え方2 複数の回帰分析を縮約する Aグループ Bグループ ・ ・ ・ 100回も回帰分析をするの・・・? 切片と回帰係数が100個ずつ・・・ 25
  26. 26. HLMの考え方2 複数の回帰分析を縮約する • 集団が増えるとパラメータの数も増えていく – 100集団なら、100個の切片と傾きが算出される • 十分な数があるなら、確率変数として扱える – 確率変数 = 確率分布に従う変数 – 各集団の切片・回帰係数が正規分布に従う • 平均と分散で100集団のパラメータを表現 – 全体的な傾向を平均値,集団間変動を分散 – 100個のパラメータがたった2個で表現できる! 26
  27. 27. HLMの考え方2 複数の回帰分析を縮約する 固定効果(平均) 変量効果(分散) 変量効果(分散) 100個のパラメータを,平均と分散で(つまり2個)で表現する 27
  28. 28. HLMの考え方3 切片の集団間変動(変量切片モデル) • 複数集団の回帰分析の式 – Yij = β0j + β1jXij + eij 式2 – β0j = γ00 + u0j 式3 • 集団ごとの違いは変量効果で表現 – 変量効果u0jは、平均0,分散τ0の正規分布に従う – u0j ~ N(0, τ0 ) 添字のiは個人を意味する 添え字のjは集団を意味する 切片の平均(固定効果) 切片の集団ごとの違い(変量効果) 添え字のjは集団を意味する N()は正規分布に従うことを意味する τはタウと読む 28
  29. 29. HLMの考え方4 変量係数モデル • 回帰係数にも変量効果を考える – 変量係数と呼ぶこともある – β0j = γ00 + u0j 式3 – β1j = γ10 + u1j 式4 • ただし、γはパラメータの固定効果、uは変量効果 • u0j u1jは平均0の多変量正規分布に従うと仮定 両方の平均が0である ことを示す 分散がτ00、τ11、 共分散がτ01=τ10 正規分布に従うこと を示す 添え字のjは集団を意味する u0j u1j ~ N 0 0 τ00 τ01 τ10 τ11, 29
  30. 30. 年俸とHRのHLM • RではlmerTestパッケージがおすすめ – しかし,なぜかlmer()では,salaryを直接モデリン グするとエラーが出る • ほかのソフトならちゃんと推定してくれる • 謎 lmerの挙動はイマイチ怪しいところがある • というわけで,回帰係数のみ変動を推定 – たしかに,散布図を見ると切片の集団間変動は 小さい – 傾きのみが異なるモデルを推定
  31. 31. 年俸をHRで予測 • lmer()を使う – fit.lmm <- lmer(salary~HR+(0+HR|team),dat) – summary(fit.lmm) 平均して,HR1本で760万上昇 しかし,球団間でSD=335万程度のちらばり
  32. 32. 年俸とHRのHLM
  33. 33. 集団ごとの違いに興味がない場合 • 変量効果を導入しないという選択肢 – まずは変量効果を仮定するかどうかを決める – AICなどの情報量基準が使える • 集団間変動を無視してモデリングすると・・? – 点推定値もそうだが,標準誤差がかなり違う – TypeⅠエラーを犯す確率が上がる • 予測精度を過剰に高く見積もってしまうため
  34. 34. lm()とlmer()を比較 • lmで回帰分析をした場合 – 変量効果は仮定しない – AIC=2263 • lmerで階層線形モデルをした場合 – 回帰係数の変量効果を仮定 – AIC=2231
  35. 35. 変量効果を組み合わせる • 年齢グループによる違い – 年齢によって,HRの効果違うんじゃないの? • lmer()でやってみる >fit.lmm2 <- lmer(salary~HR+(0+HR|team)+(0+HR|age),dat) >summary(fit.lmm2)
  36. 36. え,でも年齢なら交互作用でも? • 年齢を固定効果と交互作用で推定 – fit.lmm3 <- lmer(salary~HR*age+(0+HR|team),dat) – summary(fit.lmm3)
  37. 37. 固定効果にするか変量効果にするか • 判断基準1:連続量ではない – 連続量は素直に固定効果にしたほうがいい • 判断基準2:分布の仮定に合うか – その変数による得点の散らばりが正規分布になるか • 判断基準3:パラメータを予測に使うか – 推定したパラメータを予測に使えるかどうか – 性別や年齢・・・予測に使える – 実験参加者・・・次の実験には使えない
  38. 38. 時系列データの場合 • 例:選手成績を10年追いかけたデータ – HRの本数の推移 • 選手ごとに相関があるので・・・ – やはり変量効果を仮定したほうが良い • 年度が近い成績は,相関が高い? – データに自己相関が生じる!
  39. 39. たとえばこんなデータ • 分散分析だと球面性の仮定が成り立たない
  40. 40. 時系列データの場合 • これまでの話 – データ内の相関は,球団によって生じていた – 球団間の変動をモデル化すれば解決! • 球団の分散をとりのぞけば,残差は独立になる • 時系列データの場合 – データ内の相関は,ひとつ前のデータに依存 – 時系列が近いデータ間の相関は強いが,離れる ほど弱くなる
  41. 41. 相関構造の違い • ネスト構造の相関 時系列構造の相関 球団 選手1 選手2 選手3 Time1 Time2 Time3 球団の分散を推定すれば, 選手間の関連は説明される 選手の分散を推定しても,まだ 残差間に系列相関が残る 選手
  42. 42. 残差共分散行列の構造 • 分散成分:VC – 時点間に相関を仮定しない • 複合シンメトリ:CS – 時点間にすべて同じ相関を仮定する • 自己相関:AR(1) – 隣同士の時点に相関があり,離れるほど小さくなる • 無構造:UN – すべての時点間に別々の相関を仮定 • 切片の変量効果を推定していると,識別できない
  43. 43. 変量効果+自己相関 • 個人差と系列相関をモデリング – 選手ごとの打力の効果(変量効果) – 年度ごとの時系列的な相関(自己相関) • Rだとうまく推定してくれるパッケージがない – lme4は残差共分散を指定できない – nlmeパッケージのlme()で残差共分散を指定でき る
  44. 44. こういうデータにmixedモデル
  45. 45. lme()を使った場合 • library(nlme) • fit.lmm4 <- lme(fixed = data ~ time*condition, • data=dat, • random = data~1|ID, • correlation=corAR1()) • summary(fit.lmm4) – この場合,corAR1()で1次自己相関を指定している
  46. 46. SASもおすすめ PROC MIXED noitprint noclprint DATA = HAD2glimmix METHOD = ML; CLASS ID timec; MODEL data = time | condtion /s DDFM = KR; RANDOM intercept / subject =ID TYPE=UN; REPEATED timec/ subject = ID TYPE = AR(1) RCORR; RUN; Mixedプロシージャを使う場合 GLIMMIXプロシージャを使う場合 PROC GLIMMIX noitprint noclprint DATA = HAD2glimmix METHOD = MSPL; CLASS ID; MODEL data = time | condtion /s DIST = gaussian DDFM = KR; RANDOM intercept / subject =ID TYPE=UN; RANDOM residual / subject = ID TYPE = AR(1); RUN;
  47. 47. GLMMの話
  48. 48. ようやくGLMM • G+M+LM = GLMM – 基本的なところは,これまでの足し算で理解可能 – 正規分布以外の分布を使う – 変量効果で局所的な相関,自己相関をモデル化 • GLMM特有の話 – 過分散問題の解決の話 – 推定アルゴリズムの問題
  49. 49. 過分散問題の解決
  50. 50. 過分散問題の解決法としてのGLMM • 1パラメータの分布 – 二項分布 – ポアソン分布 – 分散が平均値によってのみ決まるので,実際の データと分散が合わないことがよくおこる – 過分散問題
  51. 51. 過分散問題 • ポアソン分布の過分散 – HRをポアソンと負の二項分布で推定 ポアソン分布 負の二項分布 上手くいきそう! 全然ダメ!
  52. 52. GLMMで解決 • 過分散を変量効果で推定する – ポアソン分布の場合 – λの対数が,正規分布に従って散らばると仮定 • つまり,λが対数正規分布に従うと仮定 – すると,ポアソン分布の分散に加えて,λの変動を 加えることができる→過分散を解決! – つまり,個人ごとの打力を変量効果でモデリング
  53. 53. ポアソン分布+変量効果 • glmer()を使って解く >fit.pois2 <- glmer(HR~1+(1|player),dat,family=poisson) >summary(fit.pois2)
  54. 54. 二項分布+変量効果 • glmer()を使う >fit.bin3 <- glmer(cbind(HIT,ATbats-HIT)~league+(1|player), dat,family=binomial) >summary(fit.bin3)
  55. 55. 普通の二項分布の結果 >fit.bin2 <- glm(cbind(HIT,ATbats-HIT)~league,dat,family=binomial) >summary(fit.bin2)
  56. 56. マルチレベルモデルとしての GLMM
  57. 57. 「みどり本」 57 久保(2012) データ解析のための統計モデリング入門
  58. 58. 一般化されたHLM • 正規分布以外の分布を扱うHLM – ロジスティックHLM – ポアソンHLM – 対数正規HLM・・・ • 二つの分布を混ぜ合わせる – 二項分布+正規分布 – ポアソン分布+正規分布 – 対数正規分布+正規分布
  59. 59. GLMMの尤度関数 • 尤度関数が複雑 – 複数の確率分布の積を積分する – 多くの場合は直接評価はできない • 解決法 – 疑似尤度を使う – 数値積分を行う – ラプラス近似によって尤度関数が正規分布に近似で きると仮定する
  60. 60. 疑似尤度を最適化する方法 • 尤度っぽいものを使う – 尤度ではない – しかし,それっぽい解が得られる • あまり良い方法ではないらしい – 一致推定量ではない – しかしSPSSは疑似尤度による推定しかできな い・・・
  61. 61. 最尤法でGLMMを推定する限界 • 数値積分を使う方法 – 変量効果の種類が増えると推定が不可能 – 次元の呪いにとらわれる • 近似法を使う方法 – 単純なモデルの場合はよい推定 – ただし、複雑なモデルになると近似がうまくいか ない場合もある
  62. 62. 最尤法でGLMMを推定する限界 • 変量効果の分散(SD)が不偏推定量ではない – 小標本で,変量効果の分散推定値にバイアス • グループ間変動をより小さく推定してしまう • グループ数が少ない場合により深刻 • 推定値の分布に正規分布を仮定 – 小標本では,推定精度を高く見積もりすぎる • 最小二乗法ではt分布を使うことを思い出そう – 分散は非負なので,一般に正規分布にならない • 集団間変動についての正しい区間推定ができない
  63. 63. 階層モデル • 階層モデルとは – 確率分布のパラメータ自体が、別の確率分布に 従うようなモデル • HLMなども階層モデルに含まれる – 個人・集団のデータの階層性とはちょっと違う • 最尤法では階層モデルは苦手 – 尤度関数のなかで積分を評価しないといけない – しかし、それは一般に難しい
  64. 64. そこで、ベイズ推定 • ベイズさんが考えた定理を使って推論する – ベイズの定理 – P(θ|X):事後分布(パラメータの分布) – P(x|θ):尤度 – P(θ):事前分布 – θ:パラメータ – X:データ
  65. 65. ベイズ統計については・・・ • こちらのスライドをご覧ください – 心理学者のためのベイズ統計入門 – http://www.slideshare.net/simizu706/ss-57721033
  66. 66. GLMMとベイズ
  67. 67. マルチレベルモデルとベイズ • とても相性が良い – モデルが複雑になりがち • 変量効果の共分散行列の推定がやっかい • 複数の分布を混ぜるともっとやっかい • 最近のMCMCは複雑なモデルでも収束してくれる – 標本サイズが小さくなりがち • グループの数はそれほど用意できない • 最尤法は大標本を仮定 • ベイズは小標本でもそこそこいける
  68. 68. 階層ベイズ • ベイズでは階層モデルは自然に推定可能 – パラメータの事前分布としてより高次なパラメータ の分布を想定すればいい – ローカルパラメータを推定しつつ,グローバルな パラメータの分布制約を置くことが可能 – x ~ P(θ) θによってデータがモデル化 – θ ~ P(ψ) Ψによってθがモデル化
  69. 69. MCMCで階層ベイズも簡単推定! • マルコフ連鎖モンテカルロ法 – 推定値をたくさんサンプリングして事後分布を推定 – 複雑な階層モデルでも,比較的安定してベイズ推定 することができる • MCMCを実行できるソフト – stan・・・今日使うのはこれ! – BUGS・・・結構前からある古株ソフト – JAGS・・・BUGSに近い文法の最近のソフト
  70. 70. MCMC
  71. 71. MCMCは何をやっているか • 事後分布をシミュレーションで求める – 事後分布が定常分布となるようなマルコフ連鎖を発 生させる – 各パラメータが推移する確率はいずれ収束し,それ が定常分布=事後分布となる • MCMCにもいろんな方法が – ギブスサンプラー – メトロポリス・ヘイスティング – ハミルトニアンモンテカルロ
  72. 72. MCMC法は何をやっているのか • パラメータの推定値をたくさん計算する – 1000とか2000とか – 推定値をどんどんマルコフ連鎖で生成する • 推定値の集合体が事後分布になる MCMCによる事後分布 解析的に求めた事後分布
  73. 73. MCMCのイメージ 0.38 初期値 0.87 0.76 0.75 マルコフ連鎖に従って乱数が生成 0.45 最初のほうのパラメータは初期値に依存してしまうので, 切り捨てることが多い→バーンイン期間という 初期値から順番に,推定 された値に対応したマル コフ連鎖の推移確率行列 に従ってどんどん値が決 まっていく
  74. 74. 2000回走らせた場合 • バーンイン期間として100個を捨てた – 定常分布=事後分布に収束する
  75. 75. いつになったら収束するのか • 複数のマルコフ連鎖を走らせる – 違う初期値から始まったマルコフ連鎖を比較して, 収束を判断する • 𝑅で判断(stanなどの場合) – 「あーるはっと」と読む – 1になれば収束。1.05以下ぐらいでOKと判断する
  76. 76. 事後分布の要約 • 普通に平均値を計算すればよい – Rだとmean()を使えばすぐ出せる – 平均値0.712 • 標準誤差はSDを計算すればよい – sd()をつかう – SDは0.164 • 95%信用区間 – パーセンタイル点を計算する – quantile(object, probs=c(0.025,0.975))を使う – 0.352~0.957
  77. 77. stanでベイズ推定
  78. 78. stanの紹介 • 今、もっとも開発が熱いMCMC用フリーソフト
  79. 79. stanの特徴 • ハミルトニアンモンテカルロ法を採用 – 階層ベイズのような複雑なモデルでもとても効率 的に収束してくれる • ギブスサンプラーに比べてより広範囲なモデルに対応 • メトロポリスヘイスティングより収束がかなり早い • 変分ベイズ法も採用 – MCMC以外のベイズ推定も可能 – ただ、こちらはまだ発展途上ではある
  80. 80. rstanパッケージ • stanをR上で動かすためのパッケージ – CRANに登録されているため、簡単 – 現在、rstan2.9.0-3が最新 – 動かすためには対応するツールが必要 • WindowsはRtools • MacはXcode • 詳しくはrstanのページ – https://github.com/stan-dev/rstan/wiki/RStan-Getting-Started • stanコードを書いてRに渡す – "*.stan"でコードを保存 – R上でstan(".stan ", data=**)で実行
  81. 81. stanのデモンストレーション
  82. 82. 例:平均値の推定 • Rで正規乱数を発生 >y <- rnorm(100,5,1) #平均5,SD1の乱数を100個 • Stanコードを書く("normal.stan") • Stanを走らせる >fit <- stan(file="normal.stan",data=list(y=y))
  83. 83. MCMCで推定 >traceplot(fit)
  84. 84. 推定結果 • stanの出力 • 平均値の事後分布 >mu <- rstan::extract(fit)$mu >hist(mu)
  85. 85. 要約統計量 • 平均値 >mean(mu) 5.1802 • 95%信用区間 >quantile(mu, probs=c(0.025,0.975)) 4.984144 5.377316 • モード(事後確率最大値) >density(mu)$x[which.max(density(mu)$y)] 5.19473
  86. 86. 平均値の差の推定
  87. 87. 二群の平均値の差の検定 • いわゆるt検定 – ただし,t検定は二群の分散が等しいという仮定 がある – Welchの検定を用いて補正する必要がある • ベイズなら,そんな仮定はいらない – 分散が違っても,それぞれモデリングできる – なんなら分布は正規分布じゃなくてもいい
  88. 88. データ • Rで二つのデータを作る – 母数がN(7,6)のグループと,N(6,2)のグループ – x <- rnorm(100,7,6) – y <- rnorm(100,6,2) • 平均値 – x:平均=7.54 SD=5.95 – y:平均=6.21 SD=2.14
  89. 89. 普通にWelchの検定 >t.test(x,y) t = 2.1043, df = 124.21, p-value = 0.03737 – 5%水準で有意 • 続いてMCMCでやってみる
  90. 90. stanコード
  91. 91. 結果 • Stanの出力 • 差の事後分布 – 平均1.33[0.07, 2.60] – 差があると見てよさそう
  92. 92. 効果量dも計算してみる • Cohenのdの計算 >sigma_p <- (99*(var(x)+var(y))) / 198 >d <- diff / sigma_p^0.5 • dの平均値 >mean(d) 0.296791 • dの事後分布 >hist(d)
  93. 93. 階層ベイズをMCMCで解く • ポアソン分布をベイズで解く – 過分散があるので,困ったな • 負の二項分布を使う – ホームランの分布を計算 • GLMM 階層モデル – ホームランの分布を計算
  94. 94. λの変動を考える • λの確率的な変動を考慮したポアソン分布 – λがガンマ分布(gamma(φ, μφ-1))に従うとする • このとき,混合した確率分布は – 負の二項分布になる • 成功率: p = φ / (μ+φ), 成功数: r=φ
  95. 95. 負の二項分布でHRを推定 • fit1 <- stan(file="hbayes1.stan",data=list(y=dat$HR)) • fit1
  96. 96. ポアソンとガンマの階層ベイズ • fit2 <- stan(file="hbayes2.stan",data=list(y=dat$HR)) • print(fit2,pars=c("m","s"))
  97. 97. 一般化線形混合モデルをMCMCで • stanコードを書かなくても,自動で走らせてくれる • rstanarm – stanチームが作成したパッケージ • brms – lme4のベイズ版を目指したパッケージ • glmmstan – 清水が作ったパッケージ – glmmstanでググってもらえると解説スライドが出てきます
  98. 98. glmmstanについては・・・ • 詳しくはこちらのスライドをご覧ください – glmmstanパッケージを作ってみた – http://www.slideshare.net/simizu706/glmmstan-55104119 • ざっくり説明すると, – glmer()とほぼ同じ文法でglmmをベイズ推定可能 – 分布はfamily = "poisson"というように""で囲む
  99. 99. glmmstanで対数正規分布モデル • 年俸をHRで予測 – library(glmmstan) – fit3 <- glmmstan(salary~HR+(1+HR|team),dat,family="lognormal") – output_result(fit3)
  100. 100. stanコードが知りたい場合 • Cglmmstan()を使う – 最初にCを付けるだけ – code <- Cglmmstan(salary~HR+(1+HR|team),dat, – family="lognormal") – これで中身を確認できる • Dglmmstan()もある – stanに入れる用のデータオブジェクトを作成 – 最初にDを付けるだけ – CとDを使えば,stan()を自分で直接走らせられる
  101. 101. まとめ
  102. 102. 階層ベイズで簡単GLMM • stanを使えば階層ベイズも簡単推定 – 最初は自分でコードを書くのは大変 – ラッパーパッケージを使って慣れていこう • とはいえ,最尤法でも全然問題はない – lme4やnlmeパッケージも使えるようになるとよい – ただ,最尤法の範囲ではその推定が上手くいってい るかどうかがわからない – できれば,両方試して,挙動をチェックするのがよい

×