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.
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.33879A 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.2134Heterogeneity statistics can be obtained using:
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.02828427The 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.33879Alternative 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.33879A prediction interval accounts for between-study heterogeneity and describes the expected range of the underlying proportion in a future comparable study.
A forest plot displays the individual study proportions and the pooled estimate.
A funnel plot can be used as a graphical assessment of possible small-study effects.
Funnel-plot asymmetry can have several possible causes and should be interpreted cautiously, particularly when the number of studies is small.
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.26246Each subgroup is analysed separately using the ProMetaR meta-analysis framework.
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-04Meta-regression should be interpreted cautiously, particularly when only a small number of studies are available.
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> 0Influence 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.00000Large changes in the pooled estimate following removal of an individual study may indicate substantial influence of that study on the overall result.
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.00016927This diagnostic should be interpreted cautiously, especially when the meta-analysis contains only a small number of studies.
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.34885The Freeman-Tukey double-arcsine method is supplied primarily as a sensitivity analysis because its back-transformation can be sensitive to study sample sizes.
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.00016927Meta-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.
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.