Version 0中代码的Data不是直接给出的,如果y中还有NA,则编译通不过,总是提示:multiple definitions of nodey[3,1,2]。Version 1中的Data部分是以对y取对数的方式给定的,并在模型中添加了 y[a,b,k] <- exp( logy[a,b,k] ) 语句。此时尽管logy中也有NA,但是,模型编译可以通过。一直没有搞明白导致两者编译结果截然不同的原因到底是什么。哪位能给指导下呢?小生先行谢过了~
#------------------------------------------------------------------------------------------------------------------------------
Version 0 - this code will notwork unless the full data are supplied
#------------------------------------------------------------------------------------------------
model{
#model's likelihood
for (a in 1:LA){
for (b in 1:LB){
for (k in 1:K){
logy[a,b,k] <- log(y[a,b,k])
logy[a,b,k] ~ dnorm( mu[a,b,k], tau )
mu[a,b,k] <- mu0 + econ[a] + gender + econ.gender[a,b]
#mu[a,b,k]<- mu0 + econ[a] + gender
}}}
####CR Constraints
econ[1]<- 0.0
gender[1]<- 0.0
econ.gender[1,1]<-0.0
for(a in 2:LA){econ.gender[a,1]<-0.0}
for(b in 2:LB){econ.gender[1,b]<-0.0}
#priors
mu0~dnorm(0.0, 1.0E-04)
for(a in 2:LA){econ[a]~dnorm( 0.0, 1.0E-04)}
for(b in 2:LB){gender~dnorm( 0.0, 1.0E-04)}
for(a in 2:LA){
for (b in 2:LB){
econ.gender[a,b]~dnorm( 0.0, 1.0E-04)
}}
tau~dgamma( 0.01, 0.01)
s<- sqrt(1/tau) # precision
for(a in 1:LA){
for (b in 1:LB){
mean.spq[a,b] <- mu0 + econ[a] + gender + econ.gender[a,b]
}}
}
INITS
list( mu0=1.0, econ=c(NA, 0,0),gender=c(NA, 0),
econ.gender=structure(.Data=c(NA, NA, NA, 0, NA, 0), .Dim=c(3,2)),tau=1.0 )
#
# this winbugs model will only work withfull data (no NAs)
#
DATA (LIST)
list( LA=3, LB=2, K=2,
y = structure(
.Data=c( 9, 14, 18, 29,
25, 26, 22, 25,
23, 24, 12, 13),
.Dim = c( 3,2,2 )
)
)
#
#
# this winbugs model will not work withmissing
# value
DATA (LIST)
list( LA=3, LB=2, K=2,
y =structure(
.Data=c( 9, 14, 18, 29,
25, 26, 22, 25,
23, NA, 12, NA),
.Dim = c( 3,2,2 )
)
)
DATA (RECT FORMAT)
list( LA=3, LB=2, K=2)
y[,1,1] y[,1,2] y[,2,1] y[,2,2]
9 14 18 29
25 26 22 25
23 NA 12 NA
END
#------------------------------------------------------------------------------------------------------------------------------
Version 1 - data are loaded inlog-scale
#------------------------------------------------------------------------------------------------------------------------------
model{
#model's likelihood
for (a in 1:LA){
for (b in 1:LB){
for (k in 1:K){
y[a,b,k] <- exp( logy[a,b,k] )
logy[a,b,k] ~ dnorm( mu[a,b,k], tau )
mu[a,b,k] <- mu0 + econ[a] + gender + econ.gender[a,b]
#mu[a,b,k]<- mu0 + econ[a] + gender
}}}
####CR Constraints
econ[1]<- 0.0
gender[1]<- 0.0
econ.gender[1,1]<-0.0
for(a in 2:LA){econ.gender[a,1]<-0.0}
for(b in 2:LB){econ.gender[1,b]<-0.0}
#priors
mu0~dnorm(0.0, 1.0E-04)
for(a in 2:LA){econ[a]~dnorm( 0.0, 1.0E-04)}
for(b in 2:LB){gender~dnorm( 0.0, 1.0E-04)}
for(a in 2:LA){
for (b in 2:LB){
econ.gender[a,b]~dnorm( 0.0, 1.0E-04)
}}
tau~dgamma( 0.01, 0.01)
s<- sqrt(1/tau) # precision
for(a in 1:LA){
for (b in 1:LB){
mean.spq[a,b] <- mu0 + econ[a] + gender + econ.gender[a,b]
}}
}
INITS
list( mu0=1.0, econ=c(NA, 0,0),gender=c(NA, 0),
econ.gender=structure(.Data=c(NA, NA, NA, 0, NA, 0), .Dim=c(3,2)),tau=1.0 )
#
#
# the data are directly supplied inlog-scale
DATA (LIST)
list( LA=3, LB=2, K=2,
logy = structure(
.Data=c(2.19722457733622, 2.63905732961526, 2.89037175789616,3.36729582998647, 3.2188758248682, 3.25809653802148, 3.09104245335832,3.2188758248682, 3.13549421592915, NA, 2.484906649788, NA),
.Dim = c( 3,2,2 ) )
)
DATA (RECT FORMAT)
list( LA=3, LB=2, K=2)
logy[,1,1] logy[,1,2] logy[,2,1]logy[,2,2]
2.197225 2.639057 2.890372 3.367296
3.218876 3.258097 3.091042 3.218876
3.135494 NA 2.484907 NA
END