[hearts0]     Hearts: a mixture model for count
         data


The table below presents data given by Berry (1987) on the effect of a drug used to treat patients with frequent premature ventricular contractions (PVCs) of the heart.
[hearts1]
Farewell and Sprott (1988) model these data as a mixture distribution of Poisson counts in which some patients are "cured" by the drug, whilst others experience varying levels of response but remain abnormal. A zero count for the post-drug PVC may indicate a "cure", or may represent a sampling zero from a patient with a mildly abnormal PVC count. The following model thus is assumed:

   x
i    ~   Poisson( l i )   for all patients
   y
i    ~   Poisson( bl i )   for all uncured patients
   P(cure)   =   
q
   
To eliminate nuisance parameters l i , Farewell and Sprott use the conditional distribution of y i given t i = x i + y i . This is equivalent to a binomial likelihood for y i with denominator t i and probability p = b /(1+b) (see Cox and Hinkley, 1974 pp. 136-137 for further details of the conditional distribution for Poisson variables). Hence the final mixture model may be expressed as follows:

   P(y
i = 0 | t i )   =    q + (1 - q ) (1 - p) t i
   P(y
i | t i )   =   (1 - q ) (t i ! / (y i ! (t i - y i )!)) (p y i (1 - p) (t i - y i )    y i = 1,2,...,t i    

The BUGS code for this model is given below:


   model
   {
      for (i in 1 : N) {
         y[i] ~ dbin(P[state1[i]], t[i])
         state[i] ~ dbern(theta)
         state1[i] <- state[i] + 1
         t[i] <- x[i] + y[i]
         prop[i] <- P[state1[i]]
         cumulative.y[i] <- cumulative(y[i], y[i])
      }
      P[1] <- p
      P[2] <- 0
      logit(p) <- alpha
      alpha ~ dnorm(0,1.0E-4)
      beta <- exp(alpha)
      logit(theta) <- delta
      delta ~ dnorm(0, 1.0E-4)
   }



Data ( click to open )

Inits for chain 1    Inits for chain 2    ( click to open )

Results

A 1000 update burn in followed by a further 10000 updates gave the parameter estimates



[hearts2]