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.
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:
- ¿Existe la "Ventaja de Campo"? ¿Sigue influyendo jugar de local en el fútbol moderno?
- ¿Persiste el éxito de una temporada a otra? ¿O los equipos tienden a regresar a su promedio histórico (Reversión a la Media)?
- ¿Es posible predecir el resultado (Local / Empate / Visitante) superando a un modelo ingenuo?
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
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.
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.
Se construyó una ventana móvil (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.
Para evitar el Look-Ahead Bias, la evaluación se estructuró con un esquema estricto:
- Preprocesamiento: Normalización con
StandardScalerdentro de cada fold mediantePipelinepara 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).
| 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) medianteGridSearchCV.
- Baseline Ingenuo (Apostar siempre Local 'H' en Test):
48.63% - Modelo Final (Logistic Regression Tuned):
48.08% - Log-Loss en Test:
1.0076
| 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 |
El modelo basó sus decisiones principalmente en el Diferencial de Puntos Recientes (Diff_Roll_Pts), seguido de las métricas defensivas acumuladas.
El resultado experimental ofrece una conclusión clave sobre la naturaleza del fútbol profesional:
-
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. - 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.
- 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.
- 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 - Instalar dependencias:
pip install -r requirements.txt
- 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.



