Learn R Programming

altmeta (version 4.1)

pb.bayesian.binary: Bayesian Method for Assessing Publication Bias/Small-Study Effects in Meta-Analysis of a Binary Outcome

Description

Performs multiple methods introduced in Shi et al. (2020) to assess publication bias/small-study effects under the Bayesian framework in a meta-analysis of (log) odds ratios.

Usage

pb.bayesian.binary(n00, n01, n10, n11, p01 = NULL, p11 = NULL, data,
                   sig.level = 0.1,  method = "bay", het = "mul",
                   sd.prior = "unif", n.adapt = 1000, n.chains = 3,
                   n.burnin = 5000, n.iter = 10000, thin = 2,
                   upp.het = 2, phi = 0.5, coda = FALSE,
                   traceplot = FALSE, seed = 1234)

Value

This function returns a list containing estimates of regression slopes and their credible intervals with the specified significance level (sig.level) as well as MCMC posterior samples (if coda = TRUE). Each element name in this list is related to a certain publication bias method (e.g., est.bay and ci.bay represent the slope estimate and its credible interval based on the proposed Bayesian method). In addition, trace plots for the regression slope are drawn if traceplot = TRUE.

Arguments

n00

a numeric vector or the corresponding column name in the argument data, specifying the counts of non-events in treatment group 0 in the collected studies.

n01

a numeric vector or the corresponding column name in the argument data, specifying the counts of events in treatment group 0 in the collected studies.

n10

a numeric vector or the corresponding column name in the argument data, specifying the counts of non-events in treatment group 1 in the collected studies.

n11

a numeric vector or the corresponding column name in the argument data, specifying the counts of events in treatment group 1 in the collected studies.

p01

an optional numeric vector specifying true event rates (e.g., from simulations) in the treatment group 0 across studies.

p11

an optional numeric vector specifying true event rates (e.g., from simulations) in the treatment group 1 across studies.

data

an optional data frame containing the meta-analysis dataset. If data is specified, the previous arguments, n00, n01, n10, n11, p01 (if any), and p11 (if any) should be specified as their corresponding column names in data.

sig.level

a numeric value specifying the statistical significance level \(\alpha\) for testing for publication bias. The default is 0.1. It corresponds to \((1 - \alpha) \times 100\%\) confidence/credible intervals.

method

a character string specifying the method for assessing publication bias via Bayesian hierarchical models. It can be one of "bay" (the Bayesian approach proposed in Shi et al., 2020), "reg.bay" (Egger's regression test, see Egger et al., 1997, under the Bayesian framework) and "smoothed.bay" (the regression test based on the smoothed sample variance, see Jin et al., 2014, under the Bayesian framework), where all regression tests are under the random-effects setting. The default is "bay".

het

a character string specifying the type of heterogeneity assumption for the publication bias tests. It can be either "mul" (multiplicative heterogeneity assumption; see Thompson and Sharpe, 1999) or "add" (additive heterogeneity assumption). The default is "mul".

sd.prior

a character string specifying prior distributions for standard deviation parameters. It can be either "unif" (uniform distribution) or "hn" (half-normal distribution). The default is "unif".

n.adapt

the number of iterations for adaptation in the Markov chain Monte Carlo (MCMC) algorithm. The default is 1,000. This argument and the following n.chains, n.burnin, n.iter, and thin are passed to the functions in the package rjags.

n.chains

the number of MCMC chains. The default is 1.

n.burnin

the number of iterations for burn-in period. The default is 5,000.

n.iter

the total number of iterations in each MCMC chain after the burn-in period. The default is 10,000.

thin

a positive integer specifying thinning rate. The default is 2.

upp.het

a positive number for specifying the upper bound of uniform priors for standard deviation parameters (if sd.prior = "unif"). The default is 2.

phi

a positive number for specifying the hyper-parameter of half-normal priors for standard deviation parameters (if sd.prior = "hn"). The default is 0.5.

coda

a logical value indicating whether to output MCMC posterior samples. The default is FALSE.

traceplot

a logical value indicating whether to draw trace plots for the regression slopes. The default is FALSE.

seed

an integer for specifying the seed value for reproducibility.

Author

Linyu Shi ls16d@my.fsu.edu

Details

The Bayesian models are specified in Shi et al. (2020). The vague prior N(0, \(10^4\)) is used for the regression intercept and slope, and the uniform prior U(0, upp.het) and half-normal prior HN(phi) are used for standard deviation parameters. The half-normal priors may be preferred in meta-analyses with rare events or small sample sizes.

References

Egger M, Davey Smith G, Schneider M, Minder C (1997). "Bias in meta-analysis detected by a simple, graphical test." BMJ, 315(7109), 629--634. <tools:::Rd_expr_doi("10.1136/bmj.315.7109.629")>

Jin Z-C, Wu C, Zhou X-H, He J (2014). "A modified regression method to test publication bias in meta-analyses with binary outcomes." BMC Medical Research Methodology, 14, 132. <tools:::Rd_expr_doi("10.1186/1471-2288-14-132")>

Shi L, Chu H, Lin L (2020). "A Bayesian approach to assessing small-study effects in meta-analysis of a binary outcome with controlled false positive rate". Research Synthesis Methods, 11(4), 535--552. <tools:::Rd_expr_doi("10.1002/jrsm.1415")>

Thompson SG, Sharp SJ (1999). "Explaining heterogeneity in meta-analysis: a comparison of methods." Statistics in Medicine, 18(20), 2693--2708. <tools:::Rd_expr_doi("10.1002/(SICI)1097-0258(19991030)18:20<2693::aid-sim235>3.0.CO;2-V")>

See Also

pb.hybrid.binary, pb.hybrid.generic

Examples

Run this code
# \donttest{
data("dat.poole")
set.seed(654321)
## increase n.burnin and n.iter for better convergence of MCMC
rslt.poole <- pb.bayesian.binary(n00, n01, n10, n11, data = dat.poole,
  method = "bay", het = "mul", sd.prior = "unif", n.adapt = 1000,
  n.chains = 3, n.burnin = 500, n.iter = 2000, thin = 2, upp.het = 2)
rslt.poole

data("dat.ducharme")
set.seed(654321)
## increase n.burnin and n.iter for better convergence of MCMC
rslt.ducharme <- pb.bayesian.binary(n00, n01, n10, n11, data = dat.ducharme,
  method = "bay", het = "mul", sd.prior = "unif", n.adapt = 1000,
  n.chains = 3, n.burnin = 500, n.iter = 2000, thin = 2, upp.het = 2)
rslt.ducharme

data("dat.henry")
set.seed(654321)
## increase n.burnin and n.iter for better convergence of MCMC
rslt.henry <- pb.bayesian.binary(n00, n01, n10, n11, data = dat.henry,
  method = "bay", het = "mul", sd.prior = "unif", n.adapt = 1000,
  n.chains = 3, n.burnin = 500, n.iter = 2000, thin = 2, upp.het = 2)
rslt.henry
# }

Run the code above in your browser using DataLab