Package 'rema'

Title: Rare Event Meta Analysis
Description: The rema package implements a permutation-based approach for binary meta-analyses of 2x2 tables, founded on conditional logistic regression, that provides more reliable statistical tests when heterogeneity is observed in rare event data (Zabriskie et al. 2021 <doi:10.1002/sim.9142>). To adjust for the effect of heterogeneity, this method conditions on the sufficient statistic of a proxy for the heterogeneity effect as opposed to estimating the heterogeneity variance. While this results in the model not strictly falling under the random-effects framework, it is akin to a random-effects approach in that it assumes differences in variability due to treatment. Further, this method does not rely on large-sample approximations or continuity corrections for rare event data. This method uses the permutational distribution of the test statistic instead of asymptotic approximations for inference. The number of observed events drives the computation complexity for creating this permutational distribution. Accordingly, for this method to be computationally feasible, it should only be applied to meta-analyses with a relatively low number of observed events. To create this permutational distribution, a network algorithm, based on the work of Mehta et al. (1992) <doi:10.2307/1390598> and Corcoran et al. (2001) <doi:10.1111/j.0006-341x.2001.00941.x>, is employed using C++ and integrated into the package.
Authors: Brinley N. Zabriskie [aut, cre] , Benjamin Kinard [aut], Chris Sypherd [aut], Ryan Whetten [aut], Madeleine Hays [ctb]
Maintainer: Brinley N. Zabriskie <[email protected]>
License: GPL (>= 3) | file LICENSE
Version: 0.0.1
Built: 2025-02-28 03:15:57 UTC
Source: https://github.com/cran/rema

Help Index


Plots the distribution of the test statistic results from a rema object

Description

Plots the distribution of the test statistic results from a rema object with the probabilities on the y-axis and the test statistics on the x-axis.

Usage

## S3 method for class 'rema'
plot(x, ...)

Arguments

x

a rema object holding distribution results from the rema function

...

other arguments that can be specified in plot

Details

The observed value of the test statistic is marked with an asterisk. The dark gray bars mark the probabilities that contribute to the two-sided p-value. The light gray bars highlight probabilities that are greater than the probability of the observed test statistic and consequently do not contribute to the two-sided p-value. If dist is set to FALSE in the rema object, the plot function will return an error.

Value

A barplot of the distribution of the test statistic.


A permutation-based approach for heterogeneous meta-analyses of rare events

Description

rema (rare event meta-analysis) performs a permutation-based meta-analysis for heterogeneous, rare event data.

Usage

rema(
  trt.events = NULL,
  trt.total = NULL,
  ctrl.events = NULL,
  ctrl.total = NULL,
  rema.obj,
  mid.p = TRUE,
  distr = TRUE,
  one.sided.p = FALSE,
  alpha = 0.05
)

Arguments

trt.events

Numeric vector containing the number of observed events in the treatment group from each independent study.

trt.total

Numeric vector containing the total number of observations (events plus non-events) in the treatment group from each independent study.

ctrl.events

Numeric vector containing the number of observed events in the control group from each independent study.

ctrl.total

Numeric vector containing the total number of observations (events plus non-events) in the control group from each independent study.

rema.obj

An object of class rema that contains the permutational distribution of the test statistic. If this argument is supplied, the trt.events, trt.total, ctrl.events, and ctrl.total vectors are not required.

mid.p

A logical indicating if the p-values and confidence interval are adjusted using the mid-p correction to reduce conservatism. If TRUE (default), the mid-p p-values and mid-p confidence interval will be reported.

distr

A logical indicating if the permutational distribution of the test statistic is reported. If TRUE (default), the distribution is returned.

one.sided.p

A logical indicating if the one-sided p-value (in the direction of the treatment effect) is computed and returned. If FALSE (default), the one-sided p-value is not provided.

alpha

A number between 0 and 1 to create a (1 - alpha)% confidence interval for the treatment effect.

Details

Conventional meta-analysis approaches tend to perform poorly for heterogeneous, rare event data. rema implements a permutation-based approach for binary meta-analyses of 2x2 tables, founded on conditional logistic regression, that provides more reliable statistical tests when heterogeneity is observed in rare event data (Zabriskie et al. 2021). To adjust for the effect of heterogeneity, this method conditions on the sufficient statistic of a proxy for the heterogeneity effect as opposed to estimating the heterogeneity variance. While this results in the model not strictly falling under the random-effects framework, it is akin to a random-effects approach in that it assumes differences in variability due to treatment. Further, this method does not rely on large-sample approximations or continuity corrections for rare event data.

