mcmcによる回帰分析@ベイズセミナー

27
MCMC ににににににに 広広広広広広広 広広広広広広 広広広広広広広広 D2 広広 広広 2014.06.08 広広広広広広広広広広広広広広広

Upload: takashi-yamane

Post on 24-Jun-2015

3.775 views

Category:

Data & Analytics


9 download

TRANSCRIPT

Page 1: MCMCによる回帰分析@ベイズセミナー

MCMCによる回帰分析

広島大学大学院 教育学研究科学習心理学研究室  D2

山根 嵩史

2014.06.08ベイズ推定による多変量解析入門

Page 2: MCMCによる回帰分析@ベイズセミナー

自己紹介氏名 : 山根 嵩史所属 : 広島大学大学院 教育学研究科    教育人間科学専攻 学習心理学研究室 (D2) 

研究テーマ : メタ記憶,読解方略 

Mail : [email protected] 

Twitter :     @T_Yamane

Page 3: MCMCによる回帰分析@ベイズセミナー

まずは従来の分析をベイズ推定でやってみましょう

Let’s Bayes!

Page 4: MCMCによる回帰分析@ベイズセミナー

お品書き

•実践 1: MCMC による回帰分析 (R 編 )  1-1 MCMCpack を使った単回帰分析  1-2 MCMCpack を使った重回帰分析 

•実践 2: MCMC による回帰分析 (Mplus 編 )  2-1 Mplus を使った単回帰分析  2-2 Mplus を使った重回帰分析

Page 5: MCMCによる回帰分析@ベイズセミナー

MCMC による回帰分析 (R 編 )

•R でベイズ推定するには >パッケージ多数

 > CRAN Task Views にベイズ統計の  パッケージをまとめたもの   (“Bayesian”) もある

“MCMCpack” が汎用的でオススメ > MCMC による各種の統計解析が実行可能

(RjpWiki “R でベイズ統計学”のページより )

Page 6: MCMCによる回帰分析@ベイズセミナー

実践 1-1: MCMCpack を使った単回帰分析•MCMCpack の MCMCregress() 関数を使用

MCMCregress(formula, data, burnin = 1000, mcmc = 10000,         thin = 1, verbose = 0, seed = NA, beta.start = NA,         b0 = 0, B0 = 0, c0 = 0.001, d0 = 0.001,         sigma.mu = NA, sigma.var = NA,         marginal.likelihood = c("none", "Laplace", "Chib95"), ...)

formula: 回帰モデル ,  data: データの指定burnin: バーンイン期間 , mcmc: 繰り返し回数

Page 7: MCMCによる回帰分析@ベイズセミナー

実践 1-1: MCMCpack を使った単回帰分析•MCMCpack の MCMCregress() 関数を使用

MCMCregress(formula, data, burnin = 1000, mcmc = 10000,         thin = 1, verbose = 0, seed = NA, beta.start = NA,         b0 = 0, B0 = 0, c0 = 0.001, d0 = 0.001,         sigma.mu = NA, sigma.var = NA,         marginal.likelihood = c("none", "Laplace", "Chib95"), ...)

thin: 推定に用いる値のサンプリング間隔verbose: 途中経過を表示するタイミングseed: シード値の設定

Page 8: MCMCによる回帰分析@ベイズセミナー

実践 1-1: MCMCpack を使った単回帰分析•MCMCpack の MCMCregress() 関数を使用

MCMCregress(formula, data, burnin = 1000, mcmc = 10000,         thin = 1, verbose = 0, seed = NA, beta.start = NA,         b0 = 0, B0 = 0, c0 = 0.001, d0 = 0.001,         sigma.mu = NA, sigma.var = NA,         marginal.likelihood = c("none", "Laplace", "Chib95"), ...)

b0: 事前分布の平均 ,   B0: 事前分布の分散c0: 逆ガンマ分布の shapeパラメータd0: 逆ガンマ分布の scaleパラメータ

(その他の引数については参考文献 [1]を参照 )

Page 9: MCMCによる回帰分析@ベイズセミナー

実践 1-1: MCMCpack を使った単回帰分析•とりあえずこれで走ります

  MCMCregress(formula, data )

  MCMCregress( Y1~X1 , data = dat )

•従来の回帰分析と同じ書き方!

  lm( Y1~X1 , data = dat )

Page 10: MCMCによる回帰分析@ベイズセミナー

実践 1-1: MCMCpack を使った単回帰分析•入力

1 行目 : 回帰分析を実行し“ MCMC01” に格納plot() 関数 : 事後分布などの図の出力raftery.diag() 関数 : Raftery and Lewis の指標を出力summary() 関数 : 結果の要約を出力

Page 11: MCMCによる回帰分析@ベイズセミナー

実践 1-1: MCMCpack を使った単回帰分析•出力 ( 事後分布など ) 

シミュレーション過程 事後分布

シミュレーション過程で値のばらつきがないか,事後分布に歪みがないかなどを見る

Page 12: MCMCによる回帰分析@ベイズセミナー

実践 1-1: MCMCpack を使った単回帰分析•出力 ( 収束診断 ) 

Lower bound: 診断のために必要なシミュレーション回数      今回の分析 (Total) がこの回数を満たしているかどうか確認Dependence factor: 自己相関の指標       5 を越えた場合には収束していないと判断される

Page 13: MCMCによる回帰分析@ベイズセミナー

実践 1-1: MCMCpack を使った単回帰分析•出力 ( 信用区間 ) 

Quantiles: 信用区間      2.5 %~ 97.5 %の区間で 0 を含んでいなければ有意

Page 14: MCMCによる回帰分析@ベイズセミナー

実践 1-1: MCMCpack を使った単回帰分析•その他の収束診断の指標Gelman and Rubin の指標 (Rhat)

gelman.diag() 関数で算出

1.1 を越えなければ収束していると見なされる

Page 15: MCMCによる回帰分析@ベイズセミナー

実践 1-1: MCMCpack を使った単回帰分析•その他の収束診断の指標BF  BayesFactor() 関数で算出

ベイズファクターの基準に基づいて判断する

×Boy Friend×Battle Field

Page 16: MCMCによる回帰分析@ベイズセミナー

従来の回帰分析の結果と比べてみる 

そういうもんです

値が微妙に違うんだけど ...

MCMCregress()

lm()

Page 17: MCMCによる回帰分析@ベイズセミナー

実践 1-2: MCMCpack を使った重回帰分析•とりあえずこれで走ります

  MCMCregress( Y1~X1 + Z1, data = dat )

•こちらも従来の重回帰分析と同じ書き方

  lm( Y1~X1 + Z1, data = dat )

Page 18: MCMCによる回帰分析@ベイズセミナー

実践 1-2: MCMCpack を使った重回帰分析•入力

•出力

Page 19: MCMCによる回帰分析@ベイズセミナー

MCMC による回帰分析 (Mplus 編 )

•Mplus でベイズ推定するには >特別な操作 ( パッケージのインストール  やプログラミングなど ) は必要ナシ! >“ Estimator = BAYES;” として,いくつか  のコードを追記するだけで OK

Page 20: MCMCによる回帰分析@ベイズセミナー

実践 2-1: Mplus を使った単回帰分析

 •入力 従来の単回帰分析 MCMC による単回帰分析

ANALYSIS コマンドにおいて“ESTIMATOR = BAYS” でベイズ推定を指定“POINT = MEDIAN” で推定する値を指定“CHAIN = 3” でマルコフ連鎖の数を指定“BITERATIONS = (10000)” でシミュレーション回数を指定

Page 21: MCMCによる回帰分析@ベイズセミナー

実践 2-1: Mplus を使った単回帰分析

 •入力 従来の単回帰分析 MCMC による単回帰分析

PLOT コマンドにおいて“TYPE = PLOT2” とすることで 事後分布などのグラフを表示することができる

Page 22: MCMCによる回帰分析@ベイズセミナー

実践 2-1: Mplus を使った単回帰分析

 •出力 ( シミュレーション過程と事後分布 )

出力画面で [plot]→[view plot] からチェック

シミュレーション過程(Bayesian posterior parameter trace

plots)

事後分布(Bayesian posterior parameter

distributions)

Page 23: MCMCによる回帰分析@ベイズセミナー

実践 2-1: Mplus を使った単回帰分析

 •出力 ( 適合度指標 )

事後予測 p値 : 0.0~1.0 の値をとる      中心の 0.5 に近いほど当てはまりが良いDICおよび BIC: 低いほど当てはまりが良い      モデル比較の際に用いる

Page 24: MCMCによる回帰分析@ベイズセミナー

実践 2-1: Mplus を使った単回帰分析

 •出力 ( 従来の単回帰分析との比較 )

従来の単回帰分析 MCMC による単回帰分析

Page 25: MCMCによる回帰分析@ベイズセミナー

実践 2-2: Mplus を使った重回帰分析

 •入力 従来の重回帰分析 MCMC による重回帰分析

Page 26: MCMCによる回帰分析@ベイズセミナー

実践 2-2: Mplus を使った重回帰分析

 •出力

Page 27: MCMCによる回帰分析@ベイズセミナー

Let’s Bayes!

参考文献  [1]Martin, A. A. D., Quinn, K. M., Park, J. H., Jong, M., & Park, H.       (2013). Package “ MCMCpack ”, (Mcmc).

  [2] 小杉考司・清水裕士 ( 編著 ) (2014). Mplus と R による   構造方程式モデリング入門 北大路書房 , pp. 245-261