2014-06-10 21 views
11

Sto eseguendo una regressione con 67 osservazioni e 32 variabili. Sto facendo la selezione delle variabili usando la funzione cv.glmnet dal pacchetto glmnet. C'è una variabile che voglio forzare nel modello. (Viene eliminato durante la normale procedura.) Come posso specificare questa condizione in cv.glmnet?Come posso forzare cv.glmnet a non eliminare una variabile specifica?

Grazie!

Il mio codice è simile al seguente:

glmntfit <- cv.glmnet(mydata[,-1], mydata[,1]) 
coef(glmntfit, s=glmntfit$lambda.1se) 

e la variabile che voglio è mydata [2].

risposta

9

Ciò può essere ottenuto fornendo un vettore penalty.factor, come descritto in ?glmnet. Un fattore di penalità di 0 indica che "la variabile è sempre inclusa nel modello", mentre l'1 è l'impostazione predefinita.

glmntfit <- cv.glmnet(mydata[,-1], mydata[, 1], 
         penalty.factor=c(0, rep(1, ncol(mydata) - 2))) 
+0

'penalty.factor = (nomi (mydata) [1: ...] == 'VAR_TO_PENALIZE')' sarebbe un modo più elegante per selezionare quella variabile. – smci

+0

Esiste la possibilità che anche dopo aver impostato penalty.factor di una variabile su 0, non sia ancora forzato nel modello? –

Problemi correlati