Skip to content

Latest commit

 

History

1 Commit

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 

Repository files navigation

⚽ Econometría Deportiva y Machine Learning: Análisis Predictivo en La Liga

Python Scikit-Learn Pandas Seaborn

Un estudio end-to-end sobre la predictibilidad del fútbol profesional combinando reversión a la media (Econometría), efecto localía (EDA) y modelos de Machine Learning con validación temporal estricta.


📌 Resumen del Proyecto

El fútbol es inherentemente ruidoso y de baja anotación. Este proyecto analiza 1,820 partidos de La Liga (temporadas 21/22 a 25/26) para responder tres preguntas fundamentales:

  1. ¿Existe la "Ventaja de Campo"? ¿Sigue influyendo jugar de local en el fútbol moderno?
  2. ¿Persiste el éxito de una temporada a otra? ¿O los equipos tienden a regresar a su promedio histórico (Reversión a la Media)?
  3. ¿Es posible predecir el resultado (Local / Empate / Visitante) superando a un modelo ingenuo?

📂 Estructura del Proyecto

proyecto3_futbol_economia/
├── data/                    # Datasets descargados y procesados (CSV)
├── graficos/                # Visualizaciones generadas automáticamente (PNG)
├── script/                  # Código fuente modular
│   └── pipeline_completo.py # Pipeline completo (ETL + EDA + ML)
├── README.md                # Documentación del proyecto
└── requirements.txt        # Dependencias del entorno

📊 Hallazgos Clave y Visualizaciones

1. Ventaja de Localía (Home Advantage)

El 45.74% de los partidos en el dataset completo terminan en victoria local, superando holgadamente el 33.33% esperado por azar. Jugar en casa otorga un sesgo favorable sustained.

Ventaja de Localía

2. Econometría: Reversión a la Media (N vs N+1)

Se evaluó la posición final de 68 pares equipo-temporada en años consecutivos.

  • Correlación de Pearson (r): 0.7056 (p-val = 1.82e-11)
  • Correlación de Spearman: 0.7170
  • Conclusión: Existe una persistencia estructural relevante ($r \approx 0.71$) en los extremos de la tabla. Sin embargo, los equipos con rendimientos atípicos en la temporada $N$ experimentan una reversión a la media en $N+1$ impulsada por la varianza estocástica.

Reversión a la Media

3. Feature Engineering: Diferencial de Forma Reciente

Se construyó una ventana móvil ($k = 5$ partidos) con shift(1) y min_periods=5 para prevenir la fuga de información (Data Leakage). Los equipos que ganan en condición de local muestran diferencias de rendimiento positivas respecto a sus rivales.

Diferencial de Forma Reciente


🤖 Modelado Predictivo y Validación Temporal

Para evitar el Look-Ahead Bias, la evaluación se estructuró con un esquema estricto:

  • Preprocesamiento: Normalización con StandardScaler dentro de cada fold mediante Pipeline para eliminar leakage temporal.
  • Validación Cruzada: TimeSeriesSplit (5 Folds) en el 80% inicial de partidos (1,456 encuentros).
  • Evaluación Fuera de Muestra: Partición 20% más reciente (364 encuentros).

🏆 Resultados de Modelos (Cross-Validation)

Modelo Accuracy Promedio CV Std CV
Logistic Regression 47.19% ± 0.028
Gradient Boosting 42.64% ± 0.025
Random Forest 41.07% ± 0.028

Nota Metodológica: Puesto que la Regresión Logística obtuvo el rendimiento superior y la mayor estabilidad en CV, fue el modelo seleccionado para la optimización de hiperparámetros (C, solver) mediante GridSearchCV.


📈 Evaluación en Test Set (Futuro Inexplorado)

  • Baseline Ingenuo (Apostar siempre Local 'H' en Test): 48.63%
  • Modelo Final (Logistic Regression Tuned): 48.08%
  • Log-Loss en Test: 1.0076

📋 Reporte de Clasificación Detallado (Test Set)

Clase Precision Recall F1-Score Muestras
Visitante (A) 0.34 0.31 0.32 97
Empate (D) 0.29 0.02 0.04 90
Local (H) 0.53 0.81 0.64 177
Accuracy Global 0.48 364

🔑 Importancia Relativa de Variables

El modelo basó sus decisiones principalmente en el Diferencial de Puntos Recientes (Diff_Roll_Pts), seguido de las métricas defensivas acumuladas.

Importancia Relativa de Variables


💡 Conclusión Económica y Analítica

El resultado experimental ofrece una conclusión clave sobre la naturaleza del fútbol profesional:

  1. Persistencia Estructural vs. Volatilidad de Corto Plazo: A nivel de temporada completa existe una inercia alta ($r \approx 0.71$), demostrando que el nivel estructural de la plantilla domina en agregados de largo plazo.
  2. Límite Predictivo Partido a Partido: Las variables de forma reciente (k = 5 partidos) no lograron superar al baseline ingenuo de localía (48.08% vs. 48.63%, -0.55 pp). Este resultado, obtenido con una metodología rigurosa (split cronológico, validación cruzada temporal sin leakage, ajuste de hiperparámetros), es evidencia de que el resultado de un partido individual está dominado por variabilidad de corto plazo que estas métricas agregadas no logran capturar.
  3. Dominio de la Varianza Estocástica: El bajo Recall en empates (0.02) confirma que el resultado de un partido individual está fuertemente sujeto a ruido; el recall para victorias visitantes mejoró a 0.31 tras el ajuste de hiperparámetros, pero sigue siendo la clase más difícil de predecir junto con los empates.

🛠️ Instalación y Ejecución

  1. Clonar el repositorio:
    git clone [https://github.com/TU_USUARIO/proyecto3_futbol_economia.git](https://github.com/TU_USUARIO/proyecto3_futbol_economia.git)
    cd proyecto3_futbol_economia
  2. Instalar dependencias:
    pip install -r requirements.txt
  3. Ejecutar el pipeline completo:
    python3 script/pipeline_completo.py

💡 Nota: El script genera automáticamente los directorios data/ y graficos/ utilizando rutas relativas dinámicas mediante pathlib.

About

Sports economics case study: testing performance persistence vs. mean reversion in La Liga standings, plus a time-series-validated ML pipeline predicting match outcomes against a naive baseline.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Contributors

Languages