Ich möchte Folgendes tun:
1) OLS-Regression (kein Bestrafungsterm), um Beta-Koeffizienten ; steht für die zur Regression verwendeten Variablen. Ich mache das durch j
lm.model = lm(y~ 0 + x)
betas = coefficients(lm.model)
2) Lasso-Regression mit einem Bestrafungsbegriff, die Auswahlkriterien sind die Bayesian Information Criteria (BIC), angegeben durch
Dabei steht für die Variable / Regressornummer, für die Anzahl der Beobachtungen und für die in Schritt 1) erhaltenen Anfangsbetas. Ich möchte Regressionsergebnisse für diesen bestimmten Wert haben, der für jeden verwendeten Regressor unterschiedlich ist. Wenn es also drei Variablen gibt, gibt es drei verschiedene Werte .T b ∗ j λ j λ j
Das OLS-Lasso-Optimierungsproblem ist dann gegeben durch
Wie kann ich dies in R entweder mit dem Lars- oder dem glmnet-Paket tun? Ich kann kein Lambda angeben und bin mir nicht 100% sicher, ob ich beim Ausführen die richtigen Ergebnisse erhalte
lars.model <- lars(x,y,type = "lasso", intercept = FALSE)
predict.lars(lars.model, type="coefficients", mode="lambda")
Ich freue mich über jede Hilfe hier.
Aktualisieren:
Ich habe jetzt den folgenden Code verwendet:
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 Zeile 1 verwende ich eine Kreuzvalidierung mit meinem angegebenen Straffaktor ( ), die für jeden Regressor unterschiedlich ist . Zeile 2 wählt das "Lambda.min" von fit.cv aus. Dies ist das Lambda, das den minimalen mittleren Kreuzvalidierungsfehler ergibt. Zeile 3 führt eine Lasso-Anpassung ( ) für die Daten durch. Wieder habe ich den Straffaktor . Zeile 4 extrahiert die Koeffizienten aus Anpassungen, die zu dem in Zeile 2 gewählten "optimalen" gehören .alpha=1
Jetzt habe ich die Beta-Koeffizienten für die Regressoren, die die optimale Lösung des Minimierungsproblems darstellen
mit einem Straffaktor . Der optimale Satz von Koeffizienten ist höchstwahrscheinlich eine Teilmenge der Regressoren, die ich ursprünglich verwendet habe. Dies ist eine Folge der Lasso-Methode, die die Anzahl der verwendeten Regressoren verringert.
Ist mein Verständnis und der Code korrekt?
$\alpha$
wird . Bitte machen Sie dies, da die Leute dadurch Ihre Frage leichter verstehen und daher beantworten können.