階層ベイズのモデル比較、DICを実装 [階層ベイズ]
階層ベイズモデルのモデル比較をどうするか?
通常のglmなどのモデルでは、AICやBICといった基準がありますが、階層ベイズにはAIC, BICを直接適用することはできません。
Deviance Information Criterion(以下、DIC)を使ってモデル比較をすることができます。
以下、その実装方法。
1) Burn-In以降のパラメータを抽出します。
必要なのは、イテレーションごとに、個人ごとのβと対数尤度を保存。
DIC = mean.Deviance + pD
pD <- mean.Deviance - mean_para.Deviance
Deviance = -2 log p(y|θ) の定義はこちら(↓)。
mean.Deviance
各イテレーションごとに保存しておいた対数尤度の平均から計算します。
mean_para.Deviance
イテレーションごとに、個人ごとのβの平均値を計算。
この平均値とデータから、再度、尤度を計算します。
通常のglmなどのモデルでは、AICやBICといった基準がありますが、階層ベイズにはAIC, BICを直接適用することはできません。
Deviance Information Criterion(以下、DIC)を使ってモデル比較をすることができます。
以下、その実装方法。
1) Burn-In以降のパラメータを抽出します。
必要なのは、イテレーションごとに、個人ごとのβと対数尤度を保存。
DIC = mean.Deviance + pD
pD <- mean.Deviance - mean_para.Deviance
Deviance = -2 log p(y|θ) の定義はこちら(↓)。
mean.Deviance
各イテレーションごとに保存しておいた対数尤度の平均から計算します。
mean_para.Deviance
イテレーションごとに、個人ごとのβの平均値を計算。
この平均値とデータから、再度、尤度を計算します。
コメント 0