Print

Print


Hello WinBUGS users.

 

I am hoping to use WinBUGS for my model. I have done the modelling, but
I am a bit suspicious about the output. 

Hence it'll be of great help if someone can please point out if my
WinBUGS code is correct wrt to the theoretical model.

 

Model:

w[j] ~ Mixture of exponential distributions with parameters lambda[1]
and lambda[2] and P decides the probability of w[j] being generated from
either of the exponential distributions.

Some of the w[j] values are censored due to which I have to use dweib(1,
mu[j]) instead of a simple exponential distribution. From the tutorial
it seemed to me that the Weibull distribution supports censoring.

 

Now some of the w[j]'s are generated from a single exponential
distribution instead of the mixture. My confusion is regarding the
WinBUGS code that handles this. I am doing it in the following manner.

The first observation is generated from the mixture.

Now w[j] is generated from only a single exponential distribution under
the following conditions:

For every w[j], there is a corresponding cen[j] which equals to 0 and

cen[j-1] does not equal to 0. 

 

Also I have the variable M[j] that decides which of the exponential
distribution generates the data. I use it as:

Mod[j] <- equals(cen[j], 0)*(1 - equals(cen[j-1], 0)) + (1 -
equals(cen[j], 0)*(1 - equals(cen[j-1], 0)) )*M[j]

The first part is 1 if both the conditions are fulfilled and Mod[j]  is
assigned the value 1, otherwise the values is assigned based on M[j].

 

The complete WinBUGS model is as follows:

 

model

{

 

      for (j in 1 : 1)

      {

            w[j] ~ dweib(1, mu[j]) I(cen[j], )

            mu[j] <- lambda[M[j]]

            M[j] ~ dcat(P[])

      }

 

      for (j in 2 : T)

      {

            w[j] ~ dweib(1, mu[j]) I(cen[j], )

            mu[j] <- lambda[Mod[j]]

            Mod[j] <- equals(cen[j], 0)*(1 - equals(cen[j-1], 0)) + (1 -
equals(cen[j], 0)*(1 - equals(cen[j-1], 0)) )*M[j]

            M[j] ~ dcat(P[])

      

      }

      

      P[1:2] ~ ddirch(alpha[]);

      alpha[1] <- 1;

      alpha[2] <- 1;

 

      lambda[1] ~ dnorm(0.0, 1.0E-6) I(0, )

      l2 <- 1 - lambda[1]

      theta ~ dnorm(0.0, 1.0E-6) I(0,  l2)      

      lambda[2] <- lambda[1] + theta      

      

}

 

 

Kindly suggest if I am making any errors in handling the mixture model
especially assigning some of the observations that are generated from
only a single distribution instead of the mixture.

 

Thanks

 

Avik

 

 

==========
Avik Sarkar
PhD Student
Department of Computing
Open University ; Milton Keynes ; UK
homepage :  
http://mcs.open.ac.uk/as5297
http://www.aviksarkar.com
 

 


-------------------------------------------------------------------
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