Dear Bugs list,
I am posting the responses to my inquiry to the bugs list regarding my
previous message, copied below, about Trap 20 (Precondition violated), I
received the following responses, also copied below (THANK YOU!)
In summary, Beta should be restricted to [0,1), as David Spiegelhalter
pointed out. This alone did not solve the problem because of the problem
that Michael Kingsley and Andrew Thomas pointed out with the power
functions. With these changes, I no longer get the precondition violated
trap 20.
Thank you for your kind help!
Sabrina
***********************************************************************
Subject: Re: TRAP 20 (precondition violated)
I am not sure if this relevant, but should beta be restricted between 0
and 1?
David
***********************************************************************
It looks possible that a0 being Normally distributed might be sampled
large negative enough to cause the pow function (in the calc. of predgr)
to be taking a (fractional) power of a negative number. Normal has
long tails, and I can't immediately see what is ensuring that a0 won't get
itself sampled in some inconvenient region.
MK
**************************************************************************
Are you sure that everything you are taking the logarithm of is
positive?
*************************************************************************
Subject: RE: [BUGS] TRAP 20 (precondition violated)
Date: Mon, 2 Oct 2006 11:22:21 +0300
Hei Sabrina,
The first argument of the pow function in the BUGS language must be
positive. The trap message is letting you know that this is not the
case.
You have two pow functions in your model. I suggest putting an extra
variable in your model so that predt <- pos(X, ao) X <- pow(d, OMB) ?
etc
etc and then see if X ever goes negative and if so think why and if
this is
a real possibility for you model. If X must be positive alter your
model so
that it always is...
Moi
Andrew
************************************************************************
Sabrina Russo wrote:
> Dear WinBugs list,
>
> I am running a fairly complicated (at least to me!) hierarchical
model
> that is syntatically correct, compiles, and runs for anywhere from
20-120
> iterations, but then will always result in Trap 20 (error copied
below).
>
> Is there a way to get any information from this Trap message to
isolate
> the problem? I thought the trap might be due to the dlnorm error
> distribution, or the power functions. I tried using a dnorm with and
> without a log scale and using restricted priors on parameters in the
power
> function, but I still get the same trap.
>
> Perhaps the code is a bit too complicated or convoluted to explain
here,
> but if anyone can see any obvious errors or has any suggestions (how
to
> interpret the Trap message?), I would very much appreciate your
input! I
> ran out of ideas!
>
> Regards,
> Sabrina
>
> Model:
>
> model {
> for(i in 1:nmortobs) {
>
> preddt[i] <- pow(pow(d[i], OMB) + alpha[spobs[i]]*OMB*gt[i],
> InvOMB) + a0[spobs[i], gsobs[i]]
> meanlog[i] <- log(preddt[i]) - 1/(2*taugr[spobs[i]])
> dt[i] ~ dlnorm(meanlog[i], taugr[spobs[i]])
> # dt[i] ~ dnorm(preddt[i], taugr[spobs[i]])
>
> theta_dt[i] <- preddt[i] - dt[i]
> predgr[i] <- alpha[spobs[i]]*pow(d[i]-a0[spobs[i], gsobs[i]],
> beta)
>
> Igr[i] <- alpha[spobs[i]]*pow(d[i]-a0[spobs[i], gsobs[i]] -
> theta_dt[i], beta)
> theta_gr[i] <- predgr[i] - Igr[i]
>
> mortobs[i] ~ dbern(pt[i])
> pt[i] <- 1-pow(s[i], t[i])
>
> logit(s[i]) <- b[1,spobs[i]]*theta_gr[i] + b[2,spobs[i]]*d[i] +
mu0
> [spobs[i]] + b0[spobs[i], gsobs[i]]
>
> }
>
> for (i in 1:nsp) {
> b[1,i] ~ dnorm(0, 0.00001)
> b[2,i] ~ dnorm(0, 0.00001)
> mu0[i] ~ dnorm(0, 0.00001)
> alpha[i] ~ dnorm(0, 0.00001)
>
> taugr[i] <-1/(taugr_sigma[i]*taugr_sigma[i])
> taugr_sigma[i] ~ dunif(0.0001,1000)
>
> for (j in 1:ngs){
> a0[i,j]~dnorm(0,taua0)
> meanb0[i,j] <- regcoef*a0[i,j]
> b0[i,j]~dnorm(meanb0[i,j], condprec)
> }
> }
>
> OMB <- 1-beta
> InvOMB <- 1/(1-beta)
> beta ~ dnorm(0, 0.00001)
>
> taub0 <-1/(taub0_sigma*taub0_sigma)
> taub0_sigma ~ dunif(0.0001,1000)
>
> taua0 <-1/(taua0_sigma*taua0_sigma)
> taua0_sigma ~ dunif(0.0001,1000)
>
> rho ~ dunif(-1,1)
>
> condvar <- taub0_sigma*taub0_sigma*(1-rho*rho)
> condprec <- 1/condvar
> regcoef <- rho* taub0_sigma/taua0_sigma
>
> }
>
>
-------------------------------------------------------------------
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
|