2

混合分布モデルを値のベクトルに当てはめようとしています。混合は、2 つのガウス分布と 1 つの一様分布で構成される必要があります。これをWinbugsに実装しようとしています。ガウスの混合物を使用した例をたくさん見つけましたが、ユニフォームを追加する方法がわかりません。以下のコード ペーストは現在、0 から 1 の間でスケーリングされた値のベクトルに適合するようにパラメーター化されていますが、「ノード NSD[1] の複数の定義」が得られるため、私の構造はまだ間違っているようです。助言がありますか?

model{

   ## priors
    xmin~dunif(0,1)
    eps2~dunif(0,1)
    xmax<-min(xmin+eps2, 1)
    mu1~dunif(0,1)
    eps1~dunif(0,1)
    mu2<-min(mu1+eps1,1)

   sigma1 ~ dunif(0,.5)     
   sigma2 ~ dunif(0,.5)     
   tau1<-pow(sigma1,-2)
   tau2<-pow(sigma2,-2)
   alpha[1]<-1
   alpha[2]<-1
   alpha[3]<-1
   p.state[1:3]~ddirch(alpha[])

   for (t in 1:npts) {
     idx[t] ~ dcat(p.state[])   ##  idx is the latent variable and the parameter index
     x[t,1]~dnorm(mu1,tau1)
     x[t,2]~dnorm(mu2,tau2)
     x[t,3]~dunif(xmin,xmax) 

      NSD[t] <-x[t,idx[t]]    
      }
} 
4

1 に答える 1