楼上那位高手真热心,不好意思啊,我这也有个关于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:4],beta[1:4 , i])
}
}
for( i in 1 : I ) {
beta[1:4 , i] ~ dmnorm(mu[1:4 , i],R[1:4 , 1:4])
}
tau ~ dgamma(0.001,0.001)
sigama <- 1 / sqrt(tau)
for( i in 1 : I ) {
mu[1:4 , i] <- inprod(gaba[1:4 , 1:3],z[1:3 , i])
}
R[1:4 , 1:4] ~ dwish(omega,4)
gaba[1:4 , 1:3]~ dmnorm(mean,pre)
}
这里面有个问题就是矩阵gaba[1:4,1:3]我在文中给它的先验分布是服从矩阵正态分布,可是没有相关的code,
)
很多资料中他们先将这个矩阵进行向量化算子,就是vec(gaba),然后再让他服从vec(gaba)~dmnorm(mean,pre),不知道这一步怎么处理,而且这边弄不好的话,下面的data load老是不对,
list(J=8,I=10,
x=structure(.Data=c(1,1,1,1,1,2,1,2,2,0,0,1,1,0,0,0,0,2,1,1,2,1,1,0,1,0,1,1,1,1,0,0),.Dim = c(8,4)),
z = structure(.Data = c(1,1,1,1,0,0,1,0,0,1,10,36,17,21,70,54,64,40,31,25,600,3000,3000,2500,2000,4000,800,1300,1500,1000),
.Dim = c(3,10)),
mean=structure(.Data=c(0,0,0,
0,0,0,
0,0,0,
0,0,0),Dim=c(4,3)),(这块老显示expected a number or an NA)
pre=structure(.Data=c(0.001,0,0,0,0,0,0,0,0,0,0,0,
0,0.001,0,0,0,0,0,0,0,0,0,0,
0,0,0.001,0,0,0,0,0,0,0,0,0,
0,0,0,0.001,0,0,0,0,0,0,0,0,
0,0,0,0,0.001,0,0,0,0,0,0,0,
0,0,0,0,0,0.001,0,0,0,0,0,0,
0,0,0,0,0,0,0.001,0,0,0,0,0,
0,0,0,0,0,0,0,0.001,0,0,0,0,
0,0,0,0,0,0,0,0,0.001,0,0,0,
0,0,0,0,0,0,0,0,0,0.001,0,0,
0,0,0,0,0,0,0,0,0,0,0.001,0,
0,0,0,0,0,0,0,0,0,0,0,0.001),.Dim=c(12,12)),
omega=structure(.Data = c(0.1,0,0,0,0,0.1,0,0,0,0,0.1,0,0,0,0,0.1),.Dim = c(4,4)),
y = srtucture(.Data = c(1,2,3,4,5,6,7,8,
3,5,4,3,6,7,1,2,
2,2,5,2,4,3,2,3,
2,7,4,3,2,7,5,2,
3,5,2,5,6,5,3,2,
1,2,3,4,7,5,4,1,
2,3,4,2,2,3,7,1,
1,4,2,7,5,4,2,6,
2,3,7,5,4,3,2,4,
2,1,3,4,2,4,5,2),
.Dim(10,8)),
高手帮忙看下到底问题出在哪里,怎么解决呢,万分感谢!!!