Je veux faire ce qui suit:
1) Régression OLS (pas de terme de pénalisation) pour obtenir les coefficients bêta ; représente les variables utilisées pour régresser. Je le fais en
lm.model = lm(y~ 0 + x)
betas = coefficients(lm.model)
2) Régression au lasso avec un terme de pénalisation, les critères de sélection seront les critères d'information bayésiens (BIC), donnés par
où représente le nombre de variables / régresseurs, T le nombre d'observations et b_ {j} ^ {*} les bêtas initiaux obtenus à l'étape 1). Je veux avoir des résultats de régression pour cette valeur \ lambda_j spécifique , qui est différente pour chaque régresseur utilisé. Donc s'il y a trois variables, il y aura trois valeurs différentes \ lambda_j .
Le problème d'optimisation OLS-Lasso est alors donné par
Comment puis-je faire cela en R avec le paquet lars ou glmnet? Je ne trouve pas un moyen de spécifier lambda et je ne suis pas sûr à 100% si j'obtiens les bons résultats si je lance
lars.model <- lars(x,y,type = "lasso", intercept = FALSE)
predict.lars(lars.model, type="coefficients", mode="lambda")
J'apprécie toute aide ici.
Mise à jour:
J'ai utilisé le code suivant maintenant:
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)
Dans la ligne 1, j'utilise la validation croisée avec mon facteur de pénalité spécifié ( ), qui est différent pour chaque régresseur . La ligne 2 sélectionne le "lambda.min" de fit.cv, qui est le lambda qui donne l'erreur de validation croisée moyenne minimale. La ligne 3 effectue un ajustement au lasso ( ) sur les données. Encore une fois, j'ai utilisé le facteur de pénalité . La ligne 4 extrait les coefficients des ajustements qui appartiennent au "optimal" choisi à la ligne 2.λλalpha=1
J'ai maintenant les coefficients bêta pour les régresseurs qui décrivent la solution optimale du problème de minimisation
avec un facteur de pénalité . L'ensemble optimal de coefficients est très probablement un sous-ensemble des régresseurs que j'ai utilisé initialement, c'est une conséquence de la méthode du Lasso qui réduit le nombre de régresseurs utilisés.
Ma compréhension et le code sont-ils corrects?
$\alpha$
devient . Veuillez le faire, car cela rendra les gens plus faciles à comprendre votre question et donc à y répondre.