model { # # Construct individual response data from contingency table # for (i in 1 : Ncum[1, 1]) { group[i] <- 1 for (t in 1 : T) { response[i, t] <- pattern[1, t] } } for (i in (Ncum[1,1] + 1) : Ncum[1, 2]) { group[i] <- 2 for (t in 1 : T) { response[i, t] <- pattern[1, t] } } for (k in 2 : Npattern) { for(i in (Ncum[k - 1, 2] + 1) : Ncum[k, 1]) { group[i] <- 1 for (t in 1 : T) { response[i, t] <- pattern[k, t] } } for(i in (Ncum[k, 1] + 1) : Ncum[k, 2]) { group[i] <- 2 for (t in 1 : T) { response[i, t] <- pattern[k, t] } } } # # Model # for (i in 1 : N) { for (t in 1 : T) { for (j in 1 : Ncut) { # # Cumulative probability of worse response than j # logit(Q[i, t, j]) <- -(a[j] + mu[group[i], t] + b[i]) } # # Probability of response = j # p[i, t, 1] <- 1 - Q[i, t, 1] for (j in 2 : Ncut) { p[i, t, j] <- Q[i, t, j - 1] - Q[i, t, j] } p[i, t, (Ncut1)] <- Q[i, t, Ncut] response[i, t] ~ dcat(p[i, t, ]) } # # Subject (random) effects # b[i] ~ dnorm(0.0, tau) } # # Fixed effects # for (g in 1 : G) { for(t in 1 : T) { # logistic mean for group i in period t mu[g, t] <- beta * treat[g, t] / 2 + pi * period[g, t] / 2 + kappa * carry[g, t] } } beta ~ dnorm(0, 1.0E-06) pi ~ dnorm(0, 1.0E-06) kappa ~ dnorm(0, 1.0E-06) # ordered cut points for underlying continuous latent variable a[1] ~ dflat()T(-1000, a[2]) a[2] ~ dflat()T(a[1], a[3]) a[3] ~ dflat()T(a[2], 1000) tau ~ dgamma(0.001, 0.001) sigma <- sqrt(1 / tau) log.sigma <- log(sigma) }