Las métricas de goles esperados

xG y xGOT


Ismael Gómez Schmidt

2023-09-25

¡Bienvenidos!


Ismael Gómez Schmidt
Sports Data Analyst



Frontman Dato Fútbol

Blog

Github

Consultor e Instructor LPDT

Curso Big data

Asesorías

Data Scientist (Ice Hockey)

¿Qué haremos?


  • ¿Qué son las métricas xG y xGOT?

  • ¿Cómo se utilizan?

  • ¿Cómo se calculan?

  • ¿Qué puedo hacer si no tengo los datos de un proveedor?

    • Debate
    • Sugerencias

¿Qué son las métricas xG y xGOT?


Métricas avanzadas de Fútbol Analytics que tienen relación con los remates.


  • xG: eXpected Goals (Goles Esperados)
  • Previo al remate



  • OT: On Target
  • Posterior al remate (se consideran solo aquellos que fueron al arco)



Ambos casos representan la probabilidad de gol, cuantificada como proporción numérica entre 0 y 1, donde 0 es probabilidad nula y 1 total.

Algunas características del xG

La mayoría de sus valores son relativamente bajos (Un penal está entre 0.77 y 0.78)

La variable más importante es la posición del tiro (lo que tiene sentido): mientras más cerca y más centrado respecto al arco rival, mayor es el valor xG.

Pregunta


¿Qué implica, por ejemplo, que un remate tenga un valor xG = 0.3?

¿Cómo se utilizan?

¿Cómo se utilizan?


  • Se utilizan para comparar, analizar y evaluar el desempeño tanto de equipos (colectivo) como de jugadores (individual)

  • ¿Desempeño en qué?:

    • Generación de peligro vs Finiquito o Concreción
    • Peligro vs Volumen
    • Evolución temporal (durante 1 solo partido, X cantidad de partidos, varias temporadas, procesos de DTs, etc.)
    • Distintos contextos (ABP o Jugadas, Local o Visita, ganando, empatando o perdiendo, etc.)


  • Enfoque ofensivo y también defensivo (xG o xGOT en contra)


  • Los valores se observan en distintas ventanas temporales o tamaños de muestra: 1 partido, X cantidad de partidos, toda una temporada, etc. Evitar sacar conclusiones de muestras “pequeñas”

Ejemplos

Fotos de un partido: xG Timeline + Shotmap

Ranking xG p90 y xG promedio por tiro

Top 15 extremos según xG p90
Premier League 2021-2022
Player Pos. Team MJ unblocked shots xG avg. xG per shot xG p90 Goles p90
Diogo Jota LM Liverpool 2526 68 19.0 0.279 0.677 0.534
Mohamed Salah RM Liverpool 2957 99 22.0 0.222 0.670 0.700
Riyad Mahrez RM Man City 1626 42 11.0 0.262 0.609 0.609
Raheem Sterling LM Man City 2274 47 14.0 0.298 0.554 0.515
Sadio Mane LM Liverpool 3010 66 17.0 0.258 0.508 0.478
Phil Foden LM Man City 2279 39 11.0 0.282 0.434 0.355
Heung-Min Son LM Tottenham 3187 66 14.0 0.212 0.395 0.650
Jarrod Bowen RM West Ham 3198 60 13.0 0.217 0.366 0.338
Bryan Mbeumo RM Brentford 3121 59 11.0 0.186 0.317 0.115
Raphinha RM Leeds United 3141 60 11.0 0.183 0.315 0.315
Mason Greenwood RM Man United 1344 38 4.7 0.124 0.315 0.335
Ademola Lookman RM Leicester 1553 17 5.4 0.318 0.313 0.348
Bukayo Saka RM Arsenal 3179 51 11.0 0.216 0.311 0.311
W. Zaha LM Crystal Palace 2964 50 10.0 0.200 0.304 0.425
Harvey Lewis Barnes LM Leicester 2253 43 7.0 0.163 0.280 0.240
Tabla: @DatoFutbol_cl | Data: Instat

Parte de las métricas para apoyar el Scouting

Comparación ofensiva/defensiva

Diferencial de xG: xG a favor – xG en contra

Procesos de DTs

Goles – xG

Shooting Skills or Shooting Goals Added


xGOT - xG

Arqueros

Goles salvados = xGOT en contra - Goles recibidos

¿Cómo se calculan?

¿Cómo se calculan?

  • Se obtienen a partir de modelos de Machine Learning entrenados con una gran cantidad de remates

  • Se consideran sus características tales como posición (coordenadas x,y: distancia y ángulo al arco rival), parte del cuerpo, tipo de jugada, altura del balón, posición de otros jugadores, entre otros; además de su resultado (gol, atajado, fuera, bloqueado, etc.).

  • En el caso de xGOT, el xG es un parámetro de entrada!. Además se agrega la ubicación dentro del arco a la cual fue el tiro (y la velocidad si se tiene de manera precisa).

Algunos parámetros avanzados


Más parámetros avanzados: posición del arquero


¿Qué puedo hacer si no tengo los datos de un proveedor?

Sugerencias


(1) Datos históricos: datos abiertos de Statsbomb



Open Data de Statsbomb

Code
## Instalación del paquete {StatsbombR}

# https://github.com/statsbomb/StatsBombR
# install.packages("devtools")
# devtools::install_github("statsbomb/SDMTools")
# devtools::install_github("statsbomb/StatsBombR")

# cargamos el paquete
library(StatsBombR)

# traemos la tabla con todos los torneos disponibles abiertamente en Statsbomb:
competitions = FreeCompetitions()

# elegimos uno en particular: en este caso Qatar 2022
qatar = competitions %>% 
        filter(competition_id == 43 & season_id == 106)

# partidos de Qatar:
qatar_games = FreeMatches(qatar)

# datos de eventing de esos partidos:
qatar_eventing = free_allevents(qatar_games)

# limpieza/proceso de datos necesarios
# (ej: coordenadas X,Y separadas en 2 columnas distintas)
qatar_eventing_clean = allclean(qatar_eventing)

# guardamos los datos en formato CSV
library(readr)
write_csv(qatar_eventing_clean, "datos_eventing_qatar_2022_statsbomb.csv")
[1] "Whilst we are keen to share data and facilitate research, we also urge you to be responsible with the data. Please credit StatsBomb as your data source when using the data and visit https://statsbomb.com/media-pack/ to obtain our logos for public use."
country_name competition_name competition_gender season_name
Germany 1. Bundesliga male 2015/2016
Europe Champions League male 2018/2019
Europe Champions League male 2017/2018
Europe Champions League male 2016/2017
Europe Champions League male 2015/2016
Europe Champions League male 2014/2015
Europe Champions League male 2013/2014
Europe Champions League male 2012/2013
Europe Champions League male 2011/2012
Europe Champions League male 2010/2011
Europe Champions League male 2009/2010
Europe Champions League male 2008/2009
Europe Champions League male 2006/2007
Europe Champions League male 2004/2005
Europe Champions League male 2003/2004
Europe Champions League male 1999/2000
Europe Champions League male 1972/1973
Europe Champions League male 1971/1972
Europe Champions League male 1970/1971
Spain Copa del Rey male 1983/1984
Spain Copa del Rey male 1982/1983
Spain Copa del Rey male 1977/1978
England FA Women's Super League female 2020/2021
England FA Women's Super League female 2019/2020
England FA Women's Super League female 2018/2019
International FIFA U20 World Cup male 1979
International FIFA World Cup male 2022
International FIFA World Cup male 2018
International FIFA World Cup male 1990
International FIFA World Cup male 1986
International FIFA World Cup male 1974
International FIFA World Cup male 1970
International FIFA World Cup male 1962
International FIFA World Cup male 1958
India Indian Super league male 2021/2022
Spain La Liga male 2020/2021
Spain La Liga male 2019/2020
Spain La Liga male 2018/2019
Spain La Liga male 2017/2018
Spain La Liga male 2016/2017
Spain La Liga male 2015/2016
Spain La Liga male 2014/2015
Spain La Liga male 2013/2014
Spain La Liga male 2012/2013
Spain La Liga male 2011/2012
Spain La Liga male 2010/2011
Spain La Liga male 2009/2010
Spain La Liga male 2008/2009
Spain La Liga male 2007/2008
Spain La Liga male 2006/2007
Spain La Liga male 2005/2006
Spain La Liga male 2004/2005
Spain La Liga male 1973/1974
Argentina Liga Profesional male 1997/1998
Argentina Liga Profesional male 1981
France Ligue 1 male 2015/2016
North and Central America North American League male 1977
United States of America NWSL female 2018
England Premier League male 2015/2016
England Premier League male 2003/2004
Italy Serie A male 2015/2016
Italy Serie A male 1986/1987
Europe UEFA Euro male 2020
Europe UEFA Europa League male 1988/1989
Europe UEFA Women's Euro female 2022
International Women's World Cup female 2023
International Women's World Cup female 2019

(2) Ciencia de datos: R + paquetes especializados

(2) Ciencia de datos: Machine Learning


  • Entendimiento del problema (Clasificación de 2 clases desbalanceadas)


  • Entrenamiento, validación, testing (% de splitting, sampleo, cross validation)


  • Algoritmos (xGBoost, CatBoost, LightGBM, Regresión logística)


  • Métricas para comparar y evaluar los modelos (AUC, RMSE, curva ROC, Brier Score, Balanced Accuracy, Recall, etc.)


  • Calibración de probabilidades

(3) Recolección/Etiquetado “manual”


  • Depende de la realidad de cada club


  • Puede ser apoyado por el equipo de videoanalistas usando algún software (ej: Nacsports)


  • Puede ser apoyado con una herramienta interactiva que permite ingresar los datos


  • Lo más importante es definir con antelación las variables a recopilar

Comentarios finales


  • xG y xGOT permiten ir a 1 o 2 capas más profundas en el análisis típico basado en cantidad de tiros y goles. Luego hay métricas que exploran más atrás (antes de los tiros) en la cadena de acciones (xA, xT, VAEP, etc.)


  • Son aplicables para análisis individual y colectivo, desde los puntos de vista ofensivo y defensivo.


  • Modelos propios simplificados de xG o xGOT pueden ser útiles. Tener en cuenta que hasta los mismos proveedores profesionales tienen diferencias entre sí. Lo importante es aplicar e interpretar la información de manera correcta.


  • Tenemos a disposición los datos históricos suficientes para crear un modelo. Si nos capacitamos en Ciencia de Datos podríamos aportar valor a un club profesional.

¡Gracias!