Regressione graduale in R – Come funziona?

Sto cercando di capire la differenza fondamentale tra la regressione graduale e quella allindietro in R utilizzando la funzione step. Per la regressione graduale ho utilizzato il seguente comando

 step(lm(mpg~wt+drat+disp+qsec,data=mtcars),direction="both") 

Ho ottenuto loutput di seguito per il codice precedente.

avanti

Per la selezione delle variabili allindietro ho utilizzato il seguente comando

 step(lm(mpg~wt+drat+disp+qsec,data=mtcars),direction="backward") 

E ho ottenuto loutput di seguito per indietro

indietro

Per quanto ho capito, quando non viene specificato alcun parametro, la selezione graduale agisce come allindietro a meno che i parametri “superiore” e “inferiore” non siano specificati in R. Tuttavia, nelloutput della selezione graduale, cè un + disp che viene aggiunto nel secondo passaggio. Qual è la funzione che cerca di ottenere aggiungendo di nuovo + disp nella selezione graduale? Perché R aggiunge il + disp nel 2 ° passaggio mentre i risultati sono gli stessi (valori AIC e valori di selezione del modello) della selezione allindietro. Come funziona esattamente R nella selezione graduale?

Voglio davvero capire come funziona questa funzione in R. Grazie in anticipo per laiuto!

Risposta

Forse sarebbe più facile capire come viene eseguita la regressione graduale guardando tutti i 15 possibili modelli di lm.

Ecco “una rapida generazione di formule per tutte le 15 combinazioni.

library(leaps) tmp<-regsubsets(mpg ~ wt + drat + disp + qsec, data=mtcars, nbest=1000, really.big=T, intercept=F) all.mods <- summary(tmp)[[1]] all.mods <- lapply(1:nrow(all.mods, function(x)as.formula(paste("mpg~", paste(names(which(all.mods[x,])), collapse="+")))) head(all.mods) [[1]] mpg ~ drat <environment: 0x0000000013a678d8> [[2]] mpg ~ qsec <environment: 0x0000000013a6b3b0> [[3]] mpg ~ wt <environment: 0x0000000013a6df28> [[4]] mpg ~ disp <environment: 0x0000000013a70aa0> [[5]] mpg ~ wt + qsec <environment: 0x0000000013a74540> [[6]] mpg ~ drat + disp <environment: 0x0000000013a76f68> 

I valori AIC per ogni modello vengono estratti con:

all.lm<-lapply(all.mods, lm, mtcars) sapply(all.lm, extractAIC)[2,] [1] 97.98786 111.77605 73.21736 77.39732 63.90843 77.92493 74.15591 79.02978 91.24052 71.35572 [11] 63.89108 65.90826 78.68074 72.97352 65.62733 

Torniamo alla tua regressione a gradini. Il valore extractAIC per lm (mpg ~ wt + drat + disp + qsec) è 65,63 (equivalente al modello 15 nellelenco sopra).

Se il modello rimuove disp (-disp), allora lm (mpg ~ wt + drat + qsec) è 63.891 (o il modello 11 nellelenco).

Se il modello lo fa non rimuovere nulla (nessuno), lAIC è ancora 65,63

Se il modello rimuove qsec (-qsec), allora lm (mpg ~ wt + drat + disp) è 65,908 (modello 12).

ecc.

Fondamentalmente il riepilogo rivela tutta la possibile rimozione graduale di un termine dal modello completo e confronta il valore extractAIC, elencandoli in ordine crescente. Poiché è più probabile che il valore AIC più piccolo assomigli al modello TRUTH, il passaggio mantieni il modello (-disp) nel passaggio uno.

Il processo viene ripetuto di nuovo, ma con il modello mantenuto (-disp) come punto di partenza. I termini vengono sottratti (“al contrario”) o sottratti / aggiunti (“entrambi”) per consentire il confronto dei modelli. Poiché il valore AIC più basso in confronto è ancora il modello (-disp), larresto del processo e i modelli risultanti forniti.

Riguardo alla tua query: “Qual è la funzione che cerca di ottenere aggiungendo di nuovo il + disp nella selezione graduale? “, in questo caso, non fa nulla, perché il miglior modello tra tutti i 15 modelli è il modello 11, cioè lm (mpg ~ wt + drat + qsec).

Tuttavia, in modelli complicati con un numero elevato di predittori che richiedono numerosi passaggi per essere risolti, laggiunta di un termine che è stato rimosso inizialmente è fondamentale per fornire il modo più esaustivo di confrontare i termini.

Spero che questo aiuto in qualche modo.

Commenti

  • " Poiché è più probabile che il valore AIC più piccolo assomigli al Il modello TRUTH " è completamente falso. La creazione di modelli graduali ha la stessa probabilità di mantenere predittori falsi quanto di rifiutare predittori veri … tra una serie di altri problemi: stats.stackexchange.com/questions/115843/…
  • Ovviamente ' una bugia. Questo è ' perché la selezione del modello basata su criteri singoli (come la regressione graduale) è un po ingenua.
  • @Alexis ama i tuoi consigli nella tua risposta nel link.

Risposta

Ecco una risposta semplificata. Innanzitutto, entrambe le procedure cercano di ridurre lAIC di un dato modello, ma lo fanno in modi diversi. Quindi, la differenza fondamentale è che nella procedura di selezione allindietro puoi solo scartare le variabili dal modello in qualsiasi passaggio, mentre nella selezione graduale puoi anche aggiungere variabili al modello.

Informazioni sulloutput nel passaggio selezione, in generale loutput mostra che hai ordinato delle alternative per ridurre lAIC, quindi la prima riga in ogni passaggio è lopzione migliore. Quindi, cè un +disp nella terza riga perché laggiunta di quella variabile al tuo modello sarebbe la terza migliore opzione per diminuire il tuo AIC. Ma ovviamente, poiché la tua migliore alternativa è <none>, ciò significa non fare nulla, la procedura si interrompe e ti dà gli stessi risultati della selezione allindietro.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *