Skip to content
metaproc
Launch

Methods you can defend

MetaProc does not reinvent the statistics. It drives the same gold-standard R engines the field already trusts, and proves it stays faithful to them with a large automated test suite.

The engines, not a re-implementation

Every pooled estimate, plot, and diagnostic in MetaProc is computed by the established meta-analysis packages, not by hand-rolled statistics. The app's job is to make those engines accessible from buttons and templates, then get out of the way.

EngineWhat it powers
metaforPairwise pooling, diagnostics, three-level and multivariate models (escalc, rma, rma.mh, rma.peto, rma.glmm, rma.mv).
netmetaFrequentist network meta-analysis (pairwise, netmeta): league tables, P-scores, net-split.
metaLocked reference dependency in the meta-analysis ecosystem.
robvisRisk-of-bias traffic-light and summary figures.
escEffect-size conversions between reported statistics.

Golden-tested against the reference output

"Golden testing" means we capture the exact output of the underlying engine for a fixed set of inputs and assert that MetaProc reproduces it, so the app can never silently drift from what metafor or netmeta would give you. Across the regression baseline, MetaProc matches the reference engines on 96 of 96 golden cases, inside a wider suite of 2,600+ automated tests that exercise importing, cleaning, every template, the pipeline, appraisal, and reporting.

The point is not that the number is large. It is that the numbers MetaProc shows you are the same numbers a methodologist would get running the R code by hand.

Code capture: what you see is what ran

MetaProc's defining principle is SAS-like reproducible code capture. Every model, table, figure, and graphic is produced by building R code as text from your choices, evaluating that exact text, and displaying the same text in a copyable panel. The code in the "R code" panel is, by construction, what actually executed.

That means three things you can rely on: you can audit any result by reading the code that produced it; you can reproduce it outside the app by copying that code into a plain R session; and your methods section can quote the real call, not a paraphrase. The reproducibility bundle goes further: it ships a runnable analysis.R, the dataset it reads, sessionInfo(), and an renv.lock pinning exact package versions, so a reviewer can re-run your analysis in a clean R session and land on the same pooled estimate.

Honest about scope

MetaProc is frequentist only: there is no Bayesian pairwise or network meta-analysis, no diagnostic test-accuracy (bivariate/HSROC), and no dose-response or IPD meta-analysis. The pipeline builder is currently locked to the binary base template. We would rather name these limits plainly than imply coverage we do not have; the product manual lists exactly what does and does not exist.