R

Minutos de juego y puntos. El Espanyol, sus finales de partido y mis enfados

Pienso que el Espanyol este 2024 se está dejando muchos puntos al final de los partidos. Cuando el partido llega al minuto 75 pierdo años de vida. ¿Es verdad que el Espanyol se está dejando puntos en el tramo final del partido? Vamos a estudiarlo numéricamente con worldfootballR y datos de FBRef empleando funciones que ya se han trabajado con anterioridad.

El primer paso será obtener todos los partidos de la Liga Hypermotion de este 2024 con fb_mach_url

Los porteros del Espanyol y la regresión binomial negativa

En la temporada 22/23 de la Liga el RCD Espanyol descendió a segunda división y los aficionados culpamos en parte los problemas que hubo durante toda la temporada con los porteros y quería analizar si hubo diferencias entre los porteros que jugaron esa temporada en el Espanyol y Diego López que jugó como portero titular la temporada anterior, dejaremos de lado las intervenciones de Joan García y Olazábal.

Comenzamos con un código conocido.

Alineaciones de equipos de fútbol con worldfootballR de Rstats

Para obtener datos sobre fútbol de distintos proveedores disponemos de la librería de rstats worldfootballR , está disponible en CRAN, con ella podremos extraer datos de:

Por supuesto, lo primero que tenéis que hacer es navegar por esas web y pensad en como haríais el scraping, de ese modo entenderéis mejor como van a trabajar las funciones que tiene este paquete. Al estar en CRAN no vamos a empezar por instalar así que directamente vamos a obtener los partidos de la Liga con un rango de fechas.

Pintando campos de fútbol con #rstats y entendiendo funciones de densidad

La librería de rstats ggsoccer permite representar campos de fútbol con un código bastante sencillo, a continuación se plantean una serie de ejemplos para empezar a ilustrar su uso y quiero que me de pie a escribir sobre la función de densidad de una variable, pero empezamos por el principio instalar el paquete y empezar a usar.

# install.packages("remotes")
# remotes::install_github("torvaney/ggsoccer")
library(tidyverse)
library(ggsoccer)

# Lo pintamos en el campo
ggplot() +
  annotate_pitch() +
  ggtitle("Campo sin nada") +
  theme_pitch()

El código habla por si solo, muy sencillo a ggplot añadimos annotate_pitch() y theme_pitch(). Ahora sería necesario añadir información a este terreno de juego y para ello recuperamos una entrada anterior donde podíamos disponer de datos de eventing de Statsbomb que nos van a permitir pintar mapas de calor o heatmaps si nos molamos.

Datos de eventing gratuitos en Statsbomb

Da comienzo una serie de entradas sobre datos, fútbol y rstats. Todas estas entradas estarán disponibles en mi repositorio de github. La función de estos artículos es poner en orden cosas que yo he ido aprendiendo, no olvidar esas cosas y servir de ayuda a nuevos analistas. Para entender mejor esta serie recomiendo leer el libro Introducción a la Estadística para Científicos de Datos con R que yo mismo escribí.

Introducción a la Estadística para Científicos de Datos. Capítulo 17. Modelización estadística. Seleccionar variables y modelo

El capítulo anterior comenzó con esta imagen.

Se trataba de establecer un marco de trabajo, un guión para el científico de datos con los pasos a seguir en el proceso de modelización estadística. Se trabajó la primera parte de ese marco, el conocimiento de los datos, el inicio del proceso de modelización. Este capítulo será el siguiente paso ilustrando como seleccionar variables a partir de los parámetros del modelo y proponer una selección del modelo final midiendo su capacidad predictiva. Es necesario comenzar justo donde finalizó el paso anterior.

Introducción a la Estadística para Científicos de Datos. Capítulo 16. Modelización estadística. Conociendo los datos

Establecer un método para la modelización estadística

En el capítulo 3 del ensayo se hacía mención al universo tidyverse y las librerías de R que englobaba, además de esas librerías hay una publicación de Hadley Wickham y Garret Grolemund R for data sience donde aparece la siguiente imagen:

Esa imagen describe un método para realizar ciencia de datos con R. Como en la anterior figura, este capítulo se dedicará a describir e ilustrar un método de modelización que recoge todo lo trabajado con anterioridad en el ensayo, para ello se emplea el ejemplo que ha servido de hilo conductor en otros capítulos. El ya conocido modelo de venta cruzada en el sector asegurador :

