Sports fans frequently argue over who is the greatest of all time or the \(GOAT\) of their sport. Elo ratings are one of the more objective ways to measure a player’s ability. The Elo rating gives us a number of a player’s strength over time in a way that accounts for the ability of the players they have won and lost to over their career.
Because Elo ratings are constantly changing as players complete matches, we can consider using a player’s peak Elo (maximum yet achieved) to assess their overall highest career achievement to date. Doing this for all players in the Open Era, who ranks in the top \(10\) of all time? We can use the atp_elo
dataset of the deuce
package to answer this question. Although the dataset includes surface-specific Elo, we will use the all-surface overall Elo ratings for this analysis.
peak_atp_elo <- atp_elo %>%
group_by(player_name) %>%
dplyr::summarise(
peak.elo = max(overall_elo, na.rm = T)
)
peak_atp_elo <- peak_atp_elo[
order(
peak_atp_elo$peak.elo,
decreasing = T
),][1:10,]
peak_atp_elo$tour <- "ATP"
peak_elo <- peak_atp_elo
peak_elo$player_name <- factor(
peak_elo$player_name,
levels = peak_elo$player_name[
order(peak_elo$peak.elo)
], order = T
)
peak_elo %>%
filter(tour == "ATP") %>%
ggplot(aes(y = peak.elo, x = player_name)) + # , colour = tour
# facet_wrap(~ tour, scales = "free") +
geom_point(size = 2) +
scale_color_tableau() +
theme_gdocs() + theme(legend.position = "none") +
scale_y_continuous("Career Peak Elo") +
scale_x_discrete("") +
coord_flip()
On this measure, Novak Djokovic has achieved the highest Elo of any male player in the Open Era.
One of the modern-day tennis rivalry is between Novak Djokovic and Rafael Nadal. Basic facts about the rivalry:
rivalry <- fetch_head_to_head("Novak Djokovic", "Rafael Nadal")
DT::datatable(rivalry)
In a rivalry that is now 56 matches strong, who has had the most wins overall and by surface?
results[order(results$wins, decreasing = T),] %>%
knitr::kable()
player | surface | wins | losses |
---|---|---|---|
Novak Djokovic | Hard | 20 | 7 |
Rafael Nadal | Clay | 18 | 7 |
Novak Djokovic | Clay | 7 | 18 |
Rafael Nadal | Hard | 7 | 20 |
Novak Djokovic | Grass | 2 | 2 |
Rafael Nadal | Grass | 2 | 2 |
results %>%
group_by(player) %>%
dplyr::summarise(
wins = sum(wins)
) %>%
knitr::kable()
player | wins |
---|---|
Novak Djokovic | 29 |
Rafael Nadal | 27 |