狠狠撸

狠狠撸Share a Scribd company logo
MCMCによる回帰分析
広島大学大学院 教育学研究科
学習心理学研究室 D2
山根 嵩史
2014.06.08
ベイズ推定による多変量解析入門
自己紹介
氏名 : 山根 嵩史
所属 : 広島大学大学院 教育学研究科
教育人間科学専攻 学習心理学研究室 (D2)
研究テーマ : メタ記憶,読解方略
Mail : t.yamane1969@gmail.com
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でベイズ推定するには
>パッケージ多数
>CRANTaskViewsにベイズ統計の
パッケージをまとめたもの
(“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を使った重回帰分析
?入力 従来の重回帰分析 惭颁惭颁による重回帰分析
実践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

More Related Content

惭颁惭颁による回帰分析蔼ベイズセミナー

Editor's Notes

  1. ?声量确认
  2. ?当然搁と尘辫濒耻蝉をお使いですよね?