Bayesian Methods in Health Economics

Check out my book (published with CRC - available also on Amazon, in ebook format too)

  • Table of contents
  • Preface
  • Get a promotional code - save 20% when ordering online from CRC website
  • Read a sample for free
  • BCEA - an R package to run Bayesian health economic evaluations (used throughout the book and specifically in the examples)
  • Some discussion of the book in the blog can be found here, here, here and here

  • R/JAGS code to run the examples (all files at once here)
  • Instructions (probably best to read before downloading the files)
  • Utilities
    • Utils.R: script containing some utility functions, for examples to draw traceplots of MCMC chains, or estimating the parameters of suitable distributions to obtain given values for its mean and standard deviation [Needed to run most of the other scripts]
  • Chapter 2
    • MCMC.R: script to run the Gibbs sampling simulations and check convergence, as in Figure 2.10
    • modelNormal.R: script to run the analysis of the Normal model (pages 69-73)
    • modelNormal.txt: JAGS code for the Bayesian model (pages 69-73)
    • phbirths.dta: Dataset used for the Normal model example - courtesy of German Rodriguez
  • Chapter 3
    • HEexample.R: script to run the Bayesian model to analyse the health economic problem described in the chapter (chemotherapy) and the several cost-effectiveness analyses presented throughout the chapter. This example is used throughout chapter 4 as well
    • model.txt: JAGS code for the basic cost-effectiveness analysis
    • modelEVPPI_rho.txt: JAGS code for the analysis of the Expected Value of Partial Perfect Information (EVPPI) for the parameter \(\rho\)
    • modelEVPPI_gamma.txt: JAGS code for the analysis of the Expected Value of Partial Perfect Information (EVPPI) for the parameter \(\gamma\)
  • Chapter 4
    • modelNormal.R: script to run the analysis of the Normal model (pages 129-141); continues the analysis from chapter 2
    • modelNormalBlocking.txt: JAGS code to run the model using blocking to improve convergence (page 133)
    • modelNormal2.txt: JAGS code to run the compute the predictive distribution (page 135)
  • Chapter 5
    • Example 1: RCT of acupuncture for chronic headache in primary care
      • acupuncture.R: script to run the cost-effectiveness analysis of acupuncture. Based on this paper
      • dataRCTacupuncture.csv: Dataset used for the acupuncture example - courtesy of David Wonderling, Richard Nixon and Richard Grieve
      • actptRCT.txt: JAGS code to run the normal/normal (on the logit/log scale) model
      • actptRCT_gamma.txt: JAGS code to run the normal/gamma (on the logit/natural scale) model
      • actptRCT_logN.txt: JAGS code to run the normal/log-normal (on the logit/natural scale) model
    • Example 2: Neuraminidase inhibitors to reduce influenza in healthy adults
      • EvSynth.R: script to run the cost-effectiveness analysis based on evidence synthesis for the influenza treatment with neuraminidase
      • EvSynth.txt: JAGS code to run the evidence synthesis model
    • Example 3: Markov model for the treatment of asthma
      • MarkovModel.R: script to run the cost-effectiveness analysis for the treatment of asthma
      • MarkovModel.txt: JAGS code to run the conjugated Markov model

NB: Everything works fine on my computer, originally configured with Linux, R 2.15.1 and JAGS 3.2.0. But if you experience problems with any of the code, drop me an email and I’ll fix it.

The book has received excellent reviews, for example by Patrick Graham

Gianluca Baio’s book is a welcome account of recent developments in methodology for cost-effective analysis in health care… The book may well be the first book-length account of a fully Bayesian approach to cost-effective analysis… a great book for its intended audience of students in an advanced course on statistical methods for health economics… The book would also be suitable for self-study for at least two groups: Bayesian statisticians moving into health economics applications; practicing health economists and epidemiologists keen to learn more about Bayesian methods.

and by Mark Strong

It is well presented and pleasing to read… One of the strengths of the book is the use of real practical motivating examples, which then serve as vehicles for explaining methods. As each story unfolds, the reader is presented with the right level of mathematical detail to appreciate the problem and the analysis… I would recommend the book to anyone engaged in mathematical modeling for health economic decision-making. It also would not be hard to use the book as the basis for either a short course on Bayesian methods for health economic modeling, or perhaps a masters-level module… a nice addition to the literature on health economics from a statistical perspective.

Errata corrige

Despite our best effort, there are a few typos or imprecisions in the published version of Bayesian Methods in Health Economics. We report those we have identified and welcome (well… we hope there won’t be many, but you know…) notification of any other mistakes (that can be highlighted by emailing me).

  • Page 21. The interpretation of the cost-benefit analysis is incorrect. In fact, the favourite option should be \(a\) (and not \(b\), as reported in the book), since the cost for Option \(a\) relative to the cost of hospitalization without vaccination is smaller, which is preferable. This is due to successive revisions to this examples (in the previous version the result was the other way around and the text was not updated properly).
  • Page 45, figure 2.5: the bottom part of the decision tree shows the possible outcomes when the operation does not go well. However, the headings for the branch out of the “Patient lives” random node are both “No”. The top one should read “Yes” (much as in the top half of the tree).
  • Page 120. There is a slight inconsistency between the code used to run the model

    model = jags(data=data,inits=inits,,model.file=filein,n.chains=2,n.iter=10000,n.burnin=4500,n.thin=1,DIC=TRUE)
    and the text presented later on page 121, where it is stated that “… we consider 9500 simulations with a burn-in of 4500 for 2 chains”. The correct command replaces n.iter=10000 with n.iter=9500.
  • Pages 136-137. Again, there is a slight inconsistency in the code presented on page 136, where I have used n.burnin=4500 and n.thin=91 and the text and output presented on page 137, in which n.burnin=9500 and n.thin=81.
  • Page 147. In the call to bcea (approximately one third one the page), there is a reference to a (now) deprecated argument Ktable. I found this was largely irrelevant and thus removed it from the code. Everything else in this bit of code does work correctly, though.
  • Because of the changes in the R2jags package, the code in chapter 4 and 5 should be slightly modified to say attach.jags() instead of attach.bugs() (see more details here)

Last updated: Tuesday 08 January 2019