Meta-Analysis of Proportions with ProMetaR

Introduction

ProMetaR performs meta-analysis of proportions using study-level event counts and sample sizes.

The package supports transformation-based meta-analysis, random-effects estimation, heterogeneity assessment, prediction intervals, subgroup analysis, meta-regression, leave-one-out sensitivity analysis, influence diagnostics, forest plots, funnel plots, small-study effect diagnostics, and an optional binomial generalized linear mixed model interface.

Basic analysis

A meta-analysis of proportions can be performed using the number of events and the corresponding sample size from each study.

The following example uses four hypothetical studies.

library(ProMetaR)

dat <- data.frame(
  study = paste0("Study ", 1:4),
  events = c(12, 25, 18, 40),
  n = c(100, 150, 120, 200)
)

fit <- meta_prop(
  events = dat$events,
  n = dat$n,
  studlab = dat$study
)

fit
#> ProMetaR: Meta-analysis of proportions
#> Studies:4
#> Transformation:logit
#> Random-effects estimator:REML
#> 
#> Random-effects proportion:0.136 (0.203,   NA)
#> Heterogeneity: I2 = 10.8%, tau2 = 0.009, Q p = 0.33879

A summary of the fitted model can be obtained with:

summary_prop(fit)
#>   studies transform method pooled_proportion  lower upper   tau2      I2      Q
#> 1       4     logit   REML            0.1361 0.2034    NA 0.0086 10.8286 3.3643
#>   Q_df    Q_p prediction_lower prediction_upper
#> 1    3 0.3388           0.1292           0.2134

Heterogeneity statistics can be obtained using:

prop_heterogeneity(fit)
#> $Q
#> [1] 3.364308
#> 
#> $df
#> [1] 3
#> 
#> $p
#> [1] 0.3387921
#> 
#> $I2
#> [1] 10.8286
#> 
#> $H2
#> [1] 1.121436
#> 
#> $tau2
#> [1] 0.008584995
#> 
#> $tau
#> [1] 0.09265525

Transformations

The logit transformation is the default transformation used by meta_prop().

Alternative transformations can be examined as sensitivity analyses, particularly when proportions are close to zero or one. The prop_transform() function uses study-level event counts and sample sizes.

prop_transform(
  events = dat$events,
  n = dat$n,
  method = "logit"
)
#>   events   n proportion transformed   variance        se
#> 1     12 100  0.1200000   -1.992430 0.09469697 0.3077287
#> 2     25 150  0.1666667   -1.609438 0.04800000 0.2190890
#> 3     18 120  0.1500000   -1.734601 0.06535948 0.2556550
#> 4     40 200  0.2000000   -1.386294 0.03125000 0.1767767

prop_transform(
  events = dat$events,
  n = dat$n,
  method = "arcsine"
)
#>   events   n proportion transformed    variance         se
#> 1     12 100  0.1200000   0.3537416 0.002500000 0.05000000
#> 2     25 150  0.1666667   0.4205343 0.001666667 0.04082483
#> 3     18 120  0.1500000   0.3976994 0.002083333 0.04564355
#> 4     40 200  0.2000000   0.4636476 0.001250000 0.03535534

prop_transform(
  events = dat$events,
  n = dat$n,
  method = "raw"
)
#>   events   n proportion transformed     variance         se
#> 1     12 100  0.1200000   0.1200000 0.0010560000 0.03249615
#> 2     25 150  0.1666667   0.1666667 0.0009259259 0.03042903
#> 3     18 120  0.1500000   0.1500000 0.0010625000 0.03259601
#> 4     40 200  0.2000000   0.2000000 0.0008000000 0.02828427

Random-effects meta-analysis

The default random-effects model uses the REML estimator.

fit_reml <- meta_prop(
  events = dat$events,
  n = dat$n,
  studlab = dat$study,
  method = "REML"
)

fit_reml
#> ProMetaR: Meta-analysis of proportions
#> Studies:4
#> Transformation:logit
#> Random-effects estimator:REML
#> 
#> Random-effects proportion:0.136 (0.203,   NA)
#> Heterogeneity: I2 = 10.8%, tau2 = 0.009, Q p = 0.33879

Alternative between-study variance estimators can be used for sensitivity analyses.

