Clustering countries by where their elite athletes score
A medal table counts the top three in each event and nothing behind them. Scoring all 6,400 marks in the 2023 and 2024 World Athletics top-100 lists in WA points puts a shot put and a 5000 m on one scale, and gives each nation a strength score in five discipline groups. On those scores 43 nations fall into five shapes, from Kenya's distance-only profile to the American one, which is the strongest in three groups and far from everyone else on the map.
Performances: top 100 per event, 16 events, men and women, 2023 and 2024.
K-means archetypes over 43 nations and five discipline groups: sprints, middle distance, distance, jumps, throws.
Of the variance on two principal components: overall depth (49%) and field events against endurance (29%).
USA score on PC1. Great Britain is next at 2.8.
From tables/national_profiles.csv and analyze.py.
The idea
Seconds, meters and placings don't add up across events, so a country strong in the hammer can't be compared with one strong in the 100 m on raw marks. Every mark in the top lists carries a World Athletics score meant to be comparable across events, and that is the currency here. Whether the tables are fair is a separate question, which I tested in the scoring-tables audit.
A nation's strength in a group is the mean of its five best WA scores there. It needs at least three performances in a group to get a score, presence in three groups and 12 performances overall to be profiled. That leaves 43 nations.
The map
K-means (k = 5) on the z-scored strength matrix gives the groups, and PCA flattens the five scores onto two axes. Going right is overall depth. Going up is field-event strength, and going down is endurance. Pick a nation, or hover the map, to see its five lanes; highlight an archetype to see who is in it.
tables/national_profiles.csv. It reproduces the 49% and 29% shares and the
PC1 scores (USA 5.0, Great Britain 2.8) of analyze.py.USA
Dot: the nation's strength (mean of its top five WA scores). Black tick: its archetype's average. Each lane runs from the lowest to the highest of the 43 nations. Grey italic values are fills for a group with no score.
The USA scores 5.0 on the first component. Great Britain is next at 2.8 and the rest of the all-rounders sit between 1.7 and 2.2. The American summed strength (6,412) is 242 points ahead of Great Britain's, while Great Britain and the Netherlands are 34 apart. Kenya, Uganda and Ireland sit lowest on the second axis. As a cluster they score highest of the five on middle distance and distance and lowest on jumps and throws.
The heat sheet
The matrix the clusters are computed from. Specialists show up as one or two strong cells in a row; all-rounders as rows with no weak cells. Sort by any column, or pick a nation to load it on the map.
From tables/national_profiles.csv. Italic values equal the
group minimum: a nation with no score in a group was filled with the lowest score of any
profiled nation there. Each row's best group is in bold.
The names come from a rule in analyze.py that labels each cluster after its strongest groups relative to the other nations.
Limitations
This measures how much elite strength a country has. How impressive that is for its size or wealth is a different question, and large countries do well on an absolute matrix. A per-capita or per-GDP view, where Jamaica and Norway would likely stand out, is left for a later version.
Two modeling choices shape the result. Averaging the top five scores protects against one freak performance, but a country with a single world-beater in a group scores modestly there. And a nation absent from a group is filled with that group's minimum before z-scoring, which treats absence as no elite presence. That is an imputation, and it pulls the specialist clusters apart.
Borderline assignments are not stable. Rerunning k-means on the committed table with scikit-learn 1.6 moves three of 43 nations: Germany and South Africa join the all-rounders and Mexico joins the emerging group. A re-fetch of the raw top lists also once gave different values from the committed table, and the cause was never found. The published numbers are the ones in this repository.
How it was built
national_profiles.csv: each nation's five strength scores, total and archetype