meta.biv {altmeta}R Documentation

Bivariate Method for Meta-Analysis.

Description

Performs a meta-analysis with a binary outcome using a bivariate generalized linear mixed model (GLMM) described in Chu et al. (2012).

Usage

meta.biv(sid, tid, e, n, data, link = "logit", alpha = 0.05,
         b.iter = 1000, seed = 1234, ...)

Arguments

sid

a vector specifying the study IDs.

tid

a vector of 0/1 specifying the treatment/exposure IDs (0: control/non-exposure; 1: treatment/exposure).

e

a numeric vector specifying the event counts.

n

a numeric vector specifying the sample sizes.

data

an optional data frame containing the meta-analysis dataset. If data is specified, the previous arguments, sid, tid, e, and n, should be specified as their corresponding column names in data.

link

a character string specifying the link function used in the GLMM, which can be either "logit" (the default) or "probit".

alpha

a numeric value specifying the statistical significance level.

b.iter

an integer specifying the number of bootstrap iterations, which are used to produce confidence intervals of marginal results.

seed

an integer for specifying the seed of the random number generation for reproducibility during the bootstrap resampling.

...

other arguments that can be passed to the function glmer in the package lme4.

Details

Suppose a meta-analysis with a binary outcome contains N studies. Let n_{i0} and n_{i1} be the sample sizes in the control/non-exposure and treatment/exposure groups in study i, respectively, and let e_{i0} and e_{i1} be the event counts (i = 1, \ldots, N). The event counts are assumed to independently follow binomial distributions:

e_{i0} \sim Bin(n_{i0}, p_{i0});

e_{i1} \sim Bin(n_{i1}, p_{i1}),

where p_{i0} and p_{i1} represent the true event probabilities. They are modeled jointly as follows:

g(p_{i0}) = \mu_0 + \nu_{i0};

g(p_{i1}) = \mu_1 + \nu_{i1};

(\nu_{i0}, \nu_{i1})^\prime \sim N ((0, 0)^\prime, \mathbf{\Sigma}).

Here, g(\cdot) denotes the link function that transforms the event probabilities to linear forms. The fixed effects \mu_0 and \mu_1 represent the overall event probabilities on the transformed scale. The study-specific parameters \nu_{i0} and \nu_{i1} are random effects, which are assumed to follow the bivariate normal distribution with zero means and variance-covariance matrix \mathbf{\Sigma}. The diagonal elements of \mathbf{\Sigma} are \sigma_0^2 and \sigma_1^2 (between-study variances due to heterogeneity), and the off-diagonal elements are \rho \sigma_0 \sigma_1, where \rho is the correlation coefficient.

When using the logit link, \mu_1 - \mu_0 represents the log odds ratio (Van Houwelingen et al., 1993; Stijnen et al., 2010; Jackson et al., 2018); \exp(\mu_1 - \mu_0) may be referred to as the conditional odds ratio (Agresti, 2013). Alternatively, we can obtain the marginal event probabilities (Chu et al., 2012):

p_k = E[p_{ik}] \approx \left[1 + \exp\left(-\mu_k/\sqrt{1 + C^2 \sigma_k^2}\right)\right]^{-1}

for k = 0 and 1, where C = 16 \sqrt{3} / (15 \pi). The marginal odds ratio, relative risk, and risk difference are subsequently obtained as [p_1/(1 - p_1)]/[p_0/(1 - p_0)], p_1/p_0, and p_1 - p_0, respectively.

When using the probit link, the model does not yield the conditional odds ratio. The marginal probabilities have closed-form solutions:

p_k = E[p_{ik}] = \Phi\left(\mu_k/\sqrt{1 + \sigma_k^2}\right)

for k = 0 and 1, where \Phi(\cdot) is the cumulative distribution function of the standard normal distribution. They further lead to the marginal odds ratio, relative risk, and risk difference.

Value

This function returns a list containing the point and interval estimates of the marginal event rates (p0.m, p0.m.ci, p1.m, and p1.m.ci), odds ratio (OR.m and OR.m.ci), relative risk (RR.m and RR.m.ci), risk difference (RD.m and RD.m.ci), and correlation coefficient between the two treatment/exposure groups (rho and rho.ci). These interval estimates are obtained using the bootstrap resampling. During the bootstrap resampling, computational warnings or errors may occur for implementing the bivariate GLMM in some resampled meta-analyses. This function returns the counts of warnings and errors (b.w.e). The resampled meta-analyses that lead to warnings and errors are not used for producing the bootstrap confidence intervals; the bootstrap iterations stop after obtaining b.iter resampled meta-analyses without warnings and errors. If the logit link is used (link = "logit"), it also returns the point and interval estimates of the conditional odds ratio (OR.c and OR.c.ci), which are more frequently reported in the current literature than the marginal odds ratios. Unlike the marginal results that use the bootstrap resampling to produce their confidence intervals, the Wald-type confidence interval is calculated for the log conditional odds ratio; it is then transformed to the odds ratio scale.

References

Agresti A (2013). Categorical Data Analysis. Third edition. John Wiley & Sons, Hoboken, NJ.

Chu H, Nie L, Chen Y, Huang Y, Sun W (2012). "Bivariate random effects models for meta-analysis of comparative studies with binary outcomes: methods for the absolute risk difference and relative risk." Statistical Methods in Medical Research, 21(6), 621–633. <doi: 10.1177/0962280210393712>

Jackson D, Law M, Stijnen T, Viechtbauer W, White IR (2018). "A comparison of seven random-effects models for meta-analyses that estimate the summary odds ratio." Statistics in Medicine, 37(7), 1059–1085. <doi: 10.1002/sim.7588>

Stijnen T, Hamza TH, Ozdemir P (2010). "Random effects meta-analysis of event outcome in the framework of the generalized linear mixed model with applications in sparse data." Statistics in Medicine, 29(29), 3046–3067. <doi: 10.1002/sim.4040>

Van Houwelingen HC, Zwinderman KH, Stijnen T (1993). "A bivariate approach to meta-analysis." Statistics in Medicine, 12(24), 2273–2284. <doi: 10.1002/sim.4780122405>

See Also

maprop.glmm, meta.dt

Examples


data("dat.bellamy")
out.bellamy.logit <- meta.biv(sid, tid, e, n, data = dat.bellamy,
  link = "logit", b.iter = 1000)
out.bellamy.logit
out.bellamy.probit <- meta.biv(sid, tid, e, n, data = dat.bellamy,
  link = "probit", b.iter = 1000)
out.bellamy.probit


[Package altmeta version 4.1 Index]