Learn R Programming

bayesmeta (version 3.4)

TurnerEtAlPrior: (Log-Normal) heterogeneity priors for binary outcomes as proposed by Turner et al. (2015).

Description

Use the prior specifications proposed in the paper by Turner et al., based on an analysis of studies using binary endpoints that were published in the Cochrane Database of Systematic Reviews.

Usage

TurnerEtAlPrior(outcome=c(NA, "all-cause mortality", "obstetric outcomes",
  "cause-specific mortality / major morbidity event / composite (mortality or morbidity)",
  "resource use / hospital stay / process", "surgical / device related success / failure",
  "withdrawals / drop-outs", "internal / structure-related outcomes",
  "general physical health indicators", "adverse events",
  "infection / onset of new disease",
  "signs / symptoms reflecting continuation / end of condition", "pain",
  "quality of life / functioning (dichotomized)", "mental health indicators",
  "biological markers (dichotomized)", "subjective outcomes (various)"),
  comparator1=c("pharmacological", "non-pharmacological", "placebo / control"),
  comparator2=c("pharmacological", "non-pharmacological", "placebo / control"))

Value

a list with elements

parameters

the log-normal parameters (\(\mu\) and \(\sigma\), corresponding to the squared heterogeneity parameter \(\tau^2\) as well as \(\tau\)).

outcome.type

the corresponding type of outcome.

comparison.type

the corresponding type of comparison.

dprior

a function(tau) returning the prior density of \(\tau\).

pprior

a function(tau) returning the prior cumulative distribution function (CDF) of \(\tau\).

qprior

a function(p) returning the prior quantile function (inverse CDF) of \(\tau\).

Arguments

outcome

The type of outcome investigated (see below for a list of possible values).

comparator1

One comparator's type.

comparator2

The other comparator's type.

Details

Turner et al. conducted an analysis of studies listed in the Cochrane Database of Systematic Reviews that were investigating binary endpoints. As a result, they proposed empirically motivated log-normal prior distributions for the (squared!) heterogeneity parameter \(\tau^2\), depending on the particular type of outcome investigated and the type of comparison in question. The log-normal parameters (\(\mu\) and \(\sigma\)) here are internally stored in a 3-dimensional array (named TurnerEtAlParameters) and are most conveniently accessed using the TurnerEtAlPrior() function.

The outcome argument specifies the type of outcome investigated. It may take one of the following values (partial matching is supported):

  • NA

  • "all-cause mortality"

  • "obstetric outcomes"

  • "cause-specific mortality / major morbidity event / composite (mortality or morbidity)"

  • "resource use / hospital stay / process"

  • "surgical / device related success / failure"

  • "withdrawals / drop-outs"

  • "internal / structure-related outcomes"

  • "general physical health indicators"

  • "adverse events"

  • "infection / onset of new disease"

  • "signs / symptoms reflecting continuation / end of condition"

  • "pain"

  • "quality of life / functioning (dichotomized)"

  • "mental health indicators"

  • "biological markers (dichotomized)"

  • "subjective outcomes (various)"

Specifying “outcome=NA” (the default) yields the marginal setting, without considering meta-analysis characteristics as covariates.

The comparator1 and comparator2 arguments together specify the type of comparison in question. These may take one of the following values (partial matching is supported):

  • "pharmacological"

  • "non-pharmacological"

  • "placebo / control"

Any combination is allowed for the comparator1 and comparator2 arguments, as long as not both arguments are set to "placebo / control".

Note that the log-normal prior parameters refer to the (squared) heterogeneity parameter \(\tau^2\). When you want to use the prior specifications for \(\tau\), the square root, as the parameter (as is necessary when using the bayesmeta() function), you need to correct for the square root transformation. Taking the square root is equivalent to dividing by two on the log-scale, so the square root's distribution will still be log-normal, but with halved mean and standard deviation. The relevant transformations are already taken care of when using the resulting $dprior(), $pprior() and $qprior() functions; see also the example below.

References

R.M. Turner, D. Jackson, Y. Wei, S.G. Thompson, J.P.T. Higgins. Predictive distributions for between-study heterogeneity and simple methods for their application in Bayesian meta-analysis. Statistics in Medicine, 34(6):984-998, 2015. tools:::Rd_expr_doi("10.1002/sim.6381").

C. Roever, R. Bender, S. Dias, C.H. Schmid, H. Schmidli, S. Sturtz, S. Weber, T. Friede. On weakly informative prior distributions for the heterogeneity parameter in Bayesian random-effects meta-analysis. Research Synthesis Methods, 12(4):448-474, 2021. tools:::Rd_expr_doi("10.1002/jrsm.1475").

See Also

dlnorm, RhodesEtAlPrior.

Examples

Run this code
# load example data:
data("CrinsEtAl2014")

# determine corresponding prior parameters:
TP <- TurnerEtAlPrior("surgical", "pharma", "placebo / control")
print(TP)
# a prior 95 percent interval for tau:
TP$qprior(c(0.025,0.975))

if (FALSE) {
# compute effect sizes (log odds ratios) from count data
# (using "metafor" package's "escalc()" function):
crins.es <- escalc(measure="OR",
                   ai=exp.AR.events,  n1i=exp.total,
                   ci=cont.AR.events, n2i=cont.total,
                   slab=publication, data=CrinsEtAl2014)
print(crins.es)

# perform meta analysis:
crins.ma01 <- bayesmeta(crins.es, tau.prior=TP$dprior)
# for comparison perform analysis using weakly informative Cauchy prior:
crins.ma02 <- bayesmeta(crins.es, tau.prior=function(t){dhalfcauchy(t,scale=1)})

# show results:
print(crins.ma01)
print(crins.ma02)
# compare estimates; heterogeneity (tau):
rbind("Turner prior"=crins.ma01$summary[,"tau"], "Cauchy prior"=crins.ma02$summary[,"tau"])
# effect (mu):
rbind("Turner prior"=crins.ma01$summary[,"mu"], "Cauchy prior"=crins.ma02$summary[,"mu"])

# illustrate heterogeneity priors and posteriors:
par(mfcol=c(2,2))
  plot(crins.ma01, which=4, prior=TRUE, taulim=c(0,2),
       main="informative log-normal prior")
  plot(crins.ma02, which=4, prior=TRUE, taulim=c(0,2),
       main="weakly informative half-Cauchy prior")
  plot(crins.ma01, which=3, mulim=c(-3,0),
       main="informative log-normal prior")
  abline(v=0, lty=3)
  plot(crins.ma02, which=3, mulim=c(-3,0),
       main="weakly informative half-Cauchy prior")
  abline(v=0, lty=3)
par(mfrow=c(1,1))

# compare prior and posterior 95 percent upper limits for tau:
TP$qprior(0.95)
crins.ma01$qposterior(0.95)
qhalfcauchy(0.95)
crins.ma02$qposterior(0.95)
}

Run the code above in your browser using DataLab