sochi olympic stats: medal count


There have been several articles that re-order the medal count ranking by comparing medals to population or GDP, which then show small countries topping the charts. This analysis ignores some obvious facts: small countries are over-represented in the number of athletes they send and the relationship between athletes sent and medals is linear. I present a brief analysis to support and expand on these claims.

People often try to knock America and other large nations at the Olympics by changing up the medal chart to show medals per population or GDP (e.g. this Slate article). See the left panel of the below chart.

While these analysis often show small countries shooting to the top of the medal standings, they often ignore a glaring confound in the analysis: namely, each country can only send so many athletes to the Olympics regardless of their population, so there is an inherent bias toward small countries (Slovenia, Canada, etc.) that can send disproportionately more athletes per person than larger countries like the United State or China. For example, the middle and right panel of the below figure show the athletes per population and gdp ($billions). What is fairly obvious is that several small countries are massively over-represented (this way of showing it is slightly less intuitive, but visually easier to understand, than the inverse [population/athlete], which shows the same trend). This over-representation indicates that no matter if the USA or China won every medal they possibly could, they would never be able to reach the theoretical medals per capita that smaller countries obtain just by winning a few medals.

a look at various statistics for medal winning countries in the sochi 2014 winter olympics.

This leads me to the second graph, which shows the number of athletes sent to the games vs. the number of medals one. It is fairly linear relationship (R2 = 0.61, p-value = 2.22e-06, see best-fit line on plot below) that shows what one would expect: the more athletes sent, the more medals won. Significant positive/negative deviation from the relation indicates over/underachieving potential, e.g. the Netherlands is performing very well based on the number of athletes sent (mainly by dominating speed skating) while Switzerland is performing comparatively poorly. There is no obvious clustering of countries in the athlete v. medal chart of athletes per population (indicated below by the size of the point). Viewing the medal counts in this manner reduces the inherit biases when just looking at medals compared to GDP or population.

comparison of athletes sent to the sochi 2014 winter olympics and medals won.

This should give a quick overview of one way to look at data in the news more closely (i may update the post with more detailed analysis in the future). Further, given the wealth of programming languages and automation in today's world, this should be the bare minimum for reporters. But then again, that wouldn't attract eyeballs.

note: I have excluded countries that have not won any medals (as of Feb 19th, 2014) from the analysis. Due to this, i have set population and gdp for those countries to zero in the provided csv file.

update 2014.03.08 The medal count (total including gold, silver, and bronze) has been updated to reflect the final tallies. Graphics have been updated accordingly. The code has also been updated to include best-fit line in scatter plot.

Below is the data used and script run to do the analysis.

analysis csv file
download sochi.R

R / S+
  1. # looks at data from the sochi games
  2. # biafra ahanonu
  3. # 2014.02.19
  5. require(gridExtra)
  6. require(ggplot2)
  8. # load data
  9. sochi = read.table('',sep="\t",header=T)
  11. # create a theme function
  12. ggTheme <- function(...) theme(panel.background = element_rect(fill = "white", colour = NA), text = element_text(size=15))
  14. # ignore any countries with no medals
  15. sochiFiltered = sochi[!(sochi$medals==0),]
  17. # linear regression of athletes to medals
  18. fit = lm(sochiFiltered$medals ~ sochiFiltered$athletes)
  19. rSquared = summary(fit)$r.squared
  20. pVal = anova(fit)$'Pr(>F)'[1]
  21. fitIntercept = as.numeric(coef(fit)["(Intercept)"])
  22. fitSlope = as.numeric(coef(fit)["sochiFiltered$athletes"])
  24. # look at various statistics
  25. p1 = ggplot(sochiFiltered,aes(country,athletes/population))+geom_bar()+coord_flip()+ggTheme()
  26. p2 = ggplot(sochiFiltered,aes(country,athletes/gdp))+geom_bar()+coord_flip()+ggTheme()
  27. p3 = ggplot(sochiFiltered,aes(country,medals/population))+geom_bar()+coord_flip()+ggTheme()
  28. print(grid.arrange(p3, p1, p2, ncol=3, nrow=1))
  30. # compare athletes sent to medal count, jitter labels to allow better placement
  31. p4 = ggplot(sochiFiltered,aes(athletes,medals,label=country,color=country,size=athletes/population))+
  32. geom_abline(slope = fitSlope, intercept = fitIntercept, size=1.5, alpha = 0.3)+
  33. geom_text(position=position_jitter(h=1,w=1),size=3)+geom_point()+
  34. ggTheme()



comments powered by Disqus

additional articles to journey through:

from the archives: declaration of independence, internet edition
11 july 2013 | america

A revised Declaration of Independence I did awhile ago (i.e. high school) for a writing class. It is slightly a mockery of the style of wri[...]ting sometimes used back then, e.g. finding unnecessarily complicated ways of saying a simple concept; long, ponderous sentences; and an abuse of the Capital.

week 9-12 | scooting along
17 october 2012 | singapore

And here it seemed I'd forgotten to write about the last exhilarating weeks in Singapore. Fear not! Beautiful buildings, a Hong Kong speed-[...]run, and more food await the eager reader.

comment system!
05 august 2012 | website

Wanted to add the ability for people to comment on this website, but delayed adding the feature until I could write the code myself. There [...]are many pre-built PHP solutions on the market (like commentator), but the original purpose of this site was to allow me to learn how to build a website from scratch. So I've implemented the comment system using about a hundred lines of code to access the MySQL database, verify inputs and display all the comments for a particular article.

¿qué es la calle?
24 may 2013 | short story | spanish

Había terminado y salé para mi cocina. Tenía hambre pero este día no había comida dentro de mi despensa. Me fui y caminé hacienda[...] la Tport—una máquina que puede transportar una persona a otro lugar sin energía y tiempo. Cuando entré la máquina, toqué algunos botónes y esperé. Pero nada ocurrió y lo hice las mismas acciones otra vez—y nada ocurrió.

How would the disappearance of streets affect the social fabric? This short story briefly (in castellano!) explores a world in which instantaneous, free transport is possible. Meant mainly to practice my spanish, i plan to follow-up with a more detail story in the future.

©2006-2017 | biafra ahanonu | updated 19 june 2017
biafra ahanonu