Documentos de Académico
Documentos de Profesional
Documentos de Cultura
COMPARACIÓN DE
MODELOS PREDICTIVOS
APLICADOS AL FUTBOL
MEXICANO
Tesina
presenta
Fecha
Firma
DEDICATORIA
A mis papás por traerme hasta aquı́. A Pepe y Paty por el espacio.
i
Agradecimientos
A Ella.
A Benja por tanto arte. A Vive por creer que mi locura tenı́a sentido,
en especial a Alex, Sebas, Zugasti y Rafa.
A los grandes amigos que me dio el ITAM, sin ustedes el viaje hu-
biera sido gris. (Si crees que este agradecimiento es para ti entonces lo
es, no quiero omitir a nadie)
ii
Índice general
1. Introducción 1
2. Antecedentes 3
2.1. Modelo Poisson: La versión de Maher . . . . . . . . . . 3
2.2. ELO y la Liga Española: Tratando de Optimizar . . . . 5
2.3. Modelos Lineales Generalizados: Un brevı́simo resumen 7
3. Modelos Utilizados 9
3.1. Modelo Poisson . . . . . . . . . . . . . . . . . . . . . . . 9
3.2. La Clasificación de Elo . . . . . . . . . . . . . . . . . . . 11
3.3. Regresión Logı́stica Multinomial . . . . . . . . . . . . . 13
4. Resultados 16
5. Conclusiones 20
A. Tablas de Resultados 22
C. Códigos 34
C.1. Cálculo de Modelo Poisson y Clasificación de Elo . . . . 34
C.2. Cálculo e Impresión de Modelo Logı́stico . . . . . . . . . 39
Referencias 41
iii
Capı́tulo 1
Introducción
1
CAPÍTULO 1. INTRODUCCIÓN 2
Antecedentes
3
CAPÍTULO 2. ANTECEDENTES 4
P P
xij xij
; βˆj =
j6=i i6=j
α̂i = P ˆ P
α̂i
βj
j6=i i6=j
Rn = R0 + K · G · (W − We )
1
We = L V
1+ 10−(R0 −R0 +h)/400
con R0L , R0V los valores de clasificación iniciales del equipo local y visitan-
te, respectivamente2 . Por su parte, el parámetro h representa la “ventaja
de local” (parámetro distinto al modelo original de Elo) (Hernández-
Dı́az et al., 2010, p.4-7).
p
P
Modelo Lineal Generalizado se plantea como g(µi ) = βj xj i para toda
j=1
i ∈ {1, . . . , n}. Observemos que este modelo consta de tres partes:
Modelos Utilizados
9
CAPÍTULO 3. MODELOS UTILIZADOS 10
1
Se calculó el Coeficiente de Correlación entre los Goles del Local y los Goles del
Visitante, encontrando un valor de 0.063, mismo que no sugiere que exista relación
lineal.
CAPÍTULO 3. MODELOS UTILIZADOS 11
Rn = R0 + k · G · (W − We )
2
Experto en análisis de datos y fundador de la revista electrónica FiveThirtyEight.
La idea inicial de este trabajo surgió de uno de sus artı́culos (Silver, 2015).
3
Dado que los puntos que gana un equipo los pierde el contrario (juego suma cero),
el promedio de los valores de clasificación en cualquier momento dado es también
1500.
CAPÍTULO 3. MODELOS UTILIZADOS 12
1
We = L V .
1+ 10−(R0 −R0 +h)/400
4
Hernández-Dı́az et al. consideran en su modelo estático h = 100, equivalente a
P [Local] = 64 %(Hernández-Dı́az et al., 2010, p. 6).
CAPÍTULO 3. MODELOS UTILIZADOS 13
k−1
P
donde Zi = β0i + βji · Xj con β01 , ..., βk−1,k−1 los parámetros a es-
j=1
timar (Pando Fernández, 2004, p.324). Considerando el valor definido
previamente de pk vemos que exp(Zi ) = pi /pk , por lo tanto para toda
i ∈ S tal que i 6= k se cumple que
pi
ln = Zi = β0i + β1i X1 + · · · + βk−1,i Xk−1
pk
(Pando Fernández, 2004, p.324)5 .
5
A estas ecuaciones se les conoce como logits.
CAPÍTULO 3. MODELOS UTILIZADOS 14
Resultados
16
CAPÍTULO 4. RESULTADOS 17
¿Qué sucede cuando los modelos predicen que gana el local? En este
caso, tanto los modelos Poisson como la Clasificación de Elo superan la
media histórica con sus aciertos. Poisson con Goles a Favor tiene 51.08 %
de efectividad, Poisson con Goles en Contra el 51.10 % y Elo el 47.62 %
(Ver A.6, A.4, A.2).
3
Para más detalles revisar B.1
4
Por lo que no se consideró necesario reportarlos.
Capı́tulo 5
Conclusiones
20
CAPÍTULO 5. CONCLUSIONES 21
sin mayores ajustes (en particular las dos versiones Poisson planteadas)
logren resultados cercanos al 50 % de efectividad. Además, es de resal-
tar que la regresión logı́stica muestra ser una herramienta que puede
acercarnos a los resultados esperados, aun basándose en modelos no
particularmente efectivos.
Si bien se dice que “la casa nunca pierde”, el pasado pareciera es-
conder cierta información sobre el futuro. Un adecuado tratamiento y
análisis de los datos nos permiten soñar con que tal vez, y sólo tal vez,
algún dı́a la casa pierda.
1
Es importante recalcar que la independencia entre observaciones es un supuesto
que se relajó en el presente trabajo.
Apéndice A
Tablas de Resultados
22
Temporada Efect. Juegos E. Local Local E. Empate Empate E. Visita Visita
2002 Apertura 52.94 % 204 56.21 % 169 50.00 % 4 35.48 % 31
2003 Clausura 50.00 % 206 53.15 % 143 75.00 % 4 40.68 % 59
2003 Apertura 50.00 % 208 52.32 % 151 0.00 % - 43.86 % 57
2004 Clausura 45.15 % 206 49.03 % 155 0.00 % - 33.33 % 51
2004 Apertura 50.30 % 167 52.42 % 124 0.00 % - 44.19 % 43
2005 Clausura 53.89 % 167 55.56 % 144 0.00 % - 43.48 % 23
2005 Apertura 51.50 % 167 54.81 % 104 0.00 % - 46.03 % 63
2006 Clausura 42.51 % 167 44.34 % 106 0.00 % 2 40.68 % 59
2006 Apertura 49.71 % 171 52.70 % 148 0.00 % - 30.43 % 23
2007 Clausura 51.46 % 171 53.19 % 141 33.33 % 3 44.44 % 27
2007 Apertura 55.56 % 171 57.97 % 138 0.00 % - 45.45 % 33
2008 Clausura 42.11 % 171 42.42 % 132 0.00 % 1 42.11 % 38
2008 Apertura 41.32 % 167 43.94 % 132 50.00 % 2 30.30 % 33
2009 Clausura 47.90 % 167 48.39 % 124 100.00 % 2 43.90 % 41
2009 Apertura 55.69 % 167 55.47 % 128 60.00 % 5 55.88 % 34
APÉNDICE A. TABLAS DE RESULTADOS
Cuadro A.2: Resultados del Modelo Poisson con Goles a Favor (cont.).
24
Temporada Efect. Juegos E. Local Local E. Empate Empate E. Visita Visita
2002 Apertura 52.94 % 204 53.63 % 179 0.00 % - 48.00 % 25
2003 Clausura 49.03 % 206 49.36 % 156 0.00 % - 48.00 % 50
2003 Apertura 54.81 % 208 54.55 % 154 0.00 % - 55.56 % 54
2004 Clausura 49.03 % 206 52.98 % 151 0.00 % - 38.18 % 55
2004 Apertura 54.49 % 167 52.10 % 119 0.00 % - 60.42 % 48
2005 Clausura 52.69 % 167 53.52 % 142 0.00 % - 48.00 % 25
2005 Apertura 53.29 % 167 54.47 % 123 0.00 % - 50.00 % 44
2006 Clausura 42.51 % 167 44.86 % 107 0.00 % - 38.33 % 60
2006 Apertura 49.71 % 171 53.90 % 141 28.57 % 7 30.43 % 23
2007 Clausura 51.46 % 171 53.15 % 143 0.00 % - 42.86 % 28
2007 Apertura 49.12 % 171 52.21 % 136 0.00 % - 37.14 % 35
2008 Clausura 42.11 % 171 44.85 % 136 0.00 % - 31.43 % 35
APÉNDICE A. TABLAS DE RESULTADOS
Cuadro A.4: Resultados del Modelo Poisson con Goles en Contra (cont.)
26
Temporada Efect. Juegos E. Local Local E. Empate Empate E. Visita Visita
2002 Apertura 45.10 % 204 49.07 % 161 30.95 % 42 0.00 % 1
2003 Clausura 42.72 % 206 46.15 % 156 31.11 % 45 40.00 % 5
2003 Apertura 46.63 % 208 50.32 % 155 31.25 % 48 80.00 % 5
2004 Clausura 44.66 % 206 47.74 % 155 34.04 % 47 50.00 % 4
2004 Apertura 41.32 % 167 46.15 % 130 24.32 % 37 0.00 % -
2005 Clausura 46.11 % 167 51.16 % 129 28.95 % 38 0.00 % -
2005 Apertura 44.31 % 167 51.18 % 127 16.67 % 36 75.00 % 4
2006 Clausura 35.93 % 167 39.17 % 120 28.26 % 46 0.00 % 1
2006 Apertura 52.05 % 171 54.07 % 135 45.71 % 35 0.00 % 1
2007 Clausura 43.27 % 171 50.41 % 121 23.91 % 46 50.00 % 4
2007 Apertura 48.54 % 171 54.84 % 124 30.95 % 42 40.00 % 5
APÉNDICE A. TABLAS DE RESULTADOS
Regresión Logı́stica
Multinomial
31
APÉNDICE B. REGRESIÓN LOGÍSTICA MULTINOMIAL 32
Variable Dependiente:
Empate Visitante
(1) (2)
Prob.Local.GC 0.940∗∗∗ 0.954∗∗∗
Observación
Empate Local Visitante Total
Empate 229 172 165 566
Predicción Local 865 1,857 513 3,235
Visitante 390 298 693 1,381
Total 1,484 2,327 1,371 5,182
Códigos
Modelo Poisson
1 # Las siguientes l ? neas buscan calcular las
probabilidades de los resultados desde 0 -0
2 # hasta 8 -8 con base en un modelo Poisson con lambda
= Promedio de goles
3 MatJuego <- matrix (0 ,9 ,9)
4 colnames ( MatJuego ) = (0:8)
5 row . names ( MatJuego ) = (0:8)
6
7 # Inicializa matriz para guardar todas las
probabilidades del modelo Poisson
8 ProbPois = c (0 ,0 ,0 ,0 ,0 ,0 ,0 ,0)
9 # Selecci ? n de equipos en juegos de la temporada j
10 for ( j in 1: length ( temp ) )
11 {
12 aux <- base $ Torneo == temp [ j ]
13 Partidos = base $ Local [ aux ]
34
APÉNDICE C. CÓDIGOS 35
MatPoisGF )
40 Partidos [i ,6] = sum ( lower . tri ( MatPoisGC ) *
MatPoisGC )
41 Partidos [i ,7] = sum ( diag ( x = MatPoisGC ) )
42 Partidos [i ,8] = sum ( upper . tri ( MatPoisGC ) *
MatPoisGC )
43 }
44 ProbPois = rbind ( ProbPois , Partidos )
45 }
46 # Quitar vector inicial de ProbPois
47 ProbPois = ProbPois [ -1 ,]
48 # Pegar probabilidades Poisson a la base original
49 base = cbind ( base , ProbPois [ ,3:8])
Clasificación de Elo
1 equi <- levels ( baseElo $ Local )
2 R <- rep (1500 , length ( equi ) ) # Vector con los ratings ,
aqu ? se ir ? actualizando
3 names ( R ) <- equi
4 P <- rep (0 , length ( equi ) ) # Vector con la cantidad
de puntos , aqu ? se ir ? actualizando
5 names ( P ) <- equi
6 res <- levels ( baseElo $ Ganador )
7 n = dim ( baseElo )
8 Rmat <- matrix ( data = NA , nrow = n [1] , ncol = 9)
9 colnames ( Rmat ) <- c ( " RI . local " ," RI . visita " ," Prob .
local " ," RF . local " ," RF . visita " ," PI . local " ," PI .
visita " ," PF . local " ," PF . visita " )
10 temp <- unique ( baseElo $ Torneo )
11 m = length ( temp )
12 j = 1
13 i = 1
14
15 while ( i <= n [1])
16 {
17 if ( baseElo $ Torneo [ i ] == temp [ j ])
18 {
19 auxl <- which ( equi == baseElo $ Local [ i ])
20 Rl <- R [ auxl ]
APÉNDICE C. CÓDIGOS 37
61
62 drl <- Rl - Rv + 65 # 65 pts . corresponden a P [
ganador = local ] = 0.4496 , P [ ganador =
emapte ] = .2867 = > P [ ganador = local ] +0.5 * P
[ ganador = empate ] = 0.5929 ( cercano al
0.5925 promedio de victorias de local +
mitad de empates )
63 wel <- (10^( - drl / 400) + 1) ^ -1
64 Rmat [i ,3] <- wel
65 wev <- 1 - wel
66 dif <- abs ( as . numeric ( baseElo $ Goles . local [ i ]) -
as . numeric ( baseElo $ Goles . visitante [ i ]) )
67
68 # C ? lculo del k - f
69 if ( dif <= 1)
70 { D = 1}
71 else
72 {
73 if ( dif == 2 )
74 { D = 1.5}
75 else
76 { D = (11+ dif ) / 8}
77 }
78 k = 15 * D
79
80
81 R [ auxl ] = R [ auxl ] + k * ( wrl - wel )
82 R [ auxv ] = R [ auxv ] + k * ( wrv - wev )
83
84 # Ratings posteriores al partido
85 Rmat [i ,4] = R [ auxl ]
86 Rmat [i ,5] = R [ auxv ]
87
88 i = i + 1
89 }
90
91 else
92 {
93 # Saca el promedio de ratings de los equipos
que jugaron la temporada j
94 auxT <- which ( baseElo $ Torneo == temp [ j ])
APÉNDICE C. CÓDIGOS 39
1 require ( foreign )
2 require ( nnet )
3 require ( stargazer )
4
5 table ( BaseLog $ Ganador )
6 BaseLog $ Ganador = relevel ( BaseLog $ Ganador , ref = "
Local " )
7 BaseLog [ ,21:22] = BaseLog [ ,21:22] * 100
8 BaseLog [ ,31:36] = BaseLog [ ,31:36] * 100
9
10 RegLog3 <- multinom ( formula = Ganador ~ Prob . Local . GC
+ Prob . Local . GF + Prob . Visit . GC + Prob . Visit . GF +
Prob . Visita . Elo , data = BaseLog )
APÉNDICE C. CÓDIGOS 40
11 summary ( RegLog3 )
12 RegLog3coeff = exp ( coef ( RegLog3 ) )
13
14 stargazer ( RegLog3 , type = " latex " )
15 stargazer ( RegLog3 , type = " latex " , coef = list (
RegLog3coeff ) , p . auto = FALSE )
Referencias
41
Referencias 42