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.

MCMCでマルチレベルモデル

13,595 views

Published on

広島大学で行われた,ベイズ推定による多変量解析入門WSで発表した資料です。階層線形モデルをベイズ推定する話についてまとめています。
発表者のWebサイト:norimune.net

Published in: Science

MCMCでマルチレベルモデル

  1. 1. MCMCでマルチレベルモデル 広島大学 清水裕士
  2. 2. 自己紹介 • 清水裕士です。 • 専門は社会心理学です。 • 趣味は心理統計です。 • Twitterアカウント: @simizu706 • Webサイト: http://norimune.net
  3. 3. ここでの話題 • マルチレベルモデルについて – 階層線形モデル(HLM) • Hierarchical Linear Model • HLMをベイズ推定する意義 – 最尤法と比較して • ソフトウェアを使ってHLMをやってみよう – Rstanとglmer2stan関数を使うととても楽チン – Mplusだともっと楽チン
  4. 4. マルチレベルモデルとは • 階層性を持ったデータを扱う分析手法 – 集団(国,企業,チーム,家族・・・)に複数の人が所 属しているようなデータ – 個人から反復測定したデータ – カテゴリごとに局所的な類似性があるデータ • 同じ株の花の特徴は,ほかの株のものより似ている • 今回扱うのは,線形モデルに限定 – 社会科学でいうところの,階層線形モデル(HLM) – 一般的には,一般(化)線形混合モデル(GLMM)
  5. 5. 個人-集団データの階層性 • データの階層性 – 集団ごとにネストされたデータ – 集団ごとに共通した値が入力されるデータ – 集団内で類似したデータ • 学校-生徒、カップルデータ、反復測定データ・・・etc このようなデータを階層的データと呼ぶ 5
  6. 6. サンプルデータ紹介 • 仮想的なデータを利用 – 3人集団が集団討議を行う実験(100集団300人) • ※実際に実験は行っていません! – 何が課題満足を高める要因となるのか? • 測定変数 – 発言量 →録音してコーディング – 課題の満足度 →実験後測定 – 集団成績 →集団単位で採点 – 課題満足度は,個人の発言量と,集団成績で予測 6
  7. 7. 階層的データ 例:サンプルデータの場合 集団で一致したデータ 集団で類似したデータ 7
  8. 8. 集団単位で平均したデータ 8
  9. 9. 従来の回帰分析で分析する問題 • 「サンプルの独立性仮定」の違反 – 回帰分析は、サンプルが独立していることを仮定 • 階層的データは、サンプルが独立していない • 推定値にバイアスが生じる • 標準誤差を小さく見積もってしまう – →タイプⅠエラーを犯す危険がある • 集団平均は集団の性質を完全には反映しない – 集団平均には集団の性質と個人の性質が混在 • 得られた回帰係数が何を表しているか不明 – 個人レベルと集団レベルの回帰係数が混ざった推定値になる • 集団内人数が少ないときほど、この問題は大きい 9
  10. 10. グループ内類似性を評価する • 個人-集団データのグループ内類似性 – 発言量や満足度は、個々の集団内で類似する – →盛り上がっている集団は全員の発話量が多い • グループ内類似性が階層的データの特徴 – 個人の得点同士に類似性が見られることによっ て、サンプルの独立性が違反される – 類似性を適切に扱えば、問題は回避される 10
  11. 11. 級内相関係数 • グループ内の類似性を評価するための指標 – -1~1の間を取る – 有意性検定の結果を確認 – .10以上あれば、マルチレベルモデルを行ったほ うがよい、という説もある。 11
  12. 12. 階層的データのまとめ • 集団ごとにネストされている,非独立なデータ – その本質は,級内相関が存在するデータ – ネストされていればすべてがマルチレベルモデルの 対象になるわけではない • 回帰分析では,誤った結果・解釈を得てしまう – 推定精度を高く見積もりすぎる → TypeⅠエラー – 推定された回帰係数は,集団単位・個人単位の効果 が混在する • そこで,マルチレベルモデルが必要 12
  13. 13. 階層線形モデル • データの階層性を考慮した回帰分析 – 残差の集団間変動を推定する • 集団単位の変動と個人単位の変動を分離 • 残差の独立性を保証する – さらに,回帰係数の集団間変動も推定できる • 集団ごとに異なる予測が可能 → 予測力向上 • 回帰係数の分散を推定 → 集団間変動の程度を評価 • 一般的には最尤法が用いられる – 最尤法と制限付き最尤法
  14. 14. 普通の回帰分析 切片a 回帰係数b 1単位
  15. 15. 複数のグループの回帰分析 100個の回帰直線 Aグループ Bグループ ・ ・ ・ 100回も回帰分析をするの・・・?
  16. 16. HLMによる回帰直線 切片の集団間変動 固定効果(平均) 変量効果(分散) 変量効果・・・集団ごとに異なる値
  17. 17. HLMによる回帰直線2 切片と回帰係数の集団間変動 固定効果(平均) 変量効果(分散) 変量効果(分散)
  18. 18. RでHLMをやってみる • 発言量が個人単位の変数 – talk・・・個人レベルの変数は集団内平均で中心化 • まず,talk_mという集団内平均データを作成 • talkからtalk_mを引いて,talk_gという変数名で保存 • パフォーマンスが集団単位の変数 – per・・・集団レベルの変数は全体平均で中心化
  19. 19. 最尤法でHLM • RではlmerTestパッケージが便利 – lme4パッケージのlmer関数を使い,さらに係数の 検定ができるように改良 – REML=Tで制限付き最尤法,Fで最尤法 – ()内は変量効果(集団間変動)を意味する • 1は切片,talk_gは発言量の回帰係数の集団間変動 • |groupは,groupが集団IDであることを意味する
  20. 20. 最尤法の結果 • 固定効果(Fixed effects) – talk_g=0.201 p < .05 perの効果 0.194 p < .01 • 変量効果(Random effects)の標準偏差 – 切片= 0.557 talk_g = 0.416 ・・・集団間変動
  21. 21. 最尤法でHLMを推定する限界 • 「データ」が正規分布である必要がある – 分布がゆがんでいる場合,推定値にバイアスが生じる • 変量効果の分散(SD)が不偏推定量ではない – 小標本で,変量効果の分散推定値にバイアス • グループ間変動をより小さく推定してしまう • 推定値の分布に正規分布を仮定 – 小標本では,推定精度を高く見積もりすぎる • 最小二乗法ではt分布を使うことを思い出そう – 分散は非負なので,一般に正規分布にならない • 集団間変動についての正しい区間推定ができない
  22. 22. そこで頼れるのがベイズ推定 • データの正規性の仮定は不要 – ただし,モデルによる仮定がなくなるわけではない • 小標本でも,妥当な分析が可能 – 集団間変動の過小推定のバイアスなどはない – 事前分布を上手く使えば,より効率的に推定が可能 • 推定値の分布は正規分布でなくてよい – 分散成分の区間推定がより現実的なものになる
  23. 23. ※MCMCは推定アルゴリズム • 最尤法,ベイズ法などは最適化の基準 – 最小二乗法・・・誤差の二乗和を最小にする – 最尤法・・・尤度を最大にする – ベイズ法・・・ベイズの定理による事後分布 • MCMCは最適化するためのアルゴリズム – 最尤法では,ニュートン法やEMアルゴリズム – ベイズ法では,MCMC法や変分ベイズなど
  24. 24. ベイズ推定が可能なソフトウェア • Mplus – 商用ソフトウェア – とても高性能 • R – 無償のソフトウェア – いくつかの選択肢がある(後述) • Amos – 商用ソフトウェア – SEM専用なので,HLMについては実行できない • Stan – 無償のソフトウェア – Rと連携させることができる(後述)
  25. 25. RでHLMをベイズ推定する • RでHLMをMCMCをしたい! – MCMCglmmパッケージ • 比較的簡単にMCMCでHLMを含む複雑なモデルを推定可 • ただし,回帰係数の集団間変動を推定するとかなりの確率 でサンプリングができなくなる – 切片と回帰係数の変量効果の共分散を推定しないと走る • もっと安定した分析はできないか・・・? – rstanパッケージ • StanをR上で動かすためのパッケージ • MCMCglmmに比べてかなり安定している印象 • 今回はこちらを紹介
  26. 26. Stanを使ってMCMC • Stanとは – MCMC推定をするためのソフト – 任意のモデルをMCMCで推定してくれる • rstanパッケージを使おう – StanをR上で動かすことができる – 準備は大変だけど,Webを見ればなんとかなる • WindowsとMacで準備するものが変わるので注意 • 「Rstan インストール」でググれば出てくる
  27. 27. インストールできたとして・・・ • RからStanにデータとモデルコードを送る – Stanコードで宣言している変数にあったデータセットを リスト型で作成 • StanでMCMC – stan()関数でstanにモデルとデータを送る • 結果をRに戻す – 得た結果はオブジェクトごとにRで活用できる
  28. 28. Stanコード例(階層線形モデル) R言語しか知らないユー ザーにとってはちょっと敷 居が高いかもしれない (しかも,くそなげぇよ)
  29. 29. まだあわてるような時間じゃない • glmer2stan()パッケージ! – R上でglmer()の文法で書いたものを,自動的に stanコードに直して,Stanに送ってくれる – ・・・・すげぇー便利! – 結果要約はsummary()ではなく,stanmer()を使う – stanの出力を見たい場合は,print()で。
  30. 30. さっそくglmer2stan()で走らせる • モデルをStanコードに変更し,コンパイル – 場合によってはエラーも出る • ただし,informational messageはエラーではない – しばらくすると,計算が終わる • 結構時間かかる・・・このデータ・モデルで1分ぐらい?
  31. 31. MCMCによるHLM結果
  32. 32. 収束しているかどうかの判断 • print()で見る ※digits(表示桁数)を3以上推奨 • 結果は以下の通り – meanが点推定値,sdが推定精度(標準誤差) – Rhatが収束基準 • 1に近いと収束している • 一般に,Rhat < 1.05なら収束 中 略
  33. 33. 推定値の事後分布 • codaパッケージを使う
  34. 34. 最尤法とMCMCの結果比較 • 最尤法の結果 – talk_g = 0.201, 95%CI [0.039 ~ 0.364] – per = 0.194 95%CI [0.117 ~ 0.271] – 切片のSD= 0.557, talk_gのSD = 0.416 • MCMCの結果 – talk_g = 0.199 95%CI [0.029 ~ 0.370] – per = 0.193 95%CI [0.112 ~ 0.283] – 切片のSD= 0.595, talk_gのSD = 0.506 • 結果比較 – 固定効果の推定値はかなり近い値(ただし,CIは違う) • CIについては,MCMCのほうがおそらく妥当な推定 – 集団間変動の推定値は,MCMCのほうが大きい • MCMCのほうが正しい
  35. 35. glmer2stan()を使う上での注意点 • warmup = ・・・バーンインの回数 – 全サンプリング回数の半分が上限 • iter = ・・・サンプリング回数 バーンイン含む – 基本的には多いほうがいい – stanは収束が早いので,BUGSよりは小さめでもいい? • chain = ・・・マルコフ連鎖の数 1つがデフォルト – 推定値の安定さを考えると,2以上にしたほうが無難 – ただし,倍の時間がかかる • calcWAIC = ・・・ TRUEにすると,WAICを出力 – WAIC・・・広く使える情報量基準(Widely Applicable Information Criterion) なかなか良い性能らしい。
  36. 36. glmer2stan()を使う上での注意点 • 整数のみの変数の場合 – なぜか,family=“gaussian”にするとエラー – データ入力するときに,小数点を入れておくと回避で きる(つまり,5ではなく5.0と入れておく) • 切片と回帰係数の変量効果を推定するとき – こういうメッセージがよく出る – しかしこれはエラーではないらしい。 • 一応結果もちゃんと出るし,ほかのソフトとも一致する
  37. 37. じゃあもう,glmer2stan()でいい? • ほぼすべての線形モデルを包含 – 回帰分析,分散分析もOK! – 正規,ロジット,ポアソン,順序,ガンマ分布など 幅広くOK! – 複数の変量効果を含んでいてもOK! • 一概にそうとはいえない – 事前分布をきめ細やかに設定できない – stanコードを自分で書けるようになるのがベスト
  38. 38. Mplusという選択肢 • めちゃくちゃ高性能 ただし,有料 – SEM,HLM,IRT,マルチレベルSEM,潜在クラス分析 • 最尤法,ベイズ法 with MCMCの両方が可能 – 同じモデルで,推定法だけを変えることができる • 計算が信じられないぐらい速い – rstanで1分かかるのが,Mplusだと5秒で終わる – コアをchainごとに分けられるので,さらに速い • モデルの記述がとても簡単 – stanだとかなり煩雑なモデルも数行で書ける
  39. 39. MplusによるHLMのコード • だいたいこんなもん – 本当はもうちょっとあるけど
  40. 40. Mplusの出力 • 分散成分の事後分布 – 赤が平均,青が95%信用区間
  41. 41. 【宣伝】日本語解説本もあるらしい 【乙】 小杉・清水(2014) MplusとRによる構造 方程式モデリング入門 北大路書房
  42. 42. ベイズ推定の一長一短 • ベイズ推定の利点 – 複雑なモデルでも,妥当な推定が可能 • 階層線形モデルの分散成分 • 従属変数が正規分布にならないようなモデル(一般化線形混 合モデル)も推定できる • ベイズ推定(with MCMC)の欠点 – 推定に時間がかかる • 最尤法に比べてかなり遅い – モデルの仮定に対する逸脱を補正する方法がイマイチ • 最尤法のほうが,そのあたりは進んでいる • 理論的には可能みたいだけど,実装には至っていない
  43. 43. Let’s Bayes! 広島大学 清水裕士 @simizu706 norimune.net

×