Roever 2020 - Pediatric Liver Transplant Worked Example

Summary

Six controlled studies of interleukin-2 receptor antagonists (IL-2RA) after pediatric liver transplantation (Crins et al. 2014) are meta-analysed with bayesmeta. With and the posterior median log-OR is (95% interval ), posterior probability of a non-beneficial effect , and an implied median risk difference of at 50% control risk. A grid-based Python reproduction matches the printed summary to three or more decimals.

Overview

Question. Does IL-2RA prevent acute rejection (AR) events after pediatric liver transplantation? Treatment strategies and responses differ between adults and children, so a pediatric-specific systematic review of six controlled studies was performed.

Main Content

Data

Generic 2x2 table: event yes/no for treatment (, ) and control (, ). First study (Heffron 2003): IL-2RA 14 events, 47 none (61); control 15 events, 5 none (20). Odds ratio ; , (the paper writes the SE formula over the 2x2 counts).

StudyIL-2RA events/totalControl events/total (log-OR)Randomised
1Heffron 200314/6115/20-2.310.60yes
2Gibelli 200416/2819/28-0.460.56no
3Schuller 20053/188/12-2.300.88no
4Ganschow 20059/5429/54-1.760.46no
5Spada 20064/3611/36-1.260.64yes
6Gras 20080/503/34-2.421.53no

Study 6 has a zero cell, so a continuity correction (0.5 added to each cell) was applied (Sweeting et al. 2004). Effect sizes via metafor::escalc(measure="OR", ai, n1i, ci, n2i, ...) return yi and vi = squared SE; bayesmeta() needs SEs, hence sigma=sqrt(vi) (Viechtbauer 2010 - Effect Size Measures and escalc). A bayesmeta() call can also take the escalc data frame directly.

The analysis

bayesmeta(y, sigma, labels, mu.prior.mean=0, mu.prior.sd=4, tau.prior=function(t) dhalfnormal(t, scale=0.5)). The effect prior is the vague unit-information prior; the half-normal(0.5) puts about 95% of prior mass on and about 5% on “fairly extreme” values.

ML joint0.3258-1.5783
ML marginal0.4644-1.5780
MAP joint0.0869-1.5594
MAP marginal0.2453-1.5691

Marginal posterior summary:

(prediction)
mode0.2453-1.5691-1.5633
median0.3445-1.5735-1.5702
mean0.3811-1.5764-1.5764
sd0.25940.32950.5672
95% lower0.0000-2.2312-2.7661
95% upper0.8607-0.9264-0.4073

(shortest credible intervals). Forest plot (Fig. 2): raw estimates with 95% CI plus shrinkage intervals, “mean” and “prediction” . Fig. 3 (plot(ma01)): top-left forest, top-right joint posterior of with conditional mean and 95% band, ML cross and MAP cross; bottom marginal densities of and .

Querying the posterior ($dposterior, $pposterior, $qposterior, $rposterior, $post.interval)

QueryResult
(non-beneficial effect)
(“fairly extreme”)0.02097
99% upper limit of 1.1092
99% interval for , shortest[0, 1.1092]
99% interval for , central[0.003548, 1.2054] (the 0.005 and 0.995 quantiles)

Monte Carlo (rposterior(n, tau.sample=FALSE) is much faster if only is needed): assume control AR risk ; ; risk difference has median and 95% interval from 10,000 draws.

Shrinkage (ma01$theta[,1:2]):

Heffron 2003Gibelli 2004
, -2.3097, 0.5995-0.4595, 0.5564
posterior median-1.7411-1.2822
posterior mean, sd-1.7779, 0.4229-1.2340, 0.4489
95% interval[-2.6561, -0.9920][-2.0455, -0.3089]

Prior variations (Sec. 3.4)

  • Prior predictive: see the table in Roever 2020 - Priors for the Effect and Heterogeneity (97.5% quantiles 1.092, 2.185, 5.051 for half-normal(0.5), half-normal(1.0), half-Cauchy(0.5)).
  • Empirical prior (Turner et al. 2015): TurnerEtAlPrior(outcome="surgical", comparator1="pharmacological", comparator2="placebo / control"), log-normal with quantiles (2.5%, 50%, 97.5%) = (0.0623, 0.3430, 1.8873). Result “very similar” to the half-normal analysis (Fig. 1 shows the two densities).
  • Non-informative: omit mu.prior.* for the uniform effect prior; tau.prior="Jeffreys" for Jeffreys (default is "uniform").

Examples

Reproducing the printed posterior without bayesmeta

A fine grid with Eq. 22 and Eq. 21 (Roever 2020 - Marginal Likelihood and Conditional Posteriors) gives: posterior mean 0.3811, sd 0.2594, median 0.3445, , 99% quantile 1.1092; mean , sd 0.3294, median , ; study-1 shrinkage mean , median ; REML , , SE 0.3341. All agree with the paper. The come from the counts with the 0.5 correction in study 6.

import numpy as np
from scipy import stats
a=np.array([14,16,3,9,4,0.]); n1=np.array([61,28,18,54,36,50.]); c=np.array([15,19,8,29,11,3.]); n2=np.array([20,28,12,54,36,34.])
b, d = n1-a, n2-c
z = (a==0)|(b==0)|(c==0)|(d==0)                              # continuity correction for studies with a zero cell
a, b, c, d = [np.where(z, x+.5, x) for x in (a, b, c, d)]
y = np.log(a*d/(b*c)); s = np.sqrt(1/a+1/b+1/c+1/d)
# then call posterior_grid(y, s) from the Marginal Likelihood note, with tau ~ half-normal(0.5), mu ~ N(0, 4^2)

Connections

  • Marketing: the workflow (compute effect and SE per study, state an informative prior from the plausible spread of effects, report the predictive interval and the probability of a harmful or null effect, then run prior sensitivity) is a template for pooling a handful of lift or geo experiments. "" is a direct decision quantity; the risk-difference translation (via an assumed baseline) is the analogue of converting a log-lift into incremental conversions at a baseline conversion rate.
  • Frequentist re-analysis of a comparable problem: Viechtbauer 2010 - BCG Vaccine Worked Example.

See Also