Quiero hacer lo siguiente:
1) Regresión OLS (sin término de penalización) para obtener coeficientes beta ; representa las variables utilizadas para la regresión. Hago esto por
lm.model = lm(y~ 0 + x)
betas = coefficients(lm.model)
2) Regresión de lazo con un término de penalización, los criterios de selección serán los Criterios de Información Bayesianos (BIC), dados por
donde representa el número de variable / regresor, para el número de observaciones y para las betas iniciales obtenidas en el paso 1). Quiero tener resultados de regresión para este valor específico de , que es diferente para cada regresor utilizado. Por lo tanto, si hay tres variables, habrá tres valores diferentes .
El problema de optimización de OLS-Lasso viene dado por
¿Cómo puedo hacer esto en R con el paquete lars o glmnet? No puedo encontrar una manera de especificar lambda y no estoy 100% seguro si obtengo los resultados correctos si ejecuto
lars.model <- lars(x,y,type = "lasso", intercept = FALSE)
predict.lars(lars.model, type="coefficients", mode="lambda")
Agradezco cualquier ayuda aquí.
Actualizar:
He usado el siguiente código ahora:
fits.cv = cv.glmnet(x,y,type="mse",penalty.factor = pnlty)
lmin = as.numeric(fits.cv[9]) #lambda.min
fits = glmnet(x,y, alpha=1, intercept=FALSE, penalty.factor = pnlty)
coef = coef(fits, s = lmin)
En la línea 1 utilizo la validación cruzada con mi factor de penalización especificado ( ), que es diferente para cada regresor . La línea 2 selecciona el "lambda.min" de fits.cv, que es el lambda que proporciona un error medio mínimo de validación cruzada. La línea 3 realiza un ajuste de lazo ( ) en los datos. Nuevamente utilicé el factor de penalización . La línea 4 extrae los coeficientes de los ajustes que pertenecen al "óptimo" elegido en la línea 2.alpha=1
Ahora tengo los coeficientes beta para los regresores que representan la solución óptima del problema de minimización.
con un factor de penalización . El conjunto óptimo de coeficientes es probablemente un subconjunto de los regresores que utilicé inicialmente, esto es una consecuencia del método Lasso que reduce el número de regresores utilizados.
¿Mi comprensión y el código son correctos?
$\alpha$
se convierte en . Haga esto, ya que hará que las personas puedan comprender su pregunta con mayor facilidad y, por lo tanto, responderla.