Introducción a la Estadística para Científicos de Datos. Capítulo 15. Modelos GLM. Regresión logística y regresión de poisson

Motivación de los modelos GLM

Hasta el momento se han planteado los siguientes modelos.

  • Modelo de regresión lineal
  • Modelos factoriales en diseño de experimentos

Para ambos modelos la variable respuesta ha de ser cuantitativa y distribuida normalmente, pero en el capítulo 10 se vio la siguiente figura.

La respuesta normal o gaussiana aparece, pero existen otro tipo de situaciones a las que se enfrenta el científico de datos donde el evento a estudiar no se distribuye normalmente. Sin ir mas lejos, en el ejercicio que está sirviendo de hilo conductor en el ensayo, una aseguradora española que opera en múltiples ramos quiere ofrecer seguro de automóviles a sus clientes del ramo de salud. Para ello se realizó un cuestionario a los clientes de forma que se marcó quienes de ellos estarían interesados en el producto de automóviles y quienes no. La variable de interés es si o no lo que plantea una clasificación binomial. ¿Qué sucede si se modeliza eventos si/no mediante un modelo de regresión lineal? Siguiendo el propio ejemplo de trabajo al que se hace permanentemente referencia.

Introducción a la Estadística para Científicos de Datos. Capítulo 14. Introducción al diseño de experimentos

Otro de los temas dedicados a la Estadística que tiene que conocer el científico de datos es el diseño de experimentos. La motivación del diseño de experimentos está magistralmente ilustrada por Julio Mulero en este hilo de Twitter. Y se considera imprescindible conocer estas técnicas porque aportan una forma de trabajar, de plantear los problemas y un conocimiento de las variables que mejorará el desempeño (y los modelos) del científico de datos.

Resultados de La Liga con rstats. Estudiando gráficamente rachas


Vamos a crear un gráfico con #rstats que recoja los resultados de La Liga equipo a equipo para poder estudiar rachas e «intuir» como puede ser la segunda vuelta. Además, este ejercicio es un buen uso del paquete worldfootballR y la función de ggplot geom_tile además me va a servir para animarme esta segunda vuelta para que el Español no sufra. La web que vamos a emplear para el trabajo es FBREF. Empezamos.

Introducción a la Estadística para Científicos de Datos. Capítulo 13. Regresión lineal

En el capítulo 11 dedicado al análisis bivariable se indicó que el inicio de la relación entre dos variables era la correlación, pues la regresión lineal es el principio de la modelización estadística. Evidentemente no es lo mismo pero establecer una analogía entre ambos conceptos permite entender los objetivos de la regresión lineal:

En este enlace de la recomendada web de Joaquín Amat se trata con mayor detenimiento esta relación. Como se indica en la figura ahora es una variable la que afecta a otra y es necesario crear una recta de regresión que exprese como se modifica una variable dependiente en función de otra variable independiente o regresora, si sólo hay una variable independiente se trata de un modelo de regresión lineal simple, si hay más de una variable es un modelo de regresión lineal múltiple.

Introducción a la Estadística para Científicos de Datos. Capítulo 12. Muestreo e inferencia estadística

En el capítulo anterior dedicado al análisis bivariable se crearon visualizaciones sencillas para describir la posible relación entre dos variables, pero más allá de impresiones visuales no es posible asegurar que esa relación tiene validez estadística. Para establecer esa validez es necesario disponer de cierta dialéctica, de cierta base teórica básica para entender como se comporta un contraste estadístico o un intervalo de confianza. El científico de datos tiende a considerar que toda esa base teórica está obsoleta y que existe un cambio en el paradigma, pero los problemas a resolver con análisis estadísticos avanzados son similares a los que resuelve la estadística clásica. El trabajo del científico de datos en muchas ocasiones consiste en separar la señal del ruido, separar lo aleatorio de lo estadísticamente significativo. En los capítulos anteriores se han ido estableciendo los cimientos para realizar esta labor.

Introducción a la Estadística para Científicos de Datos. Capítulo 11. Análisis bivariable

De nuevo se retoma el ejemplo que está sirviendo de hilo conductor para este ensayo, la campaña de marketing de venta cruzada en el sector asegurador que está disponible en Kaggle. Una aseguradora española que opera en múltiples ramos quiere ofrecer seguro de automóviles a sus clientes del ramo de salud. Para ello se realizó un cuestionario a los clientes de forma que se marcó quienes de ellos estarían interesados en el producto de automóviles y quienes no. Se identificaron posibles tareas: