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.
| Engine | What it powers |
|---|---|
metafor | Pairwise pooling, diagnostics, three-level and multivariate models (escalc, rma, rma.mh, rma.peto, rma.glmm, rma.mv). |
netmeta | Frequentist network meta-analysis (pairwise, netmeta): league tables, P-scores, net-split. |
meta | Locked reference dependency in the meta-analysis ecosystem. |
robvis | Risk-of-bias traffic-light and summary figures. |
esc | Effect-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.