Exploratory analysis of the highest-rated modern chess players from every year starting in January 2001. The ratings are pulled from the January official ratings list on FIDE’s website, which can be found here: FIDE Top Rating Lists. I have arbitrarily selected to examine only the 25 highest ELO ratings from the January rating lists for this report, although the underlying code can examine any number of players from the rating lists by changing a single variable value (top_n_players <- 25).
How old is the typical elite player? How many official, rated games does an elite typically play each month? How has the strength of the elite players changed over the years?
We can see that the average elite chess player is usually in their late 20s or early 30s. There is some up and down over the years, but the range of the averages is fairly small.
The average ELO rating of the top players has risen steadily for the majority of the past 20 years, up almost 50 points from the turn of the century.
Lets check out some player distributions for different statistics such as player age, ELO rating, and games played in a one month period.
Next, we will examine the distribution of rating, age, and games played at each rank, 1-25, over the past 20 years.
All players who appeared on the January lists at least 10 times are displayed below:
## R version 3.6.1 (2019-07-05)
## Platform: x86_64-w64-mingw32/x64 (64-bit)
## Running under: Windows 8.1 x64 (build 9600)
##
## Matrix products: default
##
## locale:
## [1] LC_COLLATE=English_United States.1252
## [2] LC_CTYPE=English_United States.1252
## [3] LC_MONETARY=English_United States.1252
## [4] LC_NUMERIC=C
## [5] LC_TIME=English_United States.1252
##
## attached base packages:
## [1] stats graphics grDevices utils datasets methods base
##
## other attached packages:
## [1] data.table_1.12.4 plotly_4.9.1 forcats_0.4.0
## [4] stringr_1.4.0 dplyr_0.8.3 purrr_0.3.2
## [7] readr_1.3.1 tidyr_1.0.0 tibble_2.1.3
## [10] ggplot2_3.2.1 tidyverse_1.2.1
##
## loaded via a namespace (and not attached):
## [1] tidyselect_0.2.5 xfun_0.10 haven_2.1.1
## [4] lattice_0.20-38 colorspace_1.4-1 vctrs_0.2.0
## [7] generics_0.0.2 htmltools_0.4.0 viridisLite_0.3.0
## [10] yaml_2.2.0 rlang_0.4.0 later_1.0.0
## [13] pillar_1.4.2 glue_1.3.1 withr_2.1.2
## [16] RColorBrewer_1.1-2 modelr_0.1.5 readxl_1.3.1
## [19] lifecycle_0.1.0 munsell_0.5.0 gtable_0.3.0
## [22] cellranger_1.1.0 rvest_0.3.4 htmlwidgets_1.5.1
## [25] evaluate_0.14 labeling_0.3 knitr_1.25
## [28] fastmap_1.0.1 httpuv_1.5.2 crosstalk_1.0.0
## [31] broom_0.5.2 Rcpp_1.0.2 xtable_1.8-4
## [34] promises_1.1.0 scales_1.0.0 backports_1.1.5
## [37] jsonlite_1.6 mime_0.7 hms_0.5.1
## [40] digest_0.6.21 stringi_1.4.3 shiny_1.4.0
## [43] grid_3.6.1 cli_1.1.0 tools_3.6.1
## [46] magrittr_1.5 lazyeval_0.2.2 crayon_1.3.4
## [49] pkgconfig_2.0.3 zeallot_0.1.0 xml2_1.2.2
## [52] lubridate_1.7.4 assertthat_0.2.1 rmarkdown_1.16
## [55] httr_1.4.1 rstudioapi_0.10 R6_2.4.0
## [58] nlme_3.1-140 compiler_3.6.1