Voglio fare quanto segue:
1) regressione OLS (nessun termine di penalizzazione) per ottenere coefficienti beta ; sta per le variabili usate per regredire. Lo faccio per
lm.model = lm(y~ 0 + x)
betas = coefficients(lm.model)
2) regressione del lazo con un termine di penalizzazione, i criteri di selezione devono essere i criteri di informazione bayesiani (BIC), forniti da
dove sta per il numero variabile / regressore, per il numero di osservazioni e per i beta iniziali ottenuti nel passaggio 1). Voglio avere risultati di regressione per questo specifico valore , che è diverso per ogni regressore utilizzato. Quindi se ci sono tre variabili, ci saranno tre diversi valori .
Il problema di ottimizzazione del lazo OLS è quindi dato da
Come posso farlo in R con il pacchetto lars o glmnet? Non riesco a trovare un modo per specificare lambda e non sono sicuro al 100% se ottengo i risultati corretti se corro
lars.model <- lars(x,y,type = "lasso", intercept = FALSE)
predict.lars(lars.model, type="coefficients", mode="lambda")
Apprezzo qualsiasi aiuto qui.
Aggiornare:
Ho usato il seguente codice ora:
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)
Nella riga 1 utilizzo la convalida incrociata con il mio fattore di penalità specificato ( ), che è diverso per ogni regressore . La riga 2 seleziona "lambda.min" di fits.cv, ovvero lambda che fornisce l'errore di convalida incrociata medio minimo. La riga 3 esegue un adattamento lazo ( ) sui dati. Ancora una volta ho usato il fattore di penalità . La riga 4 estrae i coefficienti dagli accoppiamenti che appartengono al "ottimale" scelto nella riga 2.alpha=1
Ora ho i coefficienti beta per i regressori che descrivono la soluzione ottimale del problema di minimizzazione
con un fattore di penalità . L'insieme ottimale di coefficienti è molto probabilmente un sottoinsieme dei regressori che inizialmente ho usato, questa è una conseguenza del metodo Lazo che riduce il numero di regressori usati.
La mia comprensione e il codice sono corretti?
$\alpha$
diventa . Per favore, rendi questo, poiché renderà le persone più facilmente in grado di capire la tua domanda e quindi rispondere.