En los Grand Slams los grandes casi nunca caen temprano. ¿Es casualidad o tiene una explicación?
Los Grand Slams se juegan a 5 sets y el resto de torneos de la ATP a 3 sets. La idea es sencilla: mientras más largo es un partido, menos influye la suerte (un mal día, un par de puntos de suerte) y más pesa quién es mejor jugador. Si eso es cierto, el favorito debería ganar más seguido en los partidos a 5 sets.
atp_2015_2025.csv) sin
cambiar ningún dato.WRank (ranking del
ganador), LRank (ranking del perdedor),
Best of (si el partido fue a 3 o a 5 sets) y
Comment (si el partido se terminó o hubo retiro).Usamos una regresión lineal simple con dos variables que solo toman los valores 0 y 1:
\[ \text{Favorito gana} = a + b \times \text{Cinco sets} + e \]
Con variables de 0 y 1, la lectura es muy directa:
datos <- read.csv("atp_2015_2025.csv")
dim(datos)
## [1] 27574 14
head(datos)
## ATP Location Tournament Date Series Court Surface
## 1 1 Brisbane Brisbane International 2015-01-05 ATP250 Outdoor Hard
## 2 1 Brisbane Brisbane International 2015-01-05 ATP250 Outdoor Hard
## 3 1 Brisbane Brisbane International 2015-01-05 ATP250 Outdoor Hard
## 4 1 Brisbane Brisbane International 2015-01-05 ATP250 Outdoor Hard
## 5 1 Brisbane Brisbane International 2015-01-06 ATP250 Outdoor Hard
## 6 1 Brisbane Brisbane International 2015-01-06 ATP250 Outdoor Hard
## Round Best.of Winner Loser WRank LRank Comment
## 1 1st Round 3 Duckworth J. Simon G. 125 21 Completed
## 2 1st Round 3 Kokkinakis T. Benneteau J. 149 25 Completed
## 3 1st Round 3 Chardy J. Golubev A. 31 72 Completed
## 4 1st Round 3 Tomic B. Querrey S. 53 35 Completed
## 5 1st Round 3 Kukushkin M. Copil M. 69 201 Completed
## 6 1st Round 3 Kubot L. Anderson K. 177 16 Completed
# Solo partidos terminados (sin retiros ni walkovers) y con ranking de los dos jugadores
datos <- subset(datos, Comment == "Completed" & !is.na(WRank) & !is.na(LRank) & !is.na(Best.of))
# Variables de 0 y 1
datos$FAVORITO_GANA <- as.numeric(datos$WRank < datos$LRank)
datos$CINCO_SETS <- as.numeric(datos$Best.of == 5)
dim(datos)
## [1] 26521 16
table(datos$CINCO_SETS)
##
## 0 1
## 21303 5218
modelo <- lm(FAVORITO_GANA ~ CINCO_SETS, data = datos)
summary(modelo)
##
## Call:
## lm(formula = FAVORITO_GANA ~ CINCO_SETS, data = datos)
##
## Residuals:
## Min 1Q Median 3Q Max
## -0.7137 -0.6295 0.3705 0.3705 0.3705
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 0.629536 0.003268 192.62 <2e-16 ***
## CINCO_SETS 0.084148 0.007368 11.42 <2e-16 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 0.477 on 26519 degrees of freedom
## Multiple R-squared: 0.004894, Adjusted R-squared: 0.004856
## F-statistic: 130.4 on 1 and 26519 DF, p-value: < 2.2e-16
porcentaje <- tapply(datos$FAVORITO_GANA, datos$CINCO_SETS, mean) * 100
porcentaje
## 0 1
## 62.95357 71.36834
barplot(porcentaje, names.arg = c("3 sets", "5 sets"), col = c("gray70", "darkgreen"),
ylim = c(0, 100), ylab = "% de partidos que gana el favorito",
main = "¿Cuántas veces gana el favorito?")
text(c(0.7, 1.9), porcentaje + 5, paste0(round(porcentaje), " %"))
\[ \widehat{\text{Favorito gana}} = 0.630 + 0.084 \times \text{Cinco sets} \]
Cómo se lee:
En otras palabras: a 3 sets, el favorito pierde más o menos 37 de cada 100 partidos; a 5 sets, solo 29 de cada 100.
El R² del modelo es de 0.005. Es normal en este tipo de estudio: cada partido tiene mucho de suerte (un mal día, una lesión, un par de puntos clave) y ningún modelo puede adivinar quién gana un partido individual. Aquí no buscamos predecir partidos, sino medir si la proporción de victorias del favorito cambia con el formato. Para eso lo importante es el tamaño del efecto (b) y que sea significativo, y las dos cosas se cumplen.
atp_2015_2025.csv..Rmd.Hecho por Sports Economics · Sports economics made simple.