I had problems to calculate DIC in a model due to parent nodes that have
Bernouilli distribution. Winbugs do not accept discrete parents to
calculate DIC.
I posted this question to the group and I received two answers.
To solve the problem I used a trick substituting a Bernouilli distribution
by Uniform distribution and a round function.
Eg.: J~dbern(p) by
J <- round(aux - 0.5 + p)
aux ~ dunif(0,1)
Using that it was possible to calculate DIC. But I am getting negative
values of pD and DIC.
I would like to have some help from the group about that.
How can I interpret the results for negative pD?
Are the DIC results calculated with negative pD suitable for model
comparision?
The answers that I received and my original question are:
Etienne Rivot wrote:
I encoutered the same problem with other models : this is because you have
discrete distributions in your model ( the bernoulli pdf).
(this is a bug of BUGS !!)
Two solutions :
1) Is it possible to write your model differently, avoiding the use of the
bern pdf, then the DIC tool will be available ?
2) if not possible, you need to calculate the deviance of the posterior
mean of all the unknowns of your model (teta_bar) out of WinBUGS. Use an
other software (as excell for instance) to compute the deviance (i.e.
-2*log(p(data|teta_bar)). To proceed, you have to write by hand the
loglikelihood - but in your case, this should not represent a tedious
task.
Russ Steele wrote:
WinBUGS does not allow for calculation of DIC for mixture models because
it is not clear whether it makes sense for use as a model selection
criterion or even what the best application of it would be. See the
discussion in Spiegalhalter, et al. (2002) in JRSS-B, specifically Grace
Wahba's discussion of mixtures in the context of the galaxy problem.
Original message:
Winbugs does not allow calculation of DIC for this model using the
inference menu.
How can I calculate pd for the model?
model
{
for( i in 1 :200 ) {
for( j in 1 : 36 ) {
S[i,j] ~ dnorm(X[i , j],tau2[i,j])
X[i , j] <- choice1[i, j, index[i,j]]
tau2[i,j] <- choice2[i, j, index[i,j]]
index[i,j] <- pindex[i,j] + 1
pindex[i,j] ~ dbern(pmuda[i])
choice1[i, j, 1] <- 0
choice1[i, j, 2] <- Y[i,j]
choice2[i, j, 1] <- 1.E+20
choice2[i, j, 2] <- tau[i]
Y[i , j] <- (alpha[i]*A[i,j] + w[i] +b[i,j]*J[i,j])
A[i , j] ~ dnorm(0,1)
J[i , j] ~ dbern(p)
b[i , j] ~ dnorm(m,d)
}
tau[i] ~ dgamma(0.001,0.001)
w[i] ~ dnorm(0.0,1.0E-6)
alpha[i] ~ dgamma(1,0.001)
}
m ~ dnorm(0.0,1.0E-6)
d ~ dgamma(0.001,0.001)
p~ dbeta(1,1)
}
Regards,
Fabio W. M. de Andrade
-------------------------------------------------------------------
This list is for discussion of modelling issues and the BUGS software.
For help with crashes and error messages, first mail [log in to unmask]
To mail the BUGS list, mail to [log in to unmask]
Before mailing, please check the archive at www.jiscmail.ac.uk/lists/bugs.html
Please do not mail attachments to the list.
To leave the BUGS list, send LEAVE BUGS to [log in to unmask]
If this fails, mail [log in to unmask], NOT the whole list
|