Quiero hacer lo siguiente:
1) regresión por MCO (sin penalización plazo) para obtener los coeficientes beta $b_{j}^{*}$; $j$ representa las variables utilizadas para la regresión. Hago esto por
lm.model = lm(y~ 0 + x)
betas = coefficients(lm.model)
2) Lazo de regresión con una penalización término, el criterio de selección será el Criterio de Información Bayesiano (BIC), dada por
$$\lambda _{j} = \frac{\log (T)}{T|b_{j}^{*}|}$$
where $j$ stands for the variable/regressor number, $T$ for the number of observations, and $b_{j}^{*}$ for the initial betas obtained in step 1). I want to have regression results for this specific $\lambda_j$ value, which is different for each regressor used. Hence if there are three variables, there will be three different values $\lambda_j$.
The OLS-Lasso optimization problem is then given by
$$\underset{b\epsilon \mathbb{R}^{n} }{min} = \left \{ \sum_{t=1}^{T}(y_{t}-b^{\top} X_{t} )^{2} + T\sum_{j=1}^{m} ( \lambda_{t}|b_{j}| )\right \}$$
How can I do this in R with either the lars or glmnet package? I cannot find a way to specify lambda and I am not 100% sure if I get the correct results if I run
lars.model <- lars(x,y,type = "lasso", intercept = FALSE)
predict.lars(lars.model, type="coefficients", mode="lambda")
I appreciate any help here.
Update:
I have used the following code now:
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)
In line 1 I use cross validation with my specified penalty factor ($\lambda _{j} = \frac{\log (T)}{T|b_{j}^{*}|}$), que es diferente para cada regresor.
La línea 2, se selecciona el "lambda.min" de ajuste.cv, que es la expresión lambda que da a los medios mínimos de validación cruzada de error.
La línea 3 se realiza un lazo de ajuste (alpha=1
) en los datos. De nuevo he utilizado el factor de penalización $\lambda$.
Línea 4 extractos de los coeficientes de adapta a las cuales pertenecen a la "óptima" $\lambda$ elegido en la línea 2.
Ahora tengo la beta coeficientes de los regresores que representan la solución óptima del problema de minimización
$$\underset{b\epsilon \mathbb{R}^{n} }{min} = \left \{ \sum_{t=1}^{T}(y_{t}-b^{\top} X_{t} )^{2} + T\sum_{j=1}^{m} ( \lambda_{t}|b_{j}| )\right \}$$
with a penalty factor $\lambda _{j} = \frac{\log (T)}{T|b_{j}^{*}|}$. El conjunto óptimo de los coeficientes es más probable que un subconjunto de los regresores que yo inicialmente utilizado, esto es una consecuencia del método de Lazo que se contrae el número de regresores.
Es mi entendimiento y el código correcto?