[hips10]    Hips model 1: Closed form
                     estimates for each strata -                                          give results for "exact" columns
                     in Table 2

               

Spiegelhalter, D.J. and Best, N.G. “Bayesian approaches to multiple sources of evidence and uncertainty in complex cost-effectiveness modelling”. Statistics in Medicine 22 , (2003), 3687-3709.

No updates are required for this model; just load data and compile, then obtain values for C, mean.C, sd.C, BL, mean.BL, sd.BL, BQ, mean.BQ and sd.BQ using the node tool from the Info menu.




    model {

       for(k in 1 : K) { # loop over strata

       # Cost and benefit equations in closed form:
       ####################################

       # Costs
          for(t in 1 : N) {
             ct[k, t] <- inprod(pi[k, t, ], c[]) / pow((1 + delta.c), t - 1)
          }
          C[k] <- C0 + sum(ct[k, ])

          # Benefits - life expectancy
          for(t in 1:N) {
             blt[k, t] <- inprod(pi[k, t, ], bl[]) / pow((1 + delta.b), t - 1)
          }
          BL[k] <- sum(blt[k, ])

          # Benefits - QALYs
          for(t in 1 : N) {
             bqt[k, t] <- inprod(pi[k,t, ], bq[]) / pow((1 + delta.b), t - 1)
          }
          BQ[k] <- sum(bqt[k, ])

          # Markov model probabilities:
          #######################

          # Transition matrix
          for(t in 2 : N) {
             Lambda[k, t, 1, 1] <- 1 - gamma[k, t] - lambda[k, t]
             Lambda[k, t, 1, 2] <- gamma[k, t] * lambda.op
             Lambda[k, t, 1, 3] <- gamma[k, t] * (1 - lambda.op)
             Lambda[k, t, 1, 4] <- 0
             Lambda[k, t, 1, 5] <- lambda[k, t]

             Lambda[k, t, 2, 1] <- 0
             Lambda[k, t, 2, 2] <- 0
             Lambda[k, t, 2, 3] <- 0
             Lambda[k, t, 2, 4] <- 0
             Lambda[k, t, 2, 5] <- 1

             Lambda[k, t, 3, 1] <- 0
             Lambda[k, t, 3, 2] <- 0
             Lambda[k, t, 3, 3] <- 0
             Lambda[k, t, 3, 4] <- 1 - lambda[k, t]
             Lambda[k, t, 3, 5] <- lambda[k, t]

             Lambda[k, t, 4, 1] <- 0
             Lambda[k, t, 4, 2] <- rho * lambda.op
             Lambda[k, t, 4, 3] <- rho * (1 - lambda.op)
             Lambda[k, t, 4, 4] <- 1 - rho - lambda[k, t]
             Lambda[k, t, 4, 5] <- lambda[k,t]

             Lambda[k, t, 5, 1] <- 0
             Lambda[k, t, 5, 2] <- 0
             Lambda[k, t, 5, 3] <- 0
             Lambda[k, t, 5, 4] <- 0
             Lambda[k, t, 5, 5] <- 1

             gamma[k, t] <- h[k] * (t - 1)
          }

          # Marginal probability of being in each state at time 1
          pi[k,1,1] <- 1 - lambda.op pi[k,1, 2]<-0 pi[k,1,3] <- 0
         pi[k,1, 4] <- 0 pi[k,1, 5] <- lambda.op

          # Marginal probability of being in each state at time t>1
          for(t in 2:N) {
             for(s in 1:S) {
                pi[k, t, s] <- inprod(pi[k, t - 1, ], Lambda[k, t, , s])
             }
          }

       }

       # Mean and sd of costs and benefits over strata
       #######################################

       mean.C <- inprod(p.strata[], C[])
       for(k in 1:12) {
         dev.C[k] <- pow(C[k] - mean.C, 2)
      }
       var.C <- inprod(p.strata[], dev.C[])
       sd.C <- sqrt(var.C)

       mean.BL <- inprod(p.strata[], BL[])
       for(k in 1:12) {
         dev.BL[k] <- pow(BL[k] - mean.BL, 2)
      }
       var.BL <- inprod(p.strata[], dev.BL[])
       sd.BL <- sqrt(var.BL)

       mean.BQ <- inprod(p.strata[], BQ[])
       for(k in 1:12) {
         dev.BQ[k] <- pow(BQ[k] - mean.BQ, 2)
      }
       var.BQ <- inprod(p.strata[], dev.BQ[])
       sd.BQ <- sqrt(var.BQ)
    }


Data ( click to open )


Results
[hips11]