The hardware and bandwidth for this mirror is donated by METANET, the Webhosting and Full Service-Cloud Provider.
If you wish to report a bug, or if you are interested in having us mirror your free-software or open-source project, please feel free to contact us at mirror[@]metanet.ch.

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.

These binaries (installable software) and packages are in development.
They may not be fully stable and should be used with caution. We make no claims about them.