Rで混合ベイズ回帰のギブスサンプラーを構築する方法は?

Nov 30 2020

私は3つのパラメーターのギブスサンプラーに取り組んでおり、3つのパラメーターの完全な条件付き分布を知っています。

回答

TrungDung Nov 30 2020 at 11:05

注:これは単なるコメントですが、長いコードを引用するために、ここに配置します。

for (ite in 2:NSim){
#Full conditional for pi

 pi[ite]=rbeta(1, sum(delta[ite-1,])+0.5, sum(1-delta[ite-1,])+0.5)

 #Full conditional for delta
 for(j in 1:4){
  p1=pi[ite]*exp(-beta[ite-1,j]^2/(20))
  p0=((1-pi[ite])*10^3)*exp(-500*beta[ite-1,j]^2)
  cat('\n',ite,j,(p1/(p0+p1)))
  delta[ite,j]=rbinom(1, 1,prob=(p1/(p0+p1)))
  }

エラーは多分それを言います $p1$ そして $p0$NAです。このタイプのエラーをチェックしたときの私の経験はそれです。forループの代わりに、$ite=2$ そして $j=1$。数式としてp1とp0を計算します。NAであるかどうかを注意深く確認してください。コードが対称である場合$iter$ そして $j$、この場合のエラーを修正できれば、これを渡します。