各位,我这有个关于运用winbugs来构建多层贝叶斯模型的问题,模型如下所示:
Yij=∑βik*Xjk+εij=xj’βi+εij
其中:
xj=(x1,x2,…xk)j’ j=1,2…J
βi=(β1,β2,…βk)i’ i=1,2…I
εij~N(0,δ2)
先验分布:
βi=Γ*Ζi+ζi i=1,2…I
ζi~Nk(0,Σ)
Ζi=(Z1,Z2,…Zm)i’
Γ为k﹡m 矩阵
2层先验分布
Γ~Nk*m(w,W);Σ-1~Wishart(v,V)
如上部分是假设Γ该矩阵是服从矩阵正态分布,也就是
vec(Γ)~Nkm*1(vec(w),W)
但这个公式在winbugs中无法实现,目前我是这样建的:
model;
{
for( j in 1 : J ) {
for( i in 1 : I ) {
y[i , j] ~ dnorm(mu[i , j],tau)
}
}
for( j in 1 : J ) {
for( i in 1 : I ) {
mu[i , j] <- inprod(x[j , 1:k],beta[1:k , i])
}
}
for( i in 1 : I ) {
beta[1:k , i] ~ dmnorm(mu[1:k , i],R[1:k , 1:k])
}
tau ~ dgamma(0.001,0.001)
sigama <- 1 / sqrt(tau)
for( i in 1 : I ) {
mu[1:k , i] <- inprod(gaba[1:k , 1:m],z[1:m , i])
}
R[1:k , 1:k] ~ dwish(omega,k)
gaba[1:k , 1:m]~ dmnorm(mean,pre)
}
这里面有个问题就是矩阵gaba[1:k,1:m]我在文中给它的先验分布是服从矩阵正态分布,可是没有相关的code,
很多资料中他们先将这个矩阵进行向量化算子,就是vec(gaba),然后再让他服从vec(gaba)~dmnorm(mean,pre),不知道这一步怎么处理,而且这边弄不好的话,下面的data load老是不对,
不知道哪位高手能帮我解决一下这个问题啊,谢谢啊,急求[s:15][s:15][s:15]!