|
| 1 | +# High-Value Meta-Analysis Paper Reproducibility Audit |
| 2 | + |
| 3 | +Use this reference when a published meta-analysis is valuable enough to become a reusable method template, especially papers from journals such as *Nature Communications*, *Nature Sustainability*, *Nature Food*, *PNAS*, *Science Advances*, or major field journals with public code/data. |
| 4 | + |
| 5 | +The goal is not only to read the paper. The goal is to understand **how the paper was made** and whether its workflow can be reused by the user or other researchers. |
| 6 | + |
| 7 | +## When To Trigger |
| 8 | + |
| 9 | +Trigger this audit when the user says a paper is: |
| 10 | + |
| 11 | +- "good", "worth learning", "can be put into the skills", or "can be reused"; |
| 12 | +- from a high-impact journal and methodologically rich; |
| 13 | +- a meta-analysis with supplementary data, code, or peer-review files; |
| 14 | +- a paper combining meta-analysis with `rma.mv`, random forest, PLS-PM/SEM, machine learning, spatial data, or external covariates; |
| 15 | +- a paper whose data table format or R code may become a template. |
| 16 | + |
| 17 | +## Core Principle |
| 18 | + |
| 19 | +Do not stop at the abstract, conclusions, or pooled effect. |
| 20 | + |
| 21 | +For a reusable article, extract five layers: |
| 22 | + |
| 23 | +1. **Article logic**: research question, outcome families, conceptual framing. |
| 24 | +2. **Data logic**: search, screening, coding sheet, raw data table, derived data table, external covariates. |
| 25 | +3. **Effect-size logic**: formulas, variable scale, uncertainty, shared controls, dependence structure. |
| 26 | +4. **Code logic**: R/Python scripts, package versions, function calls, model objects, output files. |
| 27 | +5. **Reproducibility logic**: README quality, session info, data/code repository, file paths, missing pieces, reviewer comments. |
| 28 | + |
| 29 | +## Required Extraction Checklist |
| 30 | + |
| 31 | +### 1. Data And Repository Inventory |
| 32 | + |
| 33 | +Record: |
| 34 | + |
| 35 | +- DOI / article URL; |
| 36 | +- supplementary files; |
| 37 | +- peer-review files, if available; |
| 38 | +- code/data repository URL and DOI; |
| 39 | +- repository platform: Figshare, Zenodo, OSF, GitHub, Dryad, institutional archive; |
| 40 | +- whether the repository has raw data, processed data, code, README, session info, and generated outputs; |
| 41 | +- whether files are versioned and whether the paper references the final version. |
| 42 | + |
| 43 | +If code/data are not in the local folder, state that explicitly and provide the repository link for the next step. |
| 44 | + |
| 45 | +### 2. Data Table Structure |
| 46 | + |
| 47 | +Extract the data table schema whenever possible. |
| 48 | + |
| 49 | +Minimum fields to look for: |
| 50 | + |
| 51 | +```text |
| 52 | +study_id |
| 53 | +effect_id |
| 54 | +reference |
| 55 | +year |
| 56 | +country |
| 57 | +latitude |
| 58 | +longitude |
| 59 | +outcome_family |
| 60 | +outcome_variable |
| 61 | +treatment_definition |
| 62 | +control_definition |
| 63 | +treatment_mean |
| 64 | +control_mean |
| 65 | +treatment_sd |
| 66 | +control_sd |
| 67 | +treatment_n |
| 68 | +control_n |
| 69 | +effect_size |
| 70 | +sampling_variance_or_se |
| 71 | +effect_size_type |
| 72 | +shared_control_id |
| 73 | +moderators |
| 74 | +external_covariates |
| 75 | +quality_or_sensitivity_flags |
| 76 | +``` |
| 77 | + |
| 78 | +For ecological meta-analyses, also check: |
| 79 | + |
| 80 | +```text |
| 81 | +ecosystem |
| 82 | +soil_depth |
| 83 | +duration |
| 84 | +climate_variables |
| 85 | +soil_background |
| 86 | +species_or_taxon |
| 87 | +functional_traits |
| 88 | +management_variables |
| 89 | +spatial_scale |
| 90 | +``` |
| 91 | + |
| 92 | +### 3. Effect-Size Implementation |
| 93 | + |
| 94 | +Do not only report the effect-size name. Extract how it was computed. |
| 95 | + |
| 96 | +Check: |
| 97 | + |
| 98 | +- `lnRR`, `lnROM`, Hedges' `d`, mean difference, Fisher's `z`, odds ratio, risk ratio, or other metric; |
| 99 | +- whether each metric matches the measurement scale; |
| 100 | +- whether the original means, SDs, and sample sizes are preserved; |
| 101 | +- how CI/SE/p-values were converted; |
| 102 | +- how missing SDs or sample sizes were handled; |
| 103 | +- whether stock, flux, stability, and process outcomes were separated. |
| 104 | + |
| 105 | +Reusable rule: |
| 106 | + |
| 107 | +```text |
| 108 | +The effect-size metric should be chosen by outcome scale, not by convenience. |
| 109 | +``` |
| 110 | + |
| 111 | +### 4. Dependence And `rma.mv` |
| 112 | + |
| 113 | +For `metafor::rma.mv()` papers, extract: |
| 114 | + |
| 115 | +- model formula; |
| 116 | +- effect-size column; |
| 117 | +- variance or VCV object; |
| 118 | +- random-effects structure; |
| 119 | +- moderator formula; |
| 120 | +- method argument, such as REML; |
| 121 | +- tests and confidence intervals; |
| 122 | +- model comparison criteria such as AIC, AICc, BIC; |
| 123 | +- sensitivity analyses. |
| 124 | + |
| 125 | +Look specifically for: |
| 126 | + |
| 127 | +```r |
| 128 | +rma.mv(yi, V, mods = ..., random = ..., data = ..., method = "REML") |
| 129 | +``` |
| 130 | + |
| 131 | +For shared-control or repeated-use designs, check whether a variance-covariance matrix is constructed. |
| 132 | + |
| 133 | +Record whether the analysis handles: |
| 134 | + |
| 135 | +- multiple outcomes per study; |
| 136 | +- multiple time points; |
| 137 | +- multiple treatments sharing one control; |
| 138 | +- nested sites or experiments; |
| 139 | +- repeated measures; |
| 140 | +- phylogenetic, spatial, or taxonomic dependence if relevant. |
| 141 | + |
| 142 | +### 5. Random Forest / Machine-Learning Layer |
| 143 | + |
| 144 | +If a paper uses random forest, extract: |
| 145 | + |
| 146 | +- package name and version, such as `ranger`; |
| 147 | +- response variable; |
| 148 | +- predictors; |
| 149 | +- tuning parameters; |
| 150 | +- number of trees; |
| 151 | +- split rule or importance method; |
| 152 | +- validation strategy; |
| 153 | +- variable-importance output; |
| 154 | +- whether importance is interpreted as prediction, screening, or causal mechanism. |
| 155 | + |
| 156 | +Typical R pattern: |
| 157 | + |
| 158 | +```r |
| 159 | +ranger(response ~ predictors, data = ..., importance = ...) |
| 160 | +``` |
| 161 | + |
| 162 | +Guardrail: |
| 163 | + |
| 164 | +```text |
| 165 | +Random-forest importance is driver ranking or predictive screening, not causal proof. |
| 166 | +``` |
| 167 | + |
| 168 | +### 6. PLS-PM / PLS-SEM / Path-Model Layer |
| 169 | + |
| 170 | +If a paper uses `plspm`, SEM, or a path model, extract: |
| 171 | + |
| 172 | +- package name and version; |
| 173 | +- blocks or latent constructs; |
| 174 | +- manifest variables; |
| 175 | +- inner model/path matrix; |
| 176 | +- outer model/modes; |
| 177 | +- path coefficients; |
| 178 | +- direct and indirect effects; |
| 179 | +- model quality metrics; |
| 180 | +- whether the path logic was theory-driven or data-driven. |
| 181 | + |
| 182 | +Typical R pattern: |
| 183 | + |
| 184 | +```r |
| 185 | +plspm(data, inner_model, outer_model, modes = ...) |
| 186 | +``` |
| 187 | + |
| 188 | +Guardrail: |
| 189 | + |
| 190 | +```text |
| 191 | +PLS-PM or PLS-SEM organizes mechanism hypotheses. It does not by itself prove causality. |
| 192 | +``` |
| 193 | + |
| 194 | +### 7. Peer-Review Learning |
| 195 | + |
| 196 | +For papers with transparent review files, extract reviewer-driven upgrades: |
| 197 | + |
| 198 | +- effect-size corrections; |
| 199 | +- dependence/VCV corrections; |
| 200 | +- geographic or sample-bias limitations; |
| 201 | +- code/README/session-info requests; |
| 202 | +- model interpretation changes; |
| 203 | +- wording changes around causality; |
| 204 | +- additional sensitivity checks. |
| 205 | + |
| 206 | +These are often the most useful lessons for writing a reviewer-proof meta-analysis. |
| 207 | + |
| 208 | +## Output Standard |
| 209 | + |
| 210 | +For a high-value paper, produce an audit report with: |
| 211 | + |
| 212 | +```text |
| 213 | +1. File/repository inventory |
| 214 | +2. How the paper was made |
| 215 | +3. Data table structure |
| 216 | +4. Effect-size and uncertainty logic |
| 217 | +5. rma.mv / model implementation |
| 218 | +6. Random forest implementation |
| 219 | +7. PLS-PM or path-model implementation |
| 220 | +8. Reproducibility gaps |
| 221 | +9. What can be reused as a skill |
| 222 | +10. Prompts/templates for future use |
| 223 | +``` |
| 224 | + |
| 225 | +## Minimum Verdict Categories |
| 226 | + |
| 227 | +Use these labels: |
| 228 | + |
| 229 | +- **Readable only**: article is useful conceptually, but code/data are absent. |
| 230 | +- **Partially reproducible**: data or code are available, but missing README/session info or some scripts. |
| 231 | +- **Workflow reusable**: article has enough data structure and code logic to become a reusable template. |
| 232 | +- **Full reproduction candidate**: code, data, package versions, and outputs are sufficient for rerun and verification. |
| 233 | + |
| 234 | +## Do Not |
| 235 | + |
| 236 | +- Do not claim the paper is reproducible until code and data have been inspected. |
| 237 | +- Do not infer R code from methods when public code is available but not yet checked. |
| 238 | +- Do not merge article reading with code reproduction; record what came from the paper and what came from code. |
| 239 | +- Do not call random forest, SHAP, or PLS-PM causal without design justification. |
| 240 | +- Do not hide missing files. Missing code/data is a finding, not a failure. |
0 commit comments