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

15

Estoy tratando de entender la diferencia básica entre la regresión por pasos y hacia atrás en R usando la función de paso. Para la regresión gradual, 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 el siguiente resultado para atrás

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 2do paso. ¿Qué está tratando de lograr la función agregando + disp nuevamente en la selección por pasos? ¿Por qué R está agregando + disp en el segundo paso, mientras que los resultados son los mismos (valores de AIC y valores de selección de modelo) que la selección hacia atrás? ¿Cómo funciona exactamente R en la selección por pasos?

Realmente quiero entender cómo funciona esta función en R. ¡Gracias de antemano por la ayuda!


fuente

Respuestas:

16

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

Aquí hay un resumen 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 de AIC para cada modelo 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 tu regresión por pasos. El valor 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 no elimina 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 la posible eliminación gradual de un término de su modelo completo y compara el valor de extractAIC, enumerándolos en orden ascendente. Dado que el valor AIC más pequeño es más probable que se parezca al modelo TRUTH, el paso conserva el modelo (-disp) en el paso uno.

El proceso se repite nuevamente, pero con el modelo retenido (-disp) como punto de partida. Los términos se restan ("hacia atrás") o se restan / agregan ("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 parámetros de detención de proceso y resultantes.

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

Sin embargo, en modelos complicados con un gran número de predictores que requieren numerosos pasos para resolverse, la adición de un término que fue eliminado inicialmente es fundamental para proporcionar la forma más exhaustiva de comparar los términos.

Espero que esta ayuda de alguna manera.

Adam Quek
fuente
66
"Dado que el valor AIC más pequeño es más probable que se parezca al modelo VERDAD", es completamente falso. La construcción de modelos paso a paso tiene la misma probabilidad de retener predictores falsos que de rechazar predictores verdaderos ... entre una serie de otros problemas: stats.stackexchange.com/questions/115843/…
Alexis
2
Obviamente es una mentira. Es por eso que la selección de modelos basada en criterios únicos (como la regresión por pasos) es un poco ingenua.
Adam Quek
@Alexis ama sus recomendaciones en su respuesta en el enlace.
Adam Quek
3

Aquí una respuesta simplificada. Primero, ambos procedimientos intentan reducir el AIC de un modelo dado, pero lo hacen de diferentes maneras. 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 la selección por pasos, 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 +dispen 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 brinda los mismos resultados que en la selección hacia atrás.

Ayar Paco
fuente