Chapter 24 Upsets

We could consider an upset if the winner rank is greater than the loser rank by at least 10. We plot the ranking difference between winners and losers for the grand slams.

24.1 Players causing upsets in Grand Slam Finals

We observe that the upsets are few in Grand Slams Finals. But some of them are there and lets find out what they are.

Venus Williams has created Two upsets in Grand Slam Finals.2017 saw an upset in the US Open when Sloane Stephens defeated Venus Williams in the semifinals and Madison Keys in the finals.

grandslamupsets = grandslam %>%
  filter(rankingdiff < -10) %>%
  select(winner_name,loser_name,winner_rank,loser_rank,tourney_name,year)
plotUpsets = function(upsetsData,titleName)
{
  upsetsData %>%
  group_by(winner_name) %>%
  summarise(Count = n()) %>%
  arrange(desc(Count)) %>%
  ungroup() %>%
  mutate(winner_name = reorder(winner_name,Count)) %>%
  head(10) %>%
 
  ggplot(aes(x = winner_name,y = Count)) +
  geom_bar(stat='identity',colour="white",fill=fillColor2) +
  geom_text(aes(x = winner_name, y = 1, label = paste0("(",Count,")",sep="")),
            hjust=0, vjust=.5, size = 4, colour = 'black',
            fontface = 'bold') +
  labs(x = titleName, 
       y = 'Count', 
       title = titleName) +
  coord_flip() + 
  theme_bw()
}
  
plotUpsets(grandslamupsets,'Upset Winner in Grand Slam Finals')

kable(grandslamupsets,"html") %>%
  kable_styling(bootstrap_options = c("striped", "hover", "condensed", "responsive")) %>%
  scroll_box(width = "800px")
winner_name loser_name winner_rank loser_rank tourney_name year
Jennifer Capriati Martina Hingis 14 1 Australian Open 2001
Serena Williams Maria Sharapova 81 2 Australian Open 2007
Venus Williams Lindsay Davenport 16 1 Wimbledon 2005
Venus Williams Marion Bartoli 31 19 Wimbledon 2007
Sloane Stephens Madison Keys 83 16 US Open 2017
# kable(grandslamupsets,"html") %>%
#   kable_styling(bootstrap_options = c("striped", "hover", "condensed", "responsive")) %>%
#   scroll_box(width = "800px")

24.2 Upsets in Grand Slam SemiFinals

Williams sisters in action again creating upsets in Grand Slam semi Finals.

grandslamSF =getGrandSlamWinners('SF')

grandslamupsets = grandslamSF %>%
  filter(rankingdiff < -10) %>%
  select(winner_name,loser_name,winner_rank,loser_rank,tourney_name,year)

plotUpsets(grandslamupsets,'Upset Winner in Grand Slam Semi Finals')

kable(grandslamupsets,"html") %>%
  kable_styling(bootstrap_options = c("striped", "hover", "condensed", "responsive")) %>%
  scroll_box(width = "800px")
winner_name loser_name winner_rank loser_rank tourney_name year
Jennifer Capriati Lindsay Davenport 14 2 Australian Open 2001
Venus Williams Maria Sharapova 16 2 Wimbledon 2005
Serena Williams Nicole Vaidisova 81 12 Australian Open 2007
Marion Bartoli Justine Henin 19 1 Wimbledon 2007
Venus Williams Ana Ivanovic 31 6 Wimbledon 2007
Francesca Schiavone Elena Dementieva 17 5 French Open 2010
Serena Williams Caroline Wozniacki 27 1 US Open 2011
Sara Errani Samantha Stosur 24 6 French Open 2012
Sabine Lisicki Agnieszka Radwanska 24 4 Wimbledon 2013
Dominika Cibulkova Agnieszka Radwanska 24 5 Australian Open 2014
Roberta Vinci Serena Williams 43 1 US Open 2015
Flavia Pennetta Simona Halep 26 2 US Open 2015
Jelena Ostapenko Timea Bacsinszky 47 31 Roland Garros 2017
Sloane Stephens Venus Williams 83 9 US Open 2017

24.3 Upsets in T1 tournaments

getTournamentWinners = function(tourney_level_name,roundname)
{
  return(
    matches %>%
      filter(tourney_level == tourney_level_name) %>%
      filter(round == roundname) %>%
      mutate(agediff = winner_age - loser_age) %>%
      mutate(rankingdiff = loser_rank - winner_rank)
  )
}

T1Winners = getTournamentWinners('T1','F')

T1upsets = T1Winners %>%
  filter(rankingdiff < -10) %>%
  select(winner_name,loser_name,winner_rank,loser_rank,tourney_name,year)

plotUpsets(T1upsets,'Upset Winner in T1 tournament Finals')

kable(T1upsets,"html") %>%
  kable_styling(bootstrap_options = c("striped", "hover", "condensed", "responsive")) %>%
  scroll_box(width = "800px")
winner_name loser_name winner_rank loser_rank tourney_name year
Jelena Dokic Amelie Mauresmo 23 6 Rome 2001
Daniela Hantuchova Martina Hingis 26 4 Indian Wells 2002
Magdalena Maleeva Lindsay Davenport 23 8 Moscow 2002
Iva Majoli Patty Schnyder 58 30 Charleston 2002
Alicia Molik Maria Sharapova 20 7 Zurich 2004
Kim Clijsters Maria Sharapova 38 3 Miami 2005
Kim Clijsters Lindsay Davenport 133 1 Indian Wells 2005
Justine Henin Elena Dementieva 43 5 Charleston 2005
Anna Chakvetadze Nadia Petrova 24 5 Moscow 2006
Daniela Hantuchova Svetlana Kuznetsova 18 4 Indian Wells 2007
Serena Williams Justine Henin 18 1 Miami 2007
Ana Ivanovic Svetlana Kuznetsova 16 4 Berlin 2007

24.4 Upsets in T2 tournaments

T2Winners = getTournamentWinners('T2','F')

T2upsets = T2Winners %>%
  filter(rankingdiff < -10) %>%
  select(winner_name,loser_name,winner_rank,loser_rank,tourney_name,year)

plotUpsets(T2upsets,'Upset Winner in T2 tournament Finals')

kable(T2upsets,"html") %>%
  kable_styling(bootstrap_options = c("striped", "hover", "condensed", "responsive")) %>%
  scroll_box(width = "800px")
winner_name loser_name winner_rank loser_rank tourney_name year
Chanda Rubin Anastasia Myskina 37 19 Eastbourne 2002
Chanda Rubin Lindsay Davenport 21 9 Los Angeles 2002
Ai Sugiyama Kim Clijsters 25 3 Scottsdale 2003
Elena Dementieva Lindsay Davenport 21 5 Amelia Island 2003
Justine Henin Svetlana Kuznetsova 22 7 Warsaw 2005
Dinara Safina Amelie Mauresmo 48 4 Paris 2005
Maria Kirilenko Anna Lena Groenefeld 45 30 Beijing 2005
Alona Bondarenko Francesca Schiavone 62 14 Luxembourg 2006
Tatiana Golovin Nadia Petrova 20 7 Amelia Island 2007
Agnes Szavay Jelena Jankovic 23 3 Beijing 2007
Aleksandra Wozniak Marion Bartoli 85 15 Stanford 2008
Caroline Wozniacki Anna Chakvetadze 22 11 New Haven 2008