Ayúdame a ajustar esta regresión múltiple no lineal que ha desafiado todos los esfuerzos anteriores

9

EDITAR: desde que hice esta publicación, he seguido con una publicación adicional aquí .

Resumen del texto a continuación: estoy trabajando en un modelo y he intentado la regresión lineal, las transformaciones de Box Cox y GAM, pero no he progresado mucho

Utilizando R, actualmente estoy trabajando en un modelo para predecir el éxito de los jugadores de béisbol de ligas menores en el nivel de Grandes Ligas (MLB). La variable dependiente, la carrera ofensiva gana por encima del reemplazo (oWAR), es una representación del éxito a nivel de MLB y se mide como la suma de las contribuciones ofensivas por cada jugada en la que el jugador está involucrado a lo largo de su carrera (detalles aquí - http : //www.fangraphs.com/library/misc/war/) Las variables independientes son variables ofensivas de ligas menores con puntaje z para estadísticas que se consideran predictores importantes de éxito a nivel de grandes ligas, incluida la edad (los jugadores con más éxito a una edad más temprana tienden a ser mejores prospectos), tasa de ponches [SOPct ], tasa de caminata [BBrate] y producción ajustada (una medida global de producción ofensiva). Además, dado que hay varios niveles de las ligas menores, he incluido variables ficticias para el nivel de juego de las ligas menores (Doble A, Alta A, Baja A, Novato y Temporada Corta con Triple A [el nivel más alto antes de las ligas mayores] como la variable de referencia]). Nota: He reescalado WAR para que sea una variable que va de 0 a 1.

El diagrama de dispersión variable es el siguiente:

gráfico de dispersión

Como referencia, la variable dependiente, oWAR, tiene la siguiente gráfica:

diagrama de variables dependientes

Comencé con una regresión lineal oWAR = B1zAge + B2zSOPct + B3zBBPct + B4zAdjProd + B5DoubleA + B6HighA + B7LowA + B8Rookie + B9ShortSeasony obtuve las siguientes gráficas de diagnóstico:

linealRegresiónDiagnóstico

Existen problemas claros con la falta de imparcialidad de los residuos y la falta de variación aleatoria. Además, los residuos no son normales. Los resultados de la regresión se muestran a continuación:

linealRegresiónResultados

Siguiendo los consejos de un hilo anterior , probé una transformación de Box-Cox sin éxito. A continuación, probé un GAM con un enlace de registro y recibí estos gráficos:

splines

Original diagnosisChecksGAM

Nueva parcela de diagnóstico GAMDiag

Parece que las splines ayudaron a ajustar los datos, pero las gráficas de diagnóstico aún muestran un ajuste deficiente. EDITAR: pensé que estaba mirando originalmente los valores residuales frente a los valores ajustados, pero estaba incorrecto. El diagrama que se mostró originalmente está marcado como Original (arriba) y el diagrama que cargué después está marcado como Nuevo diagrama de diagnóstico (también arriba)

Resultados de GAM

R2

pero los resultados producidos por el comando gam.check(myregression, k.rep = 1000)no son tan prometedores.

GAMResults2

¿Alguien puede sugerir un próximo paso para este modelo? Me complace proporcionar cualquier otra información que considere útil para comprender el progreso que he realizado hasta ahora. Gracias por cualquier ayuda que usted nos pueda proporcionar.

zgall1
fuente
2
Encontré el código en este excelente manual sobre GAM en R - www3.nd.edu/~mclark19/learn/GAMS.pdf El código: library (car) scatterplotMatrix (mydata [, c (1,1: 8)], pch = 19, cex = .5, línea de registro = F, lwd.smooth = 1.25, spread = F, elipse = T, col = c ('gray60', '# 2957FF', '# FF8000'), eje de col. = 'gray50')
zgall1
1
¿Puedes compartir tu conjunto de datos? Además, +1 para esa matriz de diagrama de dispersión. Es excelente.
Zach
1
Eso es una lástima, parece un conjunto de datos interesante. Mi sugerencia sería probar algunos otros algoritmos de aprendizaje automático, por ejemplo, un bosque aleatorio.
Zach
2
Los bosques aleatorios se basan en árboles de decisión. Echa un vistazo al paquete randomForest en R, y la página de wikipedia random forest: en.wikipedia.org/wiki/Random_forest
Zach
2
"La variable dependiente ... se mide como la suma de las contribuciones ofensivas por cada jugada en la que el jugador participa en el transcurso de su carrera". Esto me salta a la vista. Un factor de confusión importante aquí es cuánto tiempo ha estado jugando un jugador, tanto en que [a] un tiempo de juego más largo significa más tiempo para "recoger" oWAR [b] mejores jugadores probablemente jugarán durante períodos de tiempo más largos.
Affine

Respuestas:

6

lrmrmsYrmsormYβYY

Frank Harrell
fuente
1
Por niveles, ¿quiere decir que agrupa la variable Y en cubos de 100-200? Si es así, ¿hay algún método preferido para elegir el tamaño del contenedor? ¿Deberían ser del mismo tamaño?
zgall1
1
Simplemente haga el binning temporalmente a menos que tengamos la solución continua. Puede agruparse en 100 percentiles, por ejemplorequire(Hmisc); cut2(y, g=100, levels.mean=TRUE)
Frank Harrell
Cuando dice que rmspronto se lanzará una nueva versión de , ¿tiene alguna idea de cuándo podría ser?
zgall1
Si usa Linux, puedo dárselo ahora, de lo contrario, espere 2 semanas.
Frank Harrell
No uso Linux, así que supongo que tendré que esperar. Avísame cuando esté disponible.
zgall1
1

Creo que volver a trabajar la variable dependiente y el modelo puede ser fructífero aquí. Al observar sus residuos de la lm(), parece que el problema principal es con los jugadores con una WAR de alta carrera (que definió como la suma de todas las WAR). ¡Tenga en cuenta que su WAR (escala) más alta predicha es 0.15 de un máximo de 1! Creo que hay dos cosas con esta variable dependiente que exacerban este problema:

  • Los jugadores que simplemente juegan por más tiempo tienen más tiempo para recoger WAR
  • Los buenos jugadores tenderán a quedarse más tiempo y, por lo tanto, tendrán la oportunidad de tener ese tiempo más largo para recoger WAR

Sin embargo, en el contexto de la predicción, incluir el tiempo jugado explícitamente como un control (de cualquier manera, ya sea como un peso o como el denominador en el cálculo del promedio de WAR de carrera) es contraproducente (también sospecho que su efecto también sería no lineal). Así que sugiero modelado de tiempo algo menos explícitamente en un modelo mixto utilizando lme4o nlme.

j=mii

sWARij=α+σi2+<other stuff>+εij

Con lme4esto se vería algo así
lmer(sWAR ~ <other stuff> + (1|Player), data=mydata)

sWAR

Afín
fuente
No estoy seguro de entender completamente. Si la variable dependiente es WAR estacional, ¿cuáles son las variables independientes? ¿Una línea de estadísticas de ligas menores idénticas para cada jugador? ¿Estamos diciendo esencialmente que la línea estadística A de las ligas menores puede conducir a las grandes ligas WAR B, C, D y E?
zgall1
Además, desde que publiqué este modelo, he seguido con una publicación adicional que puede consultar aquí: stats.stackexchange.com/questions/61711/…
zgall1