mcmcによる回帰分析@ベイズセミナー
TRANSCRIPT
MCMCによる回帰分析
広島大学大学院 教育学研究科学習心理学研究室 D2
山根 嵩史
2014.06.08ベイズ推定による多変量解析入門
自己紹介氏名 : 山根 嵩史所属 : 広島大学大学院 教育学研究科 教育人間科学専攻 学習心理学研究室 (D2)
研究テーマ : メタ記憶,読解方略
Mail : [email protected]
Twitter : @T_Yamane
まずは従来の分析をベイズ推定でやってみましょう
Let’s Bayes!
お品書き
•実践 1: MCMC による回帰分析 (R 編 ) 1-1 MCMCpack を使った単回帰分析 1-2 MCMCpack を使った重回帰分析
•実践 2: MCMC による回帰分析 (Mplus 編 ) 2-1 Mplus を使った単回帰分析 2-2 Mplus を使った重回帰分析
MCMC による回帰分析 (R 編 )
•R でベイズ推定するには >パッケージ多数
> CRAN Task Views にベイズ統計の パッケージをまとめたもの (“Bayesian”) もある
“MCMCpack” が汎用的でオススメ > MCMC による各種の統計解析が実行可能
(RjpWiki “R でベイズ統計学”のページより )
実践 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: 繰り返し回数
実践 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: シード値の設定
実践 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]を参照 )
実践 1-1: MCMCpack を使った単回帰分析•とりあえずこれで走ります
MCMCregress(formula, data )
MCMCregress( Y1~X1 , data = dat )
•従来の回帰分析と同じ書き方!
lm( Y1~X1 , data = dat )
実践 1-1: MCMCpack を使った単回帰分析•入力
1 行目 : 回帰分析を実行し“ MCMC01” に格納plot() 関数 : 事後分布などの図の出力raftery.diag() 関数 : Raftery and Lewis の指標を出力summary() 関数 : 結果の要約を出力
実践 1-1: MCMCpack を使った単回帰分析•出力 ( 事後分布など )
シミュレーション過程 事後分布
シミュレーション過程で値のばらつきがないか,事後分布に歪みがないかなどを見る
実践 1-1: MCMCpack を使った単回帰分析•出力 ( 収束診断 )
Lower bound: 診断のために必要なシミュレーション回数 今回の分析 (Total) がこの回数を満たしているかどうか確認Dependence factor: 自己相関の指標 5 を越えた場合には収束していないと判断される
実践 1-1: MCMCpack を使った単回帰分析•出力 ( 信用区間 )
Quantiles: 信用区間 2.5 %~ 97.5 %の区間で 0 を含んでいなければ有意
実践 1-1: MCMCpack を使った単回帰分析•その他の収束診断の指標Gelman and Rubin の指標 (Rhat)
gelman.diag() 関数で算出
1.1 を越えなければ収束していると見なされる
実践 1-1: MCMCpack を使った単回帰分析•その他の収束診断の指標BF BayesFactor() 関数で算出
ベイズファクターの基準に基づいて判断する
×Boy Friend×Battle Field
従来の回帰分析の結果と比べてみる
そういうもんです
値が微妙に違うんだけど ...
MCMCregress()
lm()
実践 1-2: MCMCpack を使った重回帰分析•とりあえずこれで走ります
MCMCregress( Y1~X1 + Z1, data = dat )
•こちらも従来の重回帰分析と同じ書き方
lm( Y1~X1 + Z1, data = dat )
実践 1-2: MCMCpack を使った重回帰分析•入力
•出力
MCMC による回帰分析 (Mplus 編 )
•Mplus でベイズ推定するには >特別な操作 ( パッケージのインストール やプログラミングなど ) は必要ナシ! >“ Estimator = BAYES;” として,いくつか のコードを追記するだけで OK
実践 2-1: Mplus を使った単回帰分析
•入力 従来の単回帰分析 MCMC による単回帰分析
ANALYSIS コマンドにおいて“ESTIMATOR = BAYS” でベイズ推定を指定“POINT = MEDIAN” で推定する値を指定“CHAIN = 3” でマルコフ連鎖の数を指定“BITERATIONS = (10000)” でシミュレーション回数を指定
実践 2-1: Mplus を使った単回帰分析
•入力 従来の単回帰分析 MCMC による単回帰分析
PLOT コマンドにおいて“TYPE = PLOT2” とすることで 事後分布などのグラフを表示することができる
実践 2-1: Mplus を使った単回帰分析
•出力 ( シミュレーション過程と事後分布 )
出力画面で [plot]→[view plot] からチェック
シミュレーション過程(Bayesian posterior parameter trace
plots)
事後分布(Bayesian posterior parameter
distributions)
実践 2-1: Mplus を使った単回帰分析
•出力 ( 適合度指標 )
事後予測 p値 : 0.0~1.0 の値をとる 中心の 0.5 に近いほど当てはまりが良いDICおよび BIC: 低いほど当てはまりが良い モデル比較の際に用いる
実践 2-1: Mplus を使った単回帰分析
•出力 ( 従来の単回帰分析との比較 )
従来の単回帰分析 MCMC による単回帰分析
実践 2-2: Mplus を使った重回帰分析
•入力 従来の重回帰分析 MCMC による重回帰分析
実践 2-2: Mplus を使った重回帰分析
•出力
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