Foundations
Part 1 of a tutorial on computationally reproducible research. Next: failure modes.
Two questions that sound alike
Take any published quantitative finding. There are two very different ways to ask whether it holds up:
- If I rerun the analysis, with the same data and the same code, do I get the same numbers?
- If I redo the study, with new data and the same question, do I reach the same conclusion?
The first is reproducibility; the second is replicability. The National Academies’ consensus report (2019), the closest thing the field has to a standard, defines them this way:
Reproducibility is obtaining consistent results using the same input data; computational steps, methods, and code; and conditions of analysis. … Replicability is obtaining consistent results across studies aimed at answering the same scientific question, each of which has obtained its own data. National Academies of Sciences, Engineering, and Medicine (2019)
The report adds, pointedly: “As defined by the committee, reproducibility relates strictly to computational reproducibility.” That is this tutorial’s subject. Replication, with all its questions of theory, measurement, and sampling, is a different and larger topic; reproducibility is the humbler precondition. If the same data and code don’t yield the same numbers, there is nothing stable to replicate.
The Turing Way arranges the possibilities in a 2×2 that is worth committing to memory:
| Same analysis | Different analysis | |
|---|---|---|
| Same data | Reproducible | Robust |
| Different data | Replicable | Generalisable |
The third cell, robustness (same data, different defensible analysis choices), will come up repeatedly, because it turns out results often depend on those choices far more than anyone expects.
The boundary is genuinely fuzzy
If you find the terminology confusing, you are in excellent company; the confusion is structural, not personal. Barba (2018) surveyed usage across fields and found three incompatible camps: fields that use the words interchangeably; fields that use reproduce for same-data, same-code (the convention here, inherited from Claerbout and Peng); and fields, including parts of computer science, microbiology, and FASEB, that define them exactly backwards relative to the second group. As she put it, “different groups are using terminologies in utter contradiction with each other.”
The best single illustration: the ACM, which awards “Results Reproduced” badges on papers, used the reversed definitions from 2016 to 2020, then swapped the meanings of the two words in August 2020 to align with the National Academies. A badge on a 2019 paper and the same badge on a 2021 paper certify different things. So when you read any claim about “reproducibility rates,” check which definition is in force before you quote the number.
The lineage of an idea
Computational reproducibility as a discipline has a birthplace: exploration geophysics. Jon Claerbout’s Stanford group, drowning in un-rerunnable seismic analyses, rebuilt its research process in the early 1990s so that every figure in a dissertation could be regenerated by a single command (Claerbout & Karrenbach, 1992). Buckheit and Donoho, importing the practice to statistics with WaveLab, distilled the philosophy into the lines quoted on the main page: the article is merely advertising of the scholarship; the actual scholarship is the environment and the instructions that generated the figures.
Peng (2011) turned this into a practical spectrum. Between “not reproducible” (publication only) and the gold standard (full replication) lie graduated states: publication plus code; plus code and data; plus linked and executable code and data. Two ideas in that framing do a lot of work:
- Reproducibility is a spectrum rather than a binary. Projects move along it one artifact at a time, and every step counts.
- Reproducibility is “a minimum standard for judging scientific claims when full independent replication of a study is not possible.” It is a floor rather than a ceiling.
Goodman, Fanelli, and Ioannidis (2016) offer a finer-grained lexicon if you need one: methods reproducibility (can the procedures be re-executed exactly?), results reproducibility (does a new study corroborate?), and inferential reproducibility (do the same data support the same conclusions?). For this tutorial, the National Academies definitions suffice.
How close is “the same”?
Here is a question that sounds pedantic and is actually foundational: if you rerun an analysis and get 0.4999997 where the paper says 0.50, did it reproduce?
There are three defensible standards, and mature projects choose deliberately among them:
- Bit-exact. The strictest standard: identical bytes out. Hinsen’s
argument
for it is epistemic: “If two computations lead to similar but slightly
different results, how do you decide if this is due to a bug or to some
‘inevitable’ fuzziness? … you can’t.” Bit-exactness makes verification
trivial (
diffsuffices), and it is achievable far more often than people assume. - Bounded-error / statistical. Results match within a stated tolerance, or estimated quantities agree within Monte Carlo error. This is the right standard for stochastic computation (MCMC, bootstrap, stochastic optimization) when the stochasticity itself can’t or shouldn’t be pinned, and for floating-point work across platforms. The National Academies explicitly allow results within “an accepted range of variation.”
- Semantic. The conclusions (sign, significance, approximate magnitude) survive even if the digits differ. This is the weakest standard, and the one most audits fall back to implicitly. Say so explicitly if it’s the one you’re using.
Large-scale efforts operationalize this concretely: the reproducibility arm of a major program in the social and behavioral sciences (Miske et al., 2026) scored a claim as precisely reproduced when the recomputed numbers matched, and approximately reproduced when effect sizes landed within 15% of the original and p-values within 0.05. Under those definitions, 53.6% of claims reproduced precisely and 73.5% approximately. The gap between those two numbers is the tolerance question, quantified.
A useful discipline you’ll meet again in the audit: decide for each result which standard applies. A table of descriptive statistics should be bit-exact. A bootstrapped confidence interval should be bit-exact given the seed, and statistically stable across seeds. A conclusion should survive all of it.
By the way, this page can run Python. Here’s the tolerance question in its
smallest possible form (run it, then try == in place of isclose):
What the evidence shows
How often does published research clear even the low bar? The reproduction literature now spans a decade and several hundred audited papers. Three patterns recur.
Pattern 1: availability is the first wall. Before anyone can rerun anything, the materials must exist somewhere findable.
| Study | What was attempted | What happened |
|---|---|---|
| Stodden, Seiler & Ma (2018), PNAS | 204 computational articles in Science, which had a sharing policy | Artifacts obtained for 44%; only 36% of emailed authors provided them; 26% of findings reproduced |
| Miske et al. (2026), Nature | 600 papers across the social and behavioral sciences | Data publicly available for 24% |
| Collberg & Proebsting (2016), CACM | ~600 computer-systems papers | Code built within 30 minutes for 32% |
Pattern 2: even with materials in hand, exactness is roughly a coin flip.
| Study | What was attempted | What happened |
|---|---|---|
| Hardwicke et al. (2018), Royal Society Open Science | Reanalysis of articles with reusable open data in Cognition | 22 of 35 fully reproduced, but 11 of those required contacting the authors; 13 had at least one unresolved discrepancy |
| Hardwicke et al. (2021), Royal Society Open Science | 25 open-badge articles in Psychological Science | 36% reproducible without author help; 64% initially had at least one major discrepancy |
| Obels et al. (2020), AMPPS | 62 Registered Reports in psychology | 36 shared data and code; main results reproduced for 21 of 36 |
| Crüwell et al. (2023), Psychological Science | 14 open-data-badged articles in a single issue | Exactly one reproduced exactly; only 6 provided any code |
| Miske et al. (2026), Nature | 143 papers with obtainable data | 53.6% precise / 73.5% approximate; with shared data and code, 77% / 91%; with reconstructed data, 11% / 38% |
| Breznau et al. (2025), Royal Society Open Science | ~85 teams independently reproduce one published study | Given the code: 95.7% matched sign and significance, 76.9% matched to the second decimal. Without it: 89.3% and 48.1% |
That last row deserves a second look: it is as close as the literature gets to a controlled experiment on transparency, and sharing code roughly doubled the exact-reproduction rate (48% to 77%).
Pattern 3: analytic flexibility is its own, independent source of variation. Even perfect reproduction of one pipeline understates the uncertainty, because defensible pipelines disagree:
| Study | Setup | Spread |
|---|---|---|
| Silberzahn et al. (2018), AMPPS | 29 teams, one dataset, one question (skin tone and red cards) | Odds ratios 0.89–2.93; 69% found a significant effect, 31% did not |
| Botvinik-Nezer et al. (2020), Nature | 70 teams analyze one fMRI dataset, nine hypotheses | Support rates ranged 21–84% by hypothesis; no two teams chose identical workflows |
| Breznau et al. (2022), PNAS | 73 teams, 1,253 models, one sociological question | Estimates spanned both directions; “more than 95% of the total variance in numerical results remains unexplained” |
| Aczel et al. (2026), Nature | 100 papers, ≥5 independent reanalysts each | 34% of reanalyses matched the original effect within ±0.05 Cohen’s d; 74% reached the same conclusion |
| Gould et al. (2025), BMC Biology | 174 teams, two ecology datasets | Estimates crossed zero in both directions; unrelated to analyst experience |
Why failures stay invisible
A final foundation before the taxonomy: reproducibility failures are distinctive in that nothing announces them. Code that depends on an unseeded RNG, an unpinned library, or an undocumented manual step runs without complaint today, on your machine. The failure only comes into view when someone attempts reproduction, which for most papers is never (and, when it does happen, is usually years later, when the laptop is gone and the postdoc has moved on). The Hardwicke et al. authors captured the implied standard drily: “repeating the original analyses upon the original data should yield the original outcomes.” The surprise is only that this needs saying.
This is why the next part of the tutorial is organized the way it is. You cannot fix what you cannot see, so the first skill is diagnosis: knowing the small set of mechanisms by which working code quietly becomes irreproducible code.
Discussion questions
- Think of the oldest project someone might still email you about. If a stranger asked you today to regenerate its key figure, what would actually happen? Walk through the steps.
- You rerun a collaborator’s analysis and get p = .052 where the paper says p = .049. Did it reproduce? Who gets to decide, and when should that standard have been set?
- What do “reproduce” and “replicate” mean in your corner of the field? Have you seen the definitions collide in a review or collaboration?
- Does the ~50% precise-reproduction figure surprise you? Would your own literature do better or worse, and what makes you think so?
Next: Part 2 · Failure modes, where each of those mechanisms fails live, in your browser.