Sex Differences in Marathon Pacing: Analysis of 873,000 Berlin Marathon Runners Reveals Men are Twice as Likely to "Hit the Wall"
Cluster-scale analysis of 873,334 finishers of the Berlin Marathon (1999–2025), examining sex differences in pacing stability and the prevalence of catastrophic deceleration.
Published in Scientific Reports (2026) 16:19529. DOI: 10.1038/s41598-026-56334-7. Open Access (CC BY 4.0). This repository is the frozen code-and-figures companion to the published article; the version of record is included as paper.pdf.
The study drew broad international press coverage on publication (July 2026), appearing in more than 40 outlets across 15+ countries.
Selected coverage
- United States — Scientific American (interview)
- Brazil — Superinteressante
- United Kingdom — The Times; a live interview on Times Radio; Daily Mail
- Germany — Spektrum der Wissenschaft, Die Zeit, Der Tagesspiegel, Handelsblatt
- Switzerland — Le Temps, watson
- Spain — La Vanguardia (print front page, Society section)
- Italy — Galileo, La ConoScienza
- Netherlands — Scientias
- India — ThePrint
- Australia — The Australian
- Asia — Nature Japan (Japanese research highlight); Sina Tech and China News Service (China)
- Russia — N+1
- Pan-European — Euronews (English and Portuguese editions)
- Running & science media — Marathon Handbook, Medical Xpress
The findings were also carried via the dpa (Germany), Keystone-SDA (Switzerland) and EFE (Spain and Latin America) news wires, including t-online, WirtschaftsWoche, Rhein-Zeitung, Freie Presse, Heilbronner Stimme, Westdeutsche Zeitung, Neue Westfälische, Werra-Rundschau, Soester Anzeiger, Berliner Abendblatt, Bietigheimer Zeitung and Ludwigsburger Kreiszeitung (Germany); Sarganserländer, Nau.ch, Radio Central, Blick and bluewin (Switzerland); HDsports (Austria); Aragón Radio, ABC Color, Diario de Yucatán and UDG TV (Spain, Paraguay and Mexico); and marathon4you and Scimex, among others.
- Aldo Seffrin¹ — ORCID: 0000-0001-8229-8565
- Elias Villiger² — ORCID: 0000-0001-8371-1390
- Marília Santos Andrade³ — ORCID: 0000-0002-7004-4565
- Thomas Rosemann² — ORCID: 0000-0002-6436-6306
- Katja Weiss² — ORCID: 0000-0003-1247-6754
- Beat Knechtle²* — ORCID: 0000-0002-2412-9103
1 — Nova O2 Sports Science, São José dos Campos, Brazil 2 — Institute of Primary Care, University of Zurich, Zurich, Switzerland 3 — Department of Physiology, Federal University of São Paulo, Brazil
*Corresponding author
Among 873,334 finishers of the Berlin Marathon (1999–2025), male runners exhibited a twofold higher risk of "hitting the wall" — operationally defined as a ≥20% slowdown in the second half of the race relative to the first — compared with female runners (17.63% vs 9.66%; OR = 2.00, 95% CI 1.97–2.03). After adjustment for age and performance category, the disparity strengthened (adjusted OR = 3.88, 95% CI 3.81–3.94). The gap widened markedly among the fastest runners: in the sub-3h cohort, men were approximately six times more likely to experience catastrophic deceleration than women (1.42% vs 0.23%). Mean percentage slowdown was significantly greater in men across all five performance categories (10.73% ± 11.41% vs 8.34% ± 8.91%; p < 0.001).
- n = 873,334 finishers (men: 659,294, 75.5% — women: 214,040, 24.5%)
- Pacing-valid analytical cohort: n = 872,670 (excluding 664 finishers without valid half-marathon split data)
- Deduplicated sensitivity subset: n = 700,877 (first appearance per composite key of normalized name + age group)
- Source: Official BMW Berlin Marathon Results Archive
- Period: 27 editions, 1999–2025
- Inclusion: chip-timed finishers with valid net finish time and half-marathon split
- Exclusion: biologically implausible times (< 1:59:00) or beyond official cutoff (> 6:15:00); records missing critical pacing checkpoints. Total excluded: 7,445 records (0.85% of 880,779 raw entries)
- Age distribution: mature cohort; ~50% of the field aged 35–49
Only the raw dataset (the single CSV below) is archived externally due to GitHub size limits. Every processed and derivative file — including the analytical baseline wall_baseline_873k.parquet — is regenerated from that CSV by the pipeline (see Analyses), so nothing else needs to be downloaded.
- Zenodo deposit (raw CSV, citable archive): 10.5281/zenodo.19342683
| File | Format | Stage | Description |
|---|---|---|---|
Dataset_Berlin_Marathon_1999-2025_original.csv |
CSV | Raw | Web-scraped output (1999–2025); the archived Zenodo file |
Dataset_Berlin_Marathon_1999-2025.parquet |
Parquet | Optimized | CSV converted for memory efficiency (Step 1 output) |
Dataset_Berlin_Cleaned_Analysis_Ready.parquet |
Parquet | Cleaned | Nulls removed, time strings parsed, outliers filtered (Step 2 output) |
Dataset_Berlin_Features_Engineered.parquet |
Parquet | Final | Adds pacing metrics (pct_slowdown, hit_wall) (Step 3 output) |
| File | Format | Description |
|---|---|---|
wall_baseline_873k.parquet |
Parquet | Analytical cohort (n = 873,334 finishers; raw checkpoints + age_group + sex + year). Built from the raw CSV by notebooks/build_wall_baseline.py; input to the R1/R2 analyses |
dedup_subset.parquet |
Parquet | Deduplicated subset (n = 700,877; first appearance per composite key of normalized name + age group), produced by notebooks/r1_dedup_sensitivity.py and consumed by r1_logistic_age_controlled.py |
Both derivative files regenerate from the raw CSV — wall_baseline_873k.parquet via build_wall_baseline.py, then dedup_subset.parquet via r1_dedup_sensitivity.py.
To reproduce: download the raw CSV from Zenodo into data/, then build the analytical baseline with python notebooks/build_wall_baseline.py (see Analyses for the full run order). The data/ directory is gitignored.
The published statistics and figures use the analytical cohort of n = 873,334 (wall_baseline_873k.parquet). From the raw Zenodo CSV in data/:
python notebooks/build_wall_baseline.py # raw CSV -> data/wall_baseline_873k.parquet (n = 873,334)
python notebooks/r1_dedup_sensitivity.py # -> data/dedup_subset.parquet (run before the logistic script)
python notebooks/r1_logistic_age_controlled.py # adjusted OR; then run the remaining r1_* and r2_* scripts
python notebooks/generate_figures.py # Figures 1-5generate_figures.py and the r1_*/r2_* scripts operate on wall_baseline_873k.parquet and produce the published numbers (e.g. men 17.63% vs women 9.66% hitting the wall; crude OR 2.00; adjusted OR 3.88).
| Notebook | Content |
|---|---|
notebooks/OTIMIZATION.ipynb |
Step 1: memory optimization — convert raw CSV to Parquet (~60% size reduction) |
notebooks/CLEANING.ipynb |
Step 2: standardise sex encoding, parse HH:MM:SS times to seconds, apply physiological filters |
notebooks/MAIN_ANALYSIS.ipynb |
Step 3: feature engineering (pacing metrics, "wall" definition), statistical tests (Welch, Mann-Whitney U, Chi², Odds Ratios) |
These notebooks document the initial exploratory analysis; the final published cohort and statistics come from the wall_baseline pipeline above.
Additional analyses developed during peer review, with outputs written to notebooks/results/r1/ (R1 round) and notebooks/results/r2/ (R2 round).
| Notebook | Content |
|---|---|
notebooks/r1_logistic_age_controlled.py |
Multivariable logistic regression (sex + age + performance category + sex × age interaction) |
notebooks/r1_dedup_sensitivity.py |
Sensitivity analysis on deduplicated subset (composite key: normalized name + age group) |
notebooks/r1_pacing_fine_grained.py |
Fine-grained pacing metrics from 5 km splits (CV, inflection, late-deceleration, oscillation, km-30 gradient) |
notebooks/r1_age_relative_quintile.py |
Within-cohort sex × age-group quintile re-stratification |
notebooks/r1_temporal_trend.py |
27-year temporal trend (Mann-Kendall + linear regression) |
notebooks/r1_threshold_severity.py |
Threshold sensitivity (15%/20%/25%) and graded severity |
notebooks/r1_perf_cat_prevalence.py |
Per-category × sex prevalence with odds ratios |
notebooks/_r1_common.py |
Shared feature engineering, colour palette, save_results helper |
| Notebook | Content |
|---|---|
notebooks/r2_logistic_diagnostics.py |
Logistic model diagnostics — Variance Inflation Factors, McFadden pseudo-R², AIC/BIC, decile calibration with Hosmer-Lemeshow, 10-fold cross-validated recalibration intercept and slope, comparison of linear / quadratic / natural-cubic-spline parameterisations of age (likelihood-ratio + ΔAIC), Pregibon dbeta influence summary, missing-data exclusion cascade. Verbatim summary reproduced in Appendix A of the R2 response letter. |
notebooks/_r2_common.py |
R2 shared helpers — compute_vif, mcfadden_r2, decile_calibration, hosmer_lemeshow, spline_basis_age (with sum-to-zero constraint avoiding rank-deficiency against the intercept), calibration_in_the_large_and_slope_cv (10-fold cross-validated, non-degenerate). |
| Notebook | Content |
|---|---|
notebooks/generate_figures.py |
Idempotent regeneration of Figures 1–5 |
notebooks/generate_tables.py |
Idempotent regeneration of Table 2 (with crude OR + 95% CI columns added in R2) and Supplementary Tables S1–S6 (CSV → Markdown) |
- Figure 1 — Density (
figures/Figure_1_Density.tiff) — kernel density estimation of percentage slowdown by sex; visualises the heavier right tail of male pacing failures - Figure 2 — Stratified prevalence (
figures/Figure_2_Boxplot.tiff) — mean percentage slowdown by performance category × sex; the sex disparity persists across all five tiers - Figure 3 — Risk (
figures/Figure_3_Risk_Plot.tiff) — bar plot of "hitting the wall" prevalence by sex with 95% CIs and odds ratio annotation - Figure 4 — Fine-grained pacing variability (
figures/Figure_4_Pacing_Variability.tiff) — five 5 km-split-derived metrics (CV, inflection km, late-deceleration %, oscillation, km-30 gradient) by sex - Figure 5 — Temporal trend (
figures/Figure_5_Temporal_Trend.tiff) — wall prevalence by sex across 27 editions (1999–2025) with Mann-Kendall and linear-regression annotations
.
├── README.md # This file
├── paper.pdf # Version of record (Sci Rep 2026; CC BY 4.0)
├── LICENSE # MIT — copyright Nova O2 (code/figures only)
├── requirements.txt # Python dependencies (pinned)
├── notebooks/ # Reproducible analysis pipeline
│ ├── OTIMIZATION.ipynb
│ ├── CLEANING.ipynb
│ ├── MAIN_ANALYSIS.ipynb
│ ├── build_wall_baseline.py # raw CSV -> wall_baseline_873k.parquet
│ ├── _r1_common.py
│ ├── r1_*.py # R1 revision analyses
│ ├── _r2_common.py
│ ├── r2_logistic_diagnostics.py # R2 revision diagnostics
│ ├── generate_figures.py
│ ├── generate_tables.py
│ └── results/
│ ├── r1/ # R1 tabular outputs (CSV + Markdown)
│ └── r2/ # R2 tabular outputs (CSV + Markdown + calibration TIFF)
└── figures/ # Manuscript figures (TIFF + PNG, 300 DPI)
Build artefacts (manuscript/, Makefile, scripts/) and large datasets (data/) are maintained off-repo. Data is available via the Zenodo deposit linked above.
- Python: 3.12 (pinned dependencies in
requirements.txt) - Raw dataset: UTF-8, semicolon-separated, period decimal
- Key packages: pandas, NumPy, SciPy, statsmodels, scikit-learn, pymannkendall, Matplotlib, Seaborn, tabulate
Seffrin, A., Villiger, E., Andrade, M. S., Rosemann, T., Weiss, K., & Knechtle, B. (2026). Sex differences in marathon pacing: analysis of 873,000 Berlin marathon runners reveals men are twice as likely to "hit the wall". Scientific Reports, 16, 19529. https://doi.org/10.1038/s41598-026-56334-7
Dataset: BMW Berlin Marathon Results 1999–2025. Zenodo. https://doi.org/10.5281/zenodo.19342683
The version of record is included in this repository as paper.pdf, reproduced under its Creative Commons Attribution 4.0 (CC BY 4.0) license. © The authors.