混合分布モデルを値のベクトルに当てはめようとしています。混合は、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]]
}
}