6 votos

Construir un modelo de regresión con múltiples series temporales pequeñas

Para un proyecto personal, he construido un conjunto de datos de estadísticas de jugadores de hockey a lo largo del tiempo. Estoy buscando ideas sobre cómo debería modelar mi modelo predictivo (lol). El modelo se utilizaría para predecir cuántos puntos se espera que produzca un jugador con respecto a sus actuaciones anteriores.

Para simplificar, vamos a mantener sólo las tres columnas más "importantes" para mi conjunto de datos (hay un poco más de características que eso, pero no creo que sean necesarias para el problema) :

PlayerId | Points | Year

Ahora, he intentado utilizar los algoritmos de aprendizaje automático que conozco pero :

  • Los datos se comportan como una serie temporal. Digamos que tengo 10k jugadores, pues bien, esos jugadores tienen estadísticas a lo largo de los años (a veces desde la temporada 2005 hasta la 2017, otras desde la 2009-2010, bueno, ya entiendes el punto). Teniendo en cuenta esta relación entre filas (Por ejemplo playerId 1, Año 2005 y playerId 1, Año 2006), no puedo utilizar la mayoría de los algoritmos que conozco porque esta lógica se tiraría por la ventana y creo que es importante.

  • Teniendo en cuenta que los datos están relacionados en el tiempo para algunas filas, no creo que pueda modelarlos realmente como una serie temporal única. Hay pequeñas series temporales en el conjunto de datos, por jugadores, pero ciertamente no tengo suficientes datos para tratarlos como tales (con una fila por jugador por año, como máximo tendría 15 filas tal vez para un jugador, que no es suficiente para construir una buena predicción).

Teniendo en cuenta estos dos puntos, estoy bastante atascado sin solución.

He pensado en fusionar todas las filas en una sola, así tendría :

PlayerId | Points2005 | Points2006 | etc.. pero no tiene mucho sentido ya que perdemos la noción del tiempo.

También consideré que podría hacer un modelo predictivo para todos los jugadores individualmente y luego usar los pesos que encontraría para hacer otro modelo predictivo, pero estoy muy inseguro de cómo resultaría esto.

Sólo busco un pequeño consejo que me empuje en la dirección correcta, ya sea relacionado con la estadística pura o con un algoritmo de aprendizaje automático.

3 votos

No es exactamente lo que pediste, pero David Robinson tiene una excelente serie de publicaciones en su blog sobre el uso de técnicas bayesianas para las estadísticas de béisbol. Puedes encontrar todas las entradas del blog a través de aquí: varianceexplained.org/r/simulation-bayes-baseball Algunos de ellos pueden indicarle una forma útil de analizar sus propios datos. Buena suerte.

3 votos

¿por qué no ignora el año exacto? No aplique, por ejemplo, puntos en el año "2015" o en el año "2016". Sólo utiliza "los puntos del jugador x en su primer año" y "los puntos del jugador x en su segundo año" y así sucesivamente. No importa cuando un jugador y comenzó su carrera, seguramente tiene un "primer" y "segundo" año en su carrera también. Espero que esto ayude.

1 votos

¿Podría publicar algún (subconjunto de) datos, para que la gente pueda experimentar?

7voto

Ben Bolker Puntos 8729

Yo consideraría un modelo mixto con un efecto de tiempo en la carrera (tal vez un término aditivo/suave para permitir efectos no lineales) y un efecto aleatorio de (time-in-career|player) que permite variar el patrón para diferentes jugadores. Eso no considera explícitamente el número de puntos en el año anterior, pero parece un comienzo razonable, y maneja el aspecto temporal y la agrupación de datos dentro de los jugadores.

este modelo de ejemplo de curvas de crecimiento de ratas es algo diferente de su ejemplo (se centra en la inferencia sobre los tratamientos más que en la predicción de los individuos; pequeño número de sujetos, gran número de puntos por sujeto en relación con sus datos) pero sugiere que

mgcv::gam(points~careertime+s(careertime)+
    s(careertime,player,bs='fs'),
    data=dd, method="REML")

sería un primer modelo plausible. Se podría añadir s(year,bs="re") para incluir un efecto aleatorio del año natural, y te animo a que utilices cualquier otra información de covariación/agrupación que tengas (equipo, edad, ...)

2 votos

Lo siento, pero probablemente soy demasiado principiante en la materia como para entender bien su respuesta. Obviamente nada me impide hacer mis propias investigaciones basadas en esto, pero si te apetece ampliar un poco tu respuesta sería tremendamente útil.

1 votos

@TopinFrassi Te recomiendo que veas algunos de los otros contenidos sobre modelos mixtos aquí en stats.SE, en particular otras respuestas de Ben Bolker, para obtener algunos antecedentes.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X