Sélectionner une page

Modelo datos aplicación xG

El problema que todos ignoramos

Los analistas de fútbol siguen trabajando con datos viejos, como si el balón fuera una pelota de tenis de los años 80. Aquí el asunto: el xG (expected goals) no solo es una métrica, es una revolución que está siendo mal implementada por la mayoría.

¿Qué es xG y por qué te importa?

En una frase: xG mide la probabilidad de que un disparo termine en gol. En una novela: combina ángulos, distancia, presión defensiva y velocidad del balón para pintar el mapa de la calidad de una oportunidad. Y aquí está la clave: si tu modelo de datos no captura esas variables con precisión, estás regalando puntos a la competencia.

Los errores estructurales más comunes

Primero, tablas planas. Guardar cada disparo como una fila sin normalizar los atributos de posición y contexto genera redundancia y, peor, ruido. Segundo, falta de timestamps. Sin marcas de tiempo exactas, el cálculo de xG pierde la dimensión temporal y se vuelve un número estático. Tercero, usar solo la distancia. ¿Crees que la distancia sola cuenta? Olvídalo, la presión del defensor y el ángulo son tan decisivos como la distancia.

Cómo diseñar una base de datos robusta

Empieza con una tabla “Eventos” que contenga ID, tipo de evento, timestamp, y referencia a “Jugadores”. Luego, una tabla “Disparos” que enlace a “Eventos” y añada campos: distancia, ángulo, zona del campo, presión defensiva (número de oponentes a menos de 5 metros), velocidad del balón. Finalmente, una tabla “xG_Calculado” que almacene el valor generado por el algoritmo y la versión del modelo usado.

Esto permite versionar el algoritmo y comparar resultados históricos sin romper la integridad de los datos. Además, facilita consultas tipo: “¿Cuántos xG generó Messi en la zona 18-30 en los últimos 10 partidos?” sin cargar millones de filas innecesarias.

El modelo de cálculo: no te compliques

Usa una regresión logística con variables normalizadas. Entrena con al menos 10 mil disparos de ligas diferentes para evitar sesgos. Añade un factor de “contexto de partido” (estado del marcador, minuto) para refinar la predicción. Y, por supuesto, valida con una muestra de prueba que no haya visto el modelo.

Integración en la aplicación

Una API REST que devuelva JSON con los campos xG, idEvento y métricas auxiliares. Mantén la respuesta ligera: solo lo esencial. Cachea resultados por partido para reducir carga. Y, sobre todo, documenta cada endpoint con ejemplos claros, porque sin documentación el equipo de data science perderá tiempo valioso.

Ejemplo práctico

Supongamos que quieres saber el xG total de un partido. Consulta la tabla “xG_Calculado” filtrando por idPartido. Suma los valores y listo. Si quieres comparar con la media histórica, une la tabla “Partidos” y calcula la desviación estándar. Todo eso en menos de un segundo si la base está bien indexada.

El enlace que necesitabas

Para profundizar en la arquitectura de datos y ver ejemplos reales, revisa este recurso sobre modelo datos aplicaciГіn xG. Allí encontrarás casos de uso y plantillas listas para copiar.

Acción inmediata

Añade la columna “presión_defensiva” a tu tabla de disparos hoy mismo y ejecuta una prueba de regresión logística. Verás la diferencia en minutos, no en semanas.