En el fútbol se dice que la afición es “el jugador número 12”. Pero, ¿cuánto ayuda de verdad?
Normalmente es imposible saberlo, porque los equipos casi nunca juegan en su estadio sin gente. Hasta que llegó la pandemia: en la temporada 2020-21 las grandes ligas jugaron con los estadios vacíos. Fueron los mismos equipos, las mismas canchas y las mismas reglas, pero sin público. Es lo más parecido a un experimento natural.
futbol_5_ligas.csv) sin cambiar ningún dato. Solo se
agregaron dos columnas para identificar la liga y la temporada.Usamos una regresión lineal simple con dos variables que solo toman los valores 0 y 1:
\[ \text{Gana el local} = a + b \times \text{Sin público} + e \]
Con variables de 0 y 1, la lectura es directa:
datos <- read.csv("futbol_5_ligas.csv")
dim(datos)
## [1] 5478 12
head(datos)
## LIGA TEMPORADA Date HomeTeam AwayTeam FTHG FTAG FTR
## 1 Premier League 2018-19 2018-08-10 Man United Leicester 2 1 H
## 2 Premier League 2018-19 2018-08-11 Bournemouth Cardiff 2 0 H
## 3 Premier League 2018-19 2018-08-11 Fulham Crystal Palace 0 2 A
## 4 Premier League 2018-19 2018-08-11 Huddersfield Chelsea 0 3 A
## 5 Premier League 2018-19 2018-08-11 Newcastle Tottenham 1 2 A
## 6 Premier League 2018-19 2018-08-11 Watford Brighton 2 0 H
## HY AY HR AR
## 1 2 1 0 0
## 2 1 1 0 0
## 3 1 2 0 0
## 4 2 1 0 0
## 5 2 2 0 0
## 6 2 2 0 0
datos$GANA_LOCAL <- as.numeric(datos$FTR == "H")
datos$SIN_PUBLICO <- as.numeric(datos$TEMPORADA == "2020-21")
table(datos$TEMPORADA)
##
## 2018-19 2020-21 2022-23
## 1826 1826 1826
table(datos$LIGA)
##
## Bundesliga LaLiga Ligue 1 Premier League Serie A
## 918 1140 1140 1140 1140
modelo <- lm(GANA_LOCAL ~ SIN_PUBLICO, data = datos)
summary(modelo)
##
## Call:
## lm(formula = GANA_LOCAL ~ SIN_PUBLICO, data = datos)
##
## Residuals:
## Min 1Q Median 3Q Max
## -0.4523 -0.4523 -0.3987 0.5476 0.6013
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 0.452355 0.008193 55.211 < 2e-16 ***
## SIN_PUBLICO -0.053669 0.014191 -3.782 0.000157 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 0.4951 on 5476 degrees of freedom
## Multiple R-squared: 0.002605, Adjusted R-squared: 0.002423
## F-statistic: 14.3 on 1 and 5476 DF, p-value: 0.0001573
porcentaje <- tapply(datos$GANA_LOCAL, datos$TEMPORADA, mean) * 100
porcentaje
## 2018-19 2020-21 2022-23
## 44.74261 39.86857 45.72837
barplot(porcentaje, col = c("darkgreen", "gray70", "darkgreen"),
ylim = c(0, 60), ylab = "% de partidos que gana el local",
main = "¿Cuántas veces gana el equipo de casa?")
text(c(0.7, 1.9, 3.1), porcentaje + 3, paste0(round(porcentaje, 1), " %"))
\[ \widehat{\text{Gana el local}} = 0.452 -0.054 \times \text{Sin público} \]
Cómo se lee:
Dicho fácil: de cada 100 partidos en casa, la afición ayuda a ganar unos 5 partidos más. Y la ventaja regresó cuando volvió el público en 2022-23.
El R² es de 0.003. Es normal: cada partido depende de muchas cosas (la calidad de los equipos, los goles, la suerte) y el público solo es una de ellas. Aquí no buscamos predecir partidos, sino medir cuánto cambia la proporción de victorias locales sin afición. Para eso lo importante es el tamaño del efecto (b) y que sea significativo.
Si el público presiona al árbitro, sin público los visitantes deberían recibir menos tarjetas.
tarjetas <- rbind(Local = tapply(datos$HY, datos$TEMPORADA, mean),
Visitante = tapply(datos$AY, datos$TEMPORADA, mean))
round(tarjetas, 2)
## 2018-19 2020-21 2022-23
## Local 1.89 1.90 1.92
## Visitante 2.16 1.96 2.21
Con público, los visitantes reciben más amarillas que los locales. Sin público, esa diferencia casi desaparece, y vuelve cuando regresa la gente.
futbol_5_ligas.csv..Rmd.Hecho por Sports Economics · Sports economics made simple.