Regresión escalonada en R: ¿cómo funciona?

Estoy tratando de entender la diferencia básica entre la regresión paso a paso y hacia atrás en R usando la función paso. Para la regresión paso a paso utilicé el siguiente comando

 step(lm(mpg~wt+drat+disp+qsec,data=mtcars),direction="both") 

Obtuve el siguiente resultado para el código anterior.

adelante

Para la selección de variables hacia atrás utilicé el siguiente comando

 step(lm(mpg~wt+drat+disp+qsec,data=mtcars),direction="backward") 

Y obtuve la siguiente salida para retroceso

hacia atrás

Por lo que he entendido, cuando no se especifica ningún parámetro, la selección por pasos actúa como hacia atrás a menos que los parámetros «superior» e «inferior» se especifiquen en R. Sin embargo, en la salida de la selección por pasos, hay un + disp que se agrega en el segundo paso. ¿Qué intenta lograr la función agregando + disp nuevamente en la selección paso a paso? ¿Por qué R agrega + disp en el segundo paso mientras que los resultados son los mismos (valores AIC y valores de selección del modelo) que la selección hacia atrás? ¿Cómo funciona R exactamente en la selección por pasos?

Tengo muchas ganas de comprender cómo funciona esta función en R. ¡Gracias de antemano por la ayuda!

Respuesta

Quizás sería más fácil entender cómo se realiza la regresión escalonada al observar los 15 modelos posibles de lm.

A continuación, se muestra un método rápido para generar fórmulas para las 15 combinaciones.

library(leaps) tmp<-regsubsets(mpg ~ wt + drat + disp + qsec, data=mtcars, nbest=1000, really.big=T, intercept=F) all.mods <- summary(tmp)[[1]] all.mods <- lapply(1:nrow(all.mods, function(x)as.formula(paste("mpg~", paste(names(which(all.mods[x,])), collapse="+")))) head(all.mods) [[1]] mpg ~ drat <environment: 0x0000000013a678d8> [[2]] mpg ~ qsec <environment: 0x0000000013a6b3b0> [[3]] mpg ~ wt <environment: 0x0000000013a6df28> [[4]] mpg ~ disp <environment: 0x0000000013a70aa0> [[5]] mpg ~ wt + qsec <environment: 0x0000000013a74540> [[6]] mpg ~ drat + disp <environment: 0x0000000013a76f68> 

Los valores AIC para cada uno de los modelos se extraen con:

all.lm<-lapply(all.mods, lm, mtcars) sapply(all.lm, extractAIC)[2,] [1] 97.98786 111.77605 73.21736 77.39732 63.90843 77.92493 74.15591 79.02978 91.24052 71.35572 [11] 63.89108 65.90826 78.68074 72.97352 65.62733 

Volvamos a su regresión por pasos. El valor de extractAIC para lm (mpg ~ wt + drat + disp + qsec) es 65,63 (equivalente al modelo 15 en la lista anterior).

Si el modelo elimina disp (-disp), entonces lm (mpg ~ wt + drat + qsec) es 63.891 (o el modelo 11 en la lista).

Si el modelo lo hace no eliminar nada (ninguno), entonces el AIC sigue siendo 65.63

Si el modelo elimina qsec (-qsec), entonces lm (mpg ~ wt + drat + disp) es 65.908 (modelo 12).

etc.

Básicamente, el resumen revela todas las posibles eliminaciones paso a paso de un término de su modelo completo y compara el valor extractAIC, enumerándolos en orden ascendente. Dado que es más probable que el valor de AIC más pequeño se parezca al modelo TRUTH, el paso retenga el modelo (-disp) en el paso uno.

El proceso se repite de nuevo, pero con el modelo retenido (-disp) como punto de partida. Los términos se restan («al revés») o se restan / suman («ambos») para permitir la comparación de los modelos. Dado que el valor AIC más bajo en comparación sigue siendo el modelo (-disp), se dan los modelos de parada de proceso y resultantes.

Con respecto a su consulta: «¿Qué es la función que intenta lograr agregando + disp de nuevo en la selección paso a paso? «, en este caso, realmente no hace nada, porque el mejor modelo entre los 15 modelos es el modelo 11, es decir, lm (mpg ~ wt + drat + qsec).

Sin embargo, en modelos complicados con una gran cantidad de predictores que requieren numerosos pasos para resolverlos, volver a agregar un término que se eliminó inicialmente es fundamental para proporcionar la forma más exhaustiva de comparar los términos.

Espero que esto ayude de alguna manera.

Comentarios

  • " Dado que el valor AIC más pequeño es más probable que se parezca al El modelo TRUTH " es completamente falso. La construcción de modelos por pasos tiene la misma probabilidad de retener predictores falsos que rechazar predictores verdaderos … entre una serie de otros problemas: stats.stackexchange.com/questions/115843/…
  • Obviamente ' es mentira. Esa ' es la razón por la que la selección del modelo basada en criterios únicos (como la regresión por pasos) es un poco ingenua.
  • @Alexis adoran tus recomendaciones en tu respuesta en el enlace.

Respuesta

Aquí una respuesta simplificada. Primero, ambos procedimientos intentan reducir el AIC de un modelo dado, pero lo hacen de diferentes formas. Entonces, la diferencia básica es que en el procedimiento de selección hacia atrás solo puede descartar variables del modelo en cualquier paso, mientras que en la selección por pasos también puede agregar variables al modelo.

Acerca de la salida en el modelo por pasos selección, en general la salida muestra alternativas ordenadas para reducir su AIC, por lo que la primera fila en cualquier paso es su mejor opción. Luego, hay un +disp en la tercera fila porque agregar esa variable a su modelo sería su tercera mejor opción para disminuir su AIC. Pero obviamente, como su mejor alternativa es <none>, eso significa no hacer nada, el procedimiento se detiene y le da los mismos resultados que en la selección hacia atrás.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *