Estoy usando el paquete 'de 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 (dependiente) y variable. Dos de mis predictores están altamente correlacionados entre sí (x1, x2).
Como se puede ver en el ejemplo de arriba el de lars con la función de 'paso a paso' primera opción elige la variable que está más correlacionada con y. La siguiente variable a entrar en el modelo es el 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 tengo que hacer el 'lazo' opción:
> 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 tanto de la correlación de las variables del modelo en los dos primeros pasos. Esto es lo contrario de lo que he leído en varios artículos. La mayoría de ellos dicen que si hay un grupo de variables entre las que las correlaciones son muy altos, entonces el 'lazo' tiende a seleccionar sólo una variable del grupo al azar.
Alguien puede dar un ejemplo de este comportamiento? O explicar, por qué a mi las variables x1, x2 son agregados al modelo uno después de otro (juntos) ?