SRI

Independent study, commit 7080b06. Its data is not fused with the others. GitHub

ES

SPORTS REHABILITATION × HUMAN PERFORMANCE

The event is one day.
The history comes before.

Load, intensity and recovery change over time. This project follows those trajectories in competitive runners and asks what we can learn before an injury flag.

Explore a history ↓Read the scientific discussion ↗
RESULT IN ONE SENTENCE

Before an injury label, athletes ran more and rested less than before their healthy controls. Yet for unseen athletes in a future period the model reaches AP 0.020 (CI 0.0148 to 0.0430) against 0.0161 for chance; the paired CI of AP minus chance (0.0020 to 0.0270) excludes zero. It beats chance only marginally; with an AUC of 0.546 it is not clinically useful.

Reproducible research · Selected-sample probabilities · No validated clinical use

74athletes in the files
42,766selected rows · daily representation
583retained injury labels
1.36%positive labels, not incidence

01 / KNOW WHAT WE ARE LOOKING AT

A row is not a runner.
Nor is it just any day.

Each row contains seven training days before a retained event. The label indicates that injury prevented completion of a planned session, including a skipped session. It is not a diagnosis with injury location and severity.

Healthy controls required three weeks of full fitness before and after. Events near injuries were excluded. That selection uses future information and limits which probability we can estimate.

Lövdal et al. · Dataverse v2.0 · CC0 ↗
E−7E−6…E−1→E · Event

Corrected in the 2024 README: no suffix = E−7; .6 = E−1. Date is a relative index; a calendar date cannot be recovered.

02 / REAL HISTORY EXPLORER

First, look at the trajectory.

Five selected examples for visualization. Curves reconstruct overlapping public windows: they describe the past, not a prospective stream. Gaps remain gaps.

Observed exposureRetained injury labelGap = no recoverable history

Subjective ratings retain their released scale. Rest-day −0.01 is shown as not applicable, not low recovery. The displayed probability is a saved held-out Phase 2 prediction from athlete-disjoint validation; it is not clinical risk.

03 / NEW ANALYSIS · WITHIN EACH ATHLETE

Averages shift.
Rows overlap.

Each athlete is compared with themselves: the mean of their windows before an injury label against the mean of their windows before a healthy control. An athlete who always runs a lot does not outweigh one who runs little.

Filled dot: the 95% confidence interval of the paired difference excludes 0. Hollow dot: it includes 0. Effect size = mean paired difference / SD of the differences. 63 paired athletes (62 for subjective scales). No adjustment for time-varying confounding or multiple comparisons. Healthy controls were selected using future fitness, and that selection may explain part of the difference. Source: reports/tables/within_athlete_contrasts.csv and within_athlete_paired_*d.csv.

So why does the model not predict?

7-day distance per row: the middle half spans 22.5 to 70.0 km in 42,183 unlabelled rows and 30.7 to 67.9 km in the 583 labelled rows. The ranges almost overlap and only 1.36% of rows are positive: almost every heavy week ends without a label. A group difference is not an individual alert, and that is what the next section shows.

Row-level quartiles from reports/tables/pre_event_7d_distributions_by_label.csv; weights rows, not athletes.

03 / A DIFFERENT QUESTION NEEDS A DIFFERENT EVALUATION

A familiar athlete’s future, or someone new?

Three separate evaluations. Training-only transformations, independent calibration and temporal purging that accounts for history windows and future control selection. No winning model was selected on the test data.

—Average precision (AP)

AP with 95% confidence interval against chance in the three evaluations

Calibrated model APChance (test positive fraction)

Non-interpolated AP. The reference shows the test label fraction; fold-specific constant baselines are also exported. Evaluation populations differ.

Calibration does not guarantee improvement.

A ranking signal this small is insufficient for clinical decisions. Calibration applies to this selected sample and does not identify true daily incidence.

05 / THE COST OF A SIGNAL

How many alerts would you review?

The budget is fixed using calibration scores. In future data, alert volume may change. Explore that cost using the evaluation selected above.

5%10%20%

100 squares = 100 selected rows, rounded visualization. Never 100 days of clinical surveillance. Captured positives are retained labels, not a complete inventory of new injuries. These are exploratory budgets, not clinical thresholds.

06 / CHECK THE LIMITS

More history.
The same standards.

The extension compares 14/21-day windows, athlete-balanced weights and a fixed random forest. All use the same matched events and partitions within each evaluation. Three seeds expose sensitivity to cohort composition.

Phase 2 remains the primary result. The best retrospective result is not turned into a promise of future performance.

Extension: unseen athletes + future · calibrated AP by split seed. The last row is the AP expected by chance in each split.
ModelSeed 1Seed 2Seed 3

07 / DISCUSS BEFORE APPLYING

Prediction does not establish prevention.

Injury emerges from multiple factors. Training is part of the context, and high load may be normal for one athlete and unusual for another. Association does not identify which intervention would change the outcome.

The discussion connects these findings with injury complexity, ACWR controversies, within-person change, calibration and prediction-study quality. A documented narrative search supports the interpretation.

Evidence, discussion and references ↗
Complement without mixing participants.

SoccerMon extends the architecture with wellness and sessions in an independent women’s soccer cohort. Wu 2026 adds modalities, but its supplements lack explicit athlete and time identifiers. Neither fills missing fields for the Dutch runners.

08 / REPLICATE, NOT JUST VIEW

From source to result.

git clone https://github.com/victorgomezadapty/competitive-runners-injury-risk
cd competitive-runners-injury-risk
python -m pip install -r requirements.txt
python scripts/reproduce.py

Original project code MIT. Original data by Lövdal, den Hartigh and Azzopardi: CC0, DOI 10.34894/UWU9PV. Articles and supplements retain separate rights and licenses. No third-party articles or figures are redistributed.