next up previous contents
Next: LSAT: latent variable models Up: BUGS 0.5 Examples Volume Previous: A hierarchical t-distribution with

Oxford: smooth fits to log-odds ratios in case-control studies

breslow:clayton:93 re-analyse 2 tex2html_wrap_inline3187 2 tables of cases (deaths from childhood cancer) and controls tabulated against maternal exposure to X-rays, one table for each of 120 combinations of age (0-9) and birth year (1944-1964). The data may be arranged to the following form.

tabular899

Their most complex model is equivalent to expressing the log(odds-ratio) tex2html_wrap_inline3385 for the table in stratum i as

eqnarray917

They use a quasi-likelihood approximation of the full hypergeometric likelihood obtained by conditioning on the margins of the tables.

We let tex2html_wrap_inline3389 denote number of exposures among the tex2html_wrap_inline3391 controls in stratum i, and tex2html_wrap_inline3395 denote number of exposures for the tex2html_wrap_inline3397 cases. The we assume

eqnarray926

Assuming this model with independent vague priors for the tex2html_wrap_inline3399 's provides the correct conditional likelihood. The appropriate graph is shown in Figure 13.

  figure936
Figure 13:   Graphical model for oxford example

Oxford: model specification

model oxford; 

const
   K=120;    # Number of strata

var 
  r1[K], n1[K], r0[K],  n0[K],year[K],
  p1[K], p0[K], mu[K], logPsi[K], b[K], 
  alpha, beta1, beta2, sigma, tau;

data r1,n1,r0,n0,year in "oxford.dat";
inits in "oxford.in"

{

  for (i in 1:K) {
       r0[i]         ~ dbin(p0[i],n0[i]);
       r1[i]         ~ dbin(p1[i],n1[i]);
       logit(p0[i]) <- mu[i];
       logit(p1[i]) <- mu[i] + logPsi[i];
       logPsi[i]    <- alpha + beta1*year[i] 
                       + beta2*(pow(year[i],2)-22) + b[i];
       b[i]          ~ dnorm(0,tau);
       mu[i]         ~ dnorm(0.0,1.0E-6)
  }

  alpha  ~ dnorm(0.0,1.0E-6);
  beta1  ~ dnorm(0.0,1.0E-6);
  beta2  ~ dnorm(0.0,1.0E-6);
  tau    ~ dgamma(1.0E-3,1.0E-3);
  sigma <- 1/sqrt(tau);

}

Analysis

A simple BUGS run took 3 minutes for 1000 iterations after a 500 iteration burn-in. The comparison with the PQL fit of breslow:clayton:93 is as follows.

tabular949



Andrew E Long
Tue Jun 8 09:17:20 EDT 1999