This method uses the permutational distribution of the test statistic instead of asymptotic approximations for inference. The number of observed events drives the computation complexity for creating this permutational distribution. Accordingly, for this method to be computationally feasible, it should only be applied to meta-analyses with a relatively low number of observed events. To create this permutational distribution, a network algorithm, based on the work of Mehta et al. (1992) and Corcoran et al. (2001), is employed using C++ and integrated into the package.

Value

An object of class "rema" with corresponding print, summary, and plot (if distr == TRUE) functions. The object is a list containing the following elements:

trt.events As defined above.
trt.total As defined above.
ctrl.events As defined above.
ctrl.total As defined above.
mid.p As defined above.
alpha As defined above.
arguments A string of the arguments passed into rema.
TE The estimated overall treatment effect (odds ratio).
CI A vector containing the estimated lower and upper bounds of a (1 - alpha)%
confidence interval of the overall treatment effect (odds ratio).
method A string specifying the method used to compute the odds ratio and its associated
confidence interval. Either the conditional maximum likelihood estimate (CMLE)
or the median unbiased estimate (MUE) will be used.
pval The two-sided p-value for the overall treatment effect.
pval.one.sided The one-sided p-value (in the direction of the treatment effect) for the overall
treatment effect (if one.sided.p == TRUE).
dist A data frame containing the permutational distribution of the test statistic
(if distr == TRUE).
tstat The observed value of the test statistic (if distr == TRUE).

References

Corcoran C, Ryan L, Senchaudhuri P, Mehta C, Patel N, Molenberghs G (2001). “An Exact Trend Test for Correlated Binary Data.” Biometrics, 57, 941–948. doi:10.1111/j.0006-341x.2001.00941.x.

Mehta CR, Patel N, Senchaudhuri P (1992). “Exact Stratified Linear Rank Tests for Ordered Categorical and Binary Data.” Journal of Computational and Graphical Statistics, 1(1), 21–40. doi:10.2307/1390598.

Normand ST (1999). “Meta-analysis: formulating, evaluating, combining, and reporting.” Statistics in Medicine, 18, 321–359.

Zabriskie BN, Corcoran C, Senchaudhuri P (2021). “A Permutation-Based Approach for Heterogeneous Meta-Analyses of Rare Events.” Statistics in Medicine, 40(25), 5587–5604. doi:10.1002/sim.9142.

See Also

metabin and metafor for more traditional meta-analysis methods for combining odds ratios.

Examples

# Lidocaine data set from Normand (1999)
rema(trt.events = c(2, 4, 6, 7, 7, 11),
     trt.total = c(39, 44, 107, 103, 110, 154),
     ctrl.events = c(1, 4, 4, 5, 3, 4),
     ctrl.total = c(43, 44, 110, 100, 106, 146),
     mid.p = FALSE,
     distr = FALSE,
     one.sided.p = TRUE)

# Example using a rema object as the input once the permutational
# distribution is obtained
my.rema.object <- rema(trt.events = c(1, 2, 0, 2, 0, 0, 1, 0, 1, 0),
                       trt.total = c(30, 14, 30, 49, 38, 11, 31, 13, 49, 23),
                       ctrl.events = c(4, 3, 3, 0, 4, 4, 3, 2, 3, 4),
                       ctrl.total = c(15, 26, 42, 24, 40, 26, 47, 24, 27, 26),
                       mid.p = FALSE,
                       distr = TRUE,
                       one.sided.p = FALSE)
rema(rema.obj = my.rema.object,
     mid.p = TRUE)

## Not run: 
# Vectors of non-whole numbers (such as after applying a continuity correction)
rema(trt.events = c(0.5, 0.5, 1, 3),
     trt.total = c(2, 5, 4, 12),
     ctrl.events = c(2.5, 4.5, 6, 7),
     ctrl.total = c(7, 9, 11, 12))

# Vectors with greater observed events than total observations
rema(trt.events = c(11, 13, 7, 10),
     trt.total = c(10, 12, 5, 7),
     ctrl.events = c(22, 25, 32, 26),
     ctrl.total = c(20, 20, 30, 25))

## End(Not run)