1. La pregunta

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.

2. Datos y fuentes

3. Metodología

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 \]

  • Gana el local: 1 si ganó el equipo de casa, 0 si empató o perdió.
  • Sin público: 1 si el partido fue en la temporada 2020-21, 0 si fue en 2018-19 o 2022-23.

Con variables de 0 y 1, la lectura es directa:

  • a = qué proporción de partidos gana el local con afición.
  • b = cuánto cambia esa proporción sin afición. Ese es el “valor” de la afición.

4. Análisis en R

Paso 1: Preparación de los datos

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

Paso 2: Pre-proceso

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

Paso 3: Análisis

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

Paso 4: Post-proceso

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), " %"))

5. Resultados

Ecuación estimada

\[ \widehat{\text{Gana el local}} = 0.452 -0.054 \times \text{Sin público} \]

Cómo se lee:

  • Con afición, el equipo local gana el 45.2 % de sus partidos.
  • Sin afición, gana el 39.9 %, o sea 5.4 puntos menos.
  • La diferencia es estadísticamente significativa con 5,478 partidos.

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.

¿Por qué el R² es tan bajo?

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.

6. Bonus: ¿y los árbitros?

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.

7. Limitaciones

  • Correlación no es causalidad. En 2020-21 también cambiaron otras cosas: un calendario más apretado y menos descanso por la pandemia.
  • No todos los partidos fueron 100 % vacíos. En algunas ligas hubo un poco de público en algunas jornadas, pero la gran mayoría se jugó sin gente.
  • Solo 5 ligas y 3 temporadas. El resultado podría ser distinto en otras ligas o en otros años.

8. Cómo reproducir este estudio

  1. Descarga los CSV de la primera división de cada liga desde football-data.co.uk para las temporadas 2018-19, 2020-21 y 2022-23, o usa futbol_5_ligas.csv.
  2. Guarda el CSV en la misma carpeta que este archivo .Rmd.
  3. Abre el archivo en RStudio y presiona Knit.

Referencias


Hecho por Sports Economics · Sports economics made simple.