Estoy ejecutando modelos de regresión LOESS en R, y quiero comparar los resultados de 12 modelos diferentes con diferentes tamaños de muestra. Puedo describir los modelos reales con más detalles si me ayuda a responder la pregunta.
Aquí están los tamaños de muestra:
Fastballs vs RHH 2008-09: 2002
Fastballs vs LHH 2008-09: 2209
Fastballs vs RHH 2010: 527
Fastballs vs LHH 2010: 449
Changeups vs RHH 2008-09: 365
Changeups vs LHH 2008-09: 824
Changeups vs RHH 2010: 201
Changeups vs LHH 2010: 330
Curveballs vs RHH 2008-09: 488
Curveballs vs LHH 2008-09: 483
Curveballs vs RHH 2010: 213
Curveballs vs LHH 2010: 162
El modelo de regresión LOESS es un ajuste de superficie, donde la ubicación X y la ubicación Y de cada campo de béisbol se usan para predecir la probabilidad de golpe oscilante. Sin embargo, me gustaría comparar entre los 12 de estos modelos, pero establecer el mismo intervalo (es decir, intervalo = 0,5) arrojará resultados diferentes ya que existe un rango tan amplio de tamaños de muestra.
Mi pregunta básica es ¿cómo determina la duración de su modelo? Un tramo más alto suaviza más el ajuste, mientras que un tramo más bajo captura más tendencias pero introduce ruido estadístico si hay muy pocos datos. Utilizo un intervalo mayor para tamaños de muestra más pequeños y un intervalo inferior para tamaños de muestra más grandes.
¿Qué tengo que hacer? ¿Cuál es una buena regla general cuando se establece el span para modelos de regresión LOESS en R? ¡Gracias por adelantado!
fuente
Respuestas:
A menudo se usa una validación cruzada, por ejemplo k- pliegue, si el objetivo es encontrar un ajuste con el RMSEP más bajo. Divida sus datos en k grupos y, dejando a cada grupo a su vez, ajuste un modelo de loess usando los grupos de datos k -1 y un valor elegido del parámetro de suavizado, y use ese modelo para predecir el grupo excluido. Almacene los valores pronosticados para el grupo excluido y luego repita hasta que cada uno de los k grupos se haya omitido una vez. Usando el conjunto de valores predichos, calcule RMSEP. Luego repita todo para cada valor del parámetro de suavizado que desea sintonizar. Seleccione el parámetro de suavizado que proporciona el RMSEP más bajo en CV.
Esto es, como puede ver, bastante computacionalmente pesado. Me sorprendería que no hubiera una alternativa de validación cruzada generalizada (GCV) al CV verdadero que pudiera usar con LOESS. Hastie et al (sección 6.2) indican que esto es bastante simple de hacer y está cubierto en uno de sus ejercicios. .
Le sugiero que lea las secciones 6.1.1, 6.1.2 y 6.2, además de las secciones sobre regularización de splines de suavizado (ya que el contenido también se aplica aquí) en el Capítulo 5 de Hastie et al. (2009) Los elementos del aprendizaje estadístico: minería de datos, inferencia y predicción . 2da edición. Saltador. El PDF se puede descargar de forma gratuita.
fuente
Sugiero consultar modelos de aditivos generalizados (GAM, consulte el paquete mgcv en R). Solo estoy aprendiendo acerca de ellos, pero parecen darse cuenta automáticamente de la cantidad de "ondulación" justificada por los datos. También veo que se trata de datos binomiales (huelga versus no huelga), así que asegúrese de analizar los datos sin procesar (es decir, no agregue proporciones, use los datos sin procesar paso por paso) y use family = 'binomial' (suponiendo que vas a usar R). Si tiene información sobre qué lanzadores y bateadores individuales están contribuyendo a los datos, probablemente pueda aumentar su poder haciendo un modelo mixto aditivo generalizado (GAMM, vea el paquete gamm4 en R) y especificando el lanzador y el bateador como efectos aleatorios (y nuevamente , estableciendo family = 'binomial'). Finalmente, probablemente desee permitir una interacción entre los suavizados de X e Y, pero nunca lo he intentado yo mismo, así que no sé cómo hacerlo. Un modelo gamm4 sin la interacción X * Y se vería así:
Ahora que lo pienso, es probable que desee dejar que los suavizados varíen dentro de cada nivel de tipo de lanzamiento y mano de bateador. Esto hace que el problema sea más difícil ya que aún no he descubierto cómo permitir que los suavizados varíen según las múltiples variables de una manera que posteriormente produzca pruebas analíticas significativas ( vea mis consultas a la lista de modelos mixtos R-SIG ). Tu podrías intentar:
Pero esto no dará pruebas significativas de los suavizados. Al intentar resolver este problema yo mismo, utilicé el remuestreo de bootstrap donde en cada iteración obtengo las predicciones del modelo para el espacio de datos completo y luego calculo los IC del 95% de bootstap para cada punto en el espacio y cualquier efecto que me interese calcular.
fuente
Para una regresión loess, mi comprensión como no estadístico, es que puede elegir su rango basado en la interpretación visual (el gráfico con numerosos valores de rango puede elegir el que tenga la menor cantidad de suavizado que parezca apropiado) o puede usar la validación cruzada (CV) o validación cruzada generalizada (GCV). A continuación se muestra el código que utilicé para GCV de una regresión loess basada en el código del excelente libro de Takezawa, Introducción a la regresión no paramétrica (de p219).
y con mis datos, hice lo siguiente:
Lo sentimos, el código es bastante descuidado, esta fue una de mis primeras veces que usé R, pero debería darle una idea de cómo hacer GSV para la regresión loess para encontrar el mejor lapso para usar de una manera más objetiva que la simple inspección visual. En el gráfico anterior, le interesa el intervalo que minimiza la función (el más bajo en la "curva" trazada).
fuente
Si cambia a un modelo de aditivo generalizado, puede usar la
gam()
función del paquete mgcv , en el que el autor nos asegura :(
k
aquí está el parámetro de grados de libertad para el suavizador, que es similar al parámetro de suavidad de loess)fuente
Podría escribir su propio bucle de validación cruzada desde cero que utiliza la
loess()
función delstats
paquete.Configurar un marco de datos de juguete.
Configure variables útiles para manejar el ciclo de validación cruzada.
Ejecuta un
for
bucle anidado que itera sobre cada posibilidad de intervalospan.seq
y cada plieguefolds
.Calcule el error medio de la media de validación cruzada de cada uno de los 10 pliegues:
Encuentre qué período resultó en el más bajo .MSE
Traza tus resultados.
fuente
Use el paquete locfit. Es una versión ligeramente modificada del loess pero mucho más rápido. También tiene una función incorporada para calcular gcv http://www.statistik.lmu.de/~leiten/Lehre/Material/GLM_0708/Tutorium/locfit.pdf
fuente
El paquete fANCOVA proporciona una forma automatizada de calcular el lapso ideal usando gcv o aic:
fuente