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).
| Study | IL-2RA events/total | Control events/total | (log-OR) | Randomised | ||
|---|---|---|---|---|---|---|
| 1 | Heffron 2003 | 14/61 | 15/20 | -2.31 | 0.60 | yes |
| 2 | Gibelli 2004 | 16/28 | 19/28 | -0.46 | 0.56 | no |
| 3 | Schuller 2005 | 3/18 | 8/12 | -2.30 | 0.88 | no |
| 4 | Ganschow 2005 | 9/54 | 29/54 | -1.76 | 0.46 | no |
| 5 | Spada 2006 | 4/36 | 11/36 | -1.26 | 0.64 | yes |
| 6 | Gras 2008 | 0/50 | 3/34 | -2.42 | 1.53 | no |
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 joint | 0.3258 | -1.5783 |
| ML marginal | 0.4644 | -1.5780 |
| MAP joint | 0.0869 | -1.5594 |
| MAP marginal | 0.2453 | -1.5691 |
Marginal posterior summary:
| (prediction) | |||
|---|---|---|---|
| mode | 0.2453 | -1.5691 | -1.5633 |
| median | 0.3445 | -1.5735 | -1.5702 |
| mean | 0.3811 | -1.5764 | -1.5764 |
| sd | 0.2594 | 0.3295 | 0.5672 |
| 95% lower | 0.0000 | -2.2312 | -2.7661 |
| 95% upper | 0.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)
| Query | Result |
|---|---|
| (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 2003 | Gibelli 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
bayesmetaA 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
- Roever 2020 - Posterior Predictive Checks and Frequentist Connection (the two-randomised-study subset analysis)
- Roever 2020 - Bayesian Random-Effects Meta-Analysis with bayesmeta - Overview