fit_dl <- meta_prop(
  events = dat$events,
  n = dat$n,
  studlab = dat$study,
  method = "DL"
)

fit_pm <- meta_prop(
  events = dat$events,
  n = dat$n,
  studlab = dat$study,
  method = "PM"
)

fit_dl
#> ProMetaR: Meta-analysis of proportions
#> Studies:4
#> Transformation:logit
#> Random-effects estimator:DL
#> 
#> Random-effects proportion:0.137 (0.203,   NA)
#> Heterogeneity: I2 = 10.8%, tau2 = 0.007, Q p = 0.33879
fit_pm
#> ProMetaR: Meta-analysis of proportions
#> Studies:4
#> Transformation:logit
#> Random-effects estimator:PM
#> 
#> Random-effects proportion:0.137 (0.203,   NA)
#> Heterogeneity: I2 = 10.8%, tau2 = 0.006, Q p = 0.33879

Prediction interval

A prediction interval accounts for between-study heterogeneity and describes the expected range of the underlying proportion in a future comparable study.

predict_prop(fit_reml)
#> [1] 0.1291623 0.2134249

Forest plot

A forest plot displays the individual study proportions and the pooled estimate.

forest_prop(fit_reml)

Funnel plot

A funnel plot can be used as a graphical assessment of possible small-study effects.

funnel_prop(fit_reml)

Funnel-plot asymmetry can have several possible causes and should be interpreted cautiously, particularly when the number of studies is small.

Subgroup analysis

Subgroup analyses can be performed using a categorical variable with one value for each study.

dat$group <- c(
  "Group A",
  "Group A",
  "Group B",
  "Group B"
)

sub_fit <- subgroup_prop(
  fit_reml,
  subgroup = dat$group
)

sub_fit
#> ProMetaR subgroup meta-analysis
#> 
#> [Group A]
#> ProMetaR: Meta-analysis of proportions
#> Studies:2
#> Transformation:logit
#> Random-effects estimator:REML
#> 
#> Random-effects proportion:0.110 (0.200,   NA)
#> Heterogeneity: I2 = 2.7%, tau2 = 0.002, Q p = 0.31064
#> 
#> [Group B]
#> ProMetaR: Meta-analysis of proportions
#> Studies:2
#> Transformation:logit
#> Random-effects estimator:REML
#> 
#> Random-effects proportion:0.137 (0.234,   NA)
#> Heterogeneity: I2 = 20.4%, tau2 = 0.012, Q p = 0.26246

Each subgroup is analysed separately using the ProMetaR meta-analysis framework.

Meta-regression

Study-level moderators can be examined using meta-regression.

moderators <- data.frame(
  region = factor(
    c("North", "North", "South", "South")
  ),
  sample_size = dat$n
)

mr <- metareg_prop(
  fit_reml,
  moderators = moderators
)

mr
#>                 estimate         SE           z            p
#> (Intercept) -2.416169749 0.19352811 -12.4848514 9.031177e-36
#> regionSouth  0.035416803 0.10621581   0.3334419 7.388007e-01
#> sample_size  0.005073008 0.00136396   3.7193231 1.997574e-04

Meta-regression should be interpreted cautiously, particularly when only a small number of studies are available.

Leave-one-out sensitivity analysis

The influence of individual studies can be assessed by repeating the meta-analysis after omitting each study in turn.

loo <- loo_prop(fit_reml)

loo
#>    study          estimate             lower upper               I2
#>  Study 1 0.145479260913066 0.214984329065548  <NA>                0
#>  Study 2 0.119723716277262 0.216841860623377  <NA> 40.4393833065782
#>  Study 3 0.131178586321893    0.216833984695  <NA>  33.135620478939
#>  Study 4 0.116699143280373 0.189980919892914  <NA>                0

Influence diagnostics

Influence measures based on the leave-one-out analyses can be obtained using:

influence_prop(fit_reml)
#>     study estimate_loo       change   I2_loo
#> 1 Study 1    0.1454793  0.009334010  0.00000
#> 2 Study 2    0.1197237 -0.016421535 40.43938
#> 3 Study 3    0.1311786 -0.004966665 33.13562
#> 4 Study 4    0.1166991 -0.019446108  0.00000

Large changes in the pooled estimate following removal of an individual study may indicate substantial influence of that study on the overall result.

Small-study effect diagnostic

ProMetaR provides an Egger-type regression diagnostic for exploratory assessment of small-study effects.

bias_prop(fit_reml)
#> ProMetaR small-study effect diagnostic
#> Intercept: -7.111918 
#> p-value: 0.00016927

This diagnostic should be interpreted cautiously, especially when the meta-analysis contains only a small number of studies.

Freeman-Tukey double-arcsine transformation

The Freeman-Tukey double-arcsine transformation is available using transform = "pft".

fit_pft <- meta_prop(
  events = dat$events,
  n = dat$n,
  studlab = dat$study,
  transform = "pft"
)

fit_pft
#> ProMetaR: Meta-analysis of proportions
#> Studies:4
#> Transformation:pft
#> Random-effects estimator:REML
#> 
#> Random-effects proportion:0.134 (0.200,   NA)
#> Heterogeneity: I2 = 8.9%, tau2 = 0.001, Q p = 0.34885

The Freeman-Tukey double-arcsine method is supplied primarily as a sensitivity analysis because its back-transformation can be sensitive to study sample sizes.

Optional binomial GLMM

ProMetaR provides an optional interface to a binomial generalized linear mixed model through the metafor package.

The following example demonstrates the GLMM interface without executing the optional model during vignette rebuilding.

fit_glmm <- meta_prop_glmm(
  events = dat$events,
  n = dat$n,
  studlab = dat$study
)

fit_glmm

The GLMM approach provides an alternative modelling framework based
directly on the binomial distribution and can be useful as a sensitivity
analysis, particularly for proportions close to zero or one.

## Complete workflow

A basic ProMetaR workflow can be summarized as follows:
fit <- meta_prop(
  events = dat$events,
  n = dat$n,
  studlab = dat$study,
  method = "REML",
  transform = "logit"
)

summary_prop(fit)
#>   studies transform method pooled_proportion  lower upper   tau2      I2      Q
#> 1       4     logit   REML            0.1361 0.2034    NA 0.0086 10.8286 3.3643
#>   Q_df    Q_p prediction_lower prediction_upper
#> 1    3 0.3388           0.1292           0.2134

prop_heterogeneity(fit)
#> $Q
#> [1] 3.364308
#> 
#> $df
#> [1] 3
#> 
#> $p
#> [1] 0.3387921
#> 
#> $I2
#> [1] 10.8286
#> 
#> $H2
#> [1] 1.121436
#> 
#> $tau2
#> [1] 0.008584995
#> 
#> $tau
#> [1] 0.09265525

predict_prop(fit)
#> [1] 0.1291623 0.2134249

forest_prop(fit)

Additional sensitivity analyses can then be performed:

loo_prop(fit)
#>    study          estimate             lower upper               I2
#>  Study 1 0.145479260913066 0.214984329065548  <NA>                0
#>  Study 2 0.119723716277262 0.216841860623377  <NA> 40.4393833065782
#>  Study 3 0.131178586321893    0.216833984695  <NA>  33.135620478939
#>  Study 4 0.116699143280373 0.189980919892914  <NA>                0

influence_prop(fit)
#>     study estimate_loo       change   I2_loo
#> 1 Study 1    0.1454793  0.009334010  0.00000
#> 2 Study 2    0.1197237 -0.016421535 40.43938
#> 3 Study 3    0.1311786 -0.004966665 33.13562
#> 4 Study 4    0.1166991 -0.019446108  0.00000

bias_prop(fit)
#> ProMetaR small-study effect diagnostic
#> Intercept: -7.111918 
#> p-value: 0.00016927

Interpretation

Meta-analysis of proportions requires consideration of study design, sample size, event frequency, transformation choice, and between-study heterogeneity.

For proportions close to zero or one, results should preferably be examined using more than one appropriate analytical approach. The choice of transformation and between-study variance estimator can affect the pooled estimate.

The optional binomial GLMM provides an alternative model-based sensitivity analysis.

Conclusion

ProMetaR provides a focused workflow for meta-analysis of proportions and prevalence, including transformation-based random-effects models, heterogeneity assessment, prediction intervals, subgroup analysis, meta-regression, leave-one-out sensitivity analysis, influence diagnostics, forest plots, funnel plots, small-study effect diagnostics, and an optional binomial GLMM interface.