Estoy usando el paquete 'lars' en R con el siguiente código:
> library(lars)
> set.seed(3)
> n <- 1000
> x1 <- rnorm(n)
> x2 <- x1+rnorm(n)*0.5
> x3 <- rnorm(n)
> x4 <- rnorm(n)
> x5 <- rexp(n)
> y <- 5*x1 + 4*x2 + 2*x3 + 7*x4 + rnorm(n)
> x <- cbind(x1,x2,x3,x4,x5)
> cor(cbind(y,x))
y x1 x2 x3 x4 x5
y 1.00000000 0.74678534 0.743536093 0.210757777 0.59218321 0.03943133
x1 0.74678534 1.00000000 0.892113559 0.015302566 -0.03040464 0.04952222
x2 0.74353609 0.89211356 1.000000000 -0.003146131 -0.02172854 0.05703270
x3 0.21075778 0.01530257 -0.003146131 1.000000000 0.05437726 0.01449142
x4 0.59218321 -0.03040464 -0.021728535 0.054377256 1.00000000 -0.02166716
x5 0.03943133 0.04952222 0.057032700 0.014491422 -0.02166716 1.00000000
> m <- lars(x,y,"step",trace=T)
Forward Stepwise sequence
Computing X'X .....
LARS Step 1 : Variable 1 added
LARS Step 2 : Variable 4 added
LARS Step 3 : Variable 3 added
LARS Step 4 : Variable 2 added
LARS Step 5 : Variable 5 added
Computing residuals, RSS etc .....
Tengo un conjunto de datos con 5 variables continuas y estoy tratando de ajustar un modelo a una sola variable (dependiente) y. Dos de mis predictores están altamente correlacionados entre sí (x1, x2).
Como puede ver en el ejemplo anterior, la función lars con la opción 'paso a paso' primero elige la variable que está más correlacionada con y. La siguiente variable para ingresar al modelo es la que está más correlacionada con los residuos. De hecho, es x4:
> round((cor(cbind(resid(lm(y~x1)),x))[1,3:6]),4)
x2 x3 x4 x5
0.1163 0.2997 0.9246 0.0037
Ahora, si hago la opción 'lazo':
> m <- lars(x,y,"lasso",trace=T)
LASSO sequence
Computing X'X ....
LARS Step 1 : Variable 1 added
LARS Step 2 : Variable 2 added
LARS Step 3 : Variable 4 added
LARS Step 4 : Variable 3 added
LARS Step 5 : Variable 5 added
Agrega las dos variables correlacionadas al modelo en los primeros dos pasos. Esto es lo contrario de lo que leí en varios periódicos. La mayoría dice que si hay un grupo de variables entre las cuales las correlaciones son muy altas, entonces el 'lazo' tiende a seleccionar al azar solo una variable del grupo.
¿Alguien puede dar un ejemplo de este comportamiento? O explique, ¿por qué mis variables x1, x2 se agregan al modelo una tras otra (juntas)?
R
llamada que realiza el OP y la salida asociada que proporciona, verá que, de hecho, está utilizando el lazo. Como estoy seguro de que sabe, un pequeño ajuste del algoritmo lars produce la ruta de regularización del lazo.Respuestas:
¡El problema de la colinealidad está sobrevalorado!
Thomas, articulaste un punto de vista común, que si los predictores están correlacionados, incluso la mejor técnica de selección de variables simplemente elige una al azar del grupo. Afortunadamente, ¡esa es la forma de subestimar la capacidad de la regresión para descubrir la verdad! Si tiene el tipo correcto de variables explicativas (exógenas), la regresión múltiple promete encontrar el efecto de cada variable manteniendo constante a las demás. Ahora, si las variables están perfectamente correlacionadas, esto es literalmente imposible. Si las variables están correlacionadas, puede ser más difícil, pero con el tamaño del conjunto de datos típico de hoy, no es mucho más difícil.
La colinealidad es un problema de poca información. Echa un vistazo a esta parodia de colinealidad de Art Goldberger en el blog de Dave Giles . La forma en que hablamos de colinealidad parecería tonta si se aplica a una media en lugar de un coeficiente de regresión parcial.
¿Todavía no está convencido? Es hora de un código.
He creado variables altamente correlacionadas x1 y x2, pero puede ver en el gráfico a continuación que cuando x1 está cerca de -1, todavía vemos variabilidad en x2.
Ahora es el momento de agregar la "verdad":
¿Puede la regresión ordinaria tener éxito en medio del poderoso problema de colinealidad?
Oh si puede:
Ahora no hablé de LASSO, en el que se centró su pregunta. Pero dejame preguntarte esto. Si la regresión de la vieja escuela con eliminación hacia atrás no se deja engañar por la colinealidad, ¿por qué crees que lo haría el LASSO de última generación?
fuente
La respuesta de Ben me inspiró a ir un paso más allá en el camino que proporcionó, lo que sucederá si la "verdad", y, está en otras situaciones.
En el ejemplo original, y depende de las dos variables altamente correlacionadas x1 y x2. Suponiendo que hay otra variable, x3, digamos
La "verdad" y ahora se define como sigue
¿Qué pasaría con la regresión?
Existe un fuerte efecto de colinealidad. El error estándar de x2 es demasiado grande. Sin embargo, la regresión lineal identifica x2 como una variable no significativa.
¿Qué pasa con otro caso de regresión?
La variable x2 no es significativa y se recomienda eliminarla mediante la regresión lineal.
De los resultados anteriores, la colinealidad no es un problema en la regresión lineal, y verificar VIF no es muy útil.
Veamos otra situación. x3 = c (1: N) # N se define antes, N = 1000, x3 no está en la misma escala que x1.
La "verdad" y se define igual que arriba
¿Qué pasaría con la regresión?
Existe un fuerte efecto de colinealidad. Los errores estándar de x1, x2 son demasiado grandes. La regresión lineal no puede identificar la variable importante x1.
¿Qué pasa con otro caso de regresión?
La variable x2 no es significativa y se recomienda eliminarla mediante la regresión lineal.
Nota: la regresión de y en x1 y x3. Observe que el error estándar de x1 es solo 0.03.
En base a los resultados anteriores, mi conclusión es que
fuente