Chcę wykonać następujące czynności:
1) Regresja OLS (bez kary), aby uzyskać współczynniki beta ; oznacza zmienne użyte do regresji. Robię to przez
lm.model = lm(y~ 0 + x)
betas = coefficients(lm.model)
2) Regresja Lasso z terminem karnym, kryteriami wyboru są Bayesowskie Kryteria Informacyjne (BIC), podane przez
gdzie oznacza numer zmiennej / regresora, oznacza liczbę obserwacji, a dla początkowych bet uzyskanych w kroku 1). Chcę uzyskać wyniki regresji dla tej konkretnej wartości , która jest inna dla każdego zastosowanego regresora. Dlatego jeśli są trzy zmienne, będą trzy różne wartości .
Problem optymalizacji OLS-Lasso jest następnie podawany przez
Jak mogę to zrobić w R z pakietem lars lub glmnet? Nie mogę znaleźć sposobu na określenie lambda i nie jestem w 100% pewien, czy otrzymam prawidłowe wyniki po uruchomieniu
lars.model <- lars(x,y,type = "lasso", intercept = FALSE)
predict.lars(lars.model, type="coefficients", mode="lambda")
Doceniam każdą pomoc tutaj.
Aktualizacja:
Użyłem teraz następującego kodu:
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)
W wierszu 1 używam weryfikacji krzyżowej z moim określonym współczynnikiem kary ( ), który jest inny dla każdego regresora . Wiersz 2 wybiera „lambda.min” z fits.cv, który jest lambda dającym minimalny średni błąd walidacji krzyżowej. Linia 3 wykonuje dopasowanie lasso ( ) na danych. Ponownie użyłem współczynnika kary . Wiersz 4 wyodrębnia współczynniki z dopasowań, które należą do „optymalnego” wybranego w wierszu 2.λλalpha=1
Teraz mam współczynniki beta dla regresorów, które przedstawiają optymalne rozwiązanie problemu minimalizacji
z czynnikiem karnym . Optymalny zestaw współczynników jest najprawdopodobniej podzbiorem regresorów, które początkowo stosowałem, jest to konsekwencja metody Lasso, która zmniejsza liczbę używanych regresorów.
Czy moje rozumienie i kod są poprawne?
$\alpha$
staje się . Proszę, zrób to, ponieważ dzięki temu ludzie łatwiej zrozumieją twoje pytanie, a zatem odpowiedzą na nie.