Regressione graduale in R - Come funziona?


15

Sto cercando di capire la differenza di base tra regressione graduale e regressiva in R usando la funzione step. Per la regressione graduale ho usato il seguente comando

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

Ho ottenuto l'output di seguito per il codice sopra.

inoltrare

Per la selezione delle variabili all'indietro ho usato il seguente comando

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

E ho ottenuto l'output seguente per tornare indietro

arretrato

Per quanto ho capito, quando non viene specificato alcun parametro, la selezione graduale agisce come all'indietro a meno che il parametro "superiore" e "inferiore" non siano specificati in R. Tuttavia nell'output della selezione graduale, c'è un + disp che viene aggiunto in il secondo passo. Cosa sta cercando di ottenere la funzione aggiungendo di nuovo + disp nella selezione graduale? Perché R aggiunge la + disp nel secondo passaggio, mentre i risultati sono gli stessi (valori AIC e valori di selezione del modello) della selezione all'indietro. Come funziona esattamente R nella selezione graduale?

Voglio davvero capire come funziona questa funzione in R. Grazie in anticipo per l'aiuto!

Risposte:


16

Forse sarebbe più facile capire come si sta facendo una regressione graduale osservando tutti e 15 i possibili modelli di LM.

Ecco un veloce per generare la formula per tutte e 15 le 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 ciascuno dei modelli sono 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 al tuo passo-regressione. Il valore extractAIC per lm (mpg ~ wt + drat + disp + qsec) è 65.63 (equivalente al modello 15 nell'elenco sopra).

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

Se il modello non rimuove nulla (nessuno), l'AIC rimane 65.63

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

eccetera.

Fondamentalmente il riepilogo rivela 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 mantiene 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 ("indietro") o sottratti / aggiunti ("entrambi") per consentire il confronto tra i modelli. Poiché il valore AIC più basso in confronto è ancora il modello (-disp), vengono forniti i modelli di arresto del processo e risultanti.

Per quanto riguarda la tua query: "Qual è la funzione che cerca di ottenere aggiungendo di nuovo + disp nella selezione graduale?", In questo caso, non fa davvero nulla, perché il modello migliore in tutti i 15 modelli è il modello 11 , cioè lm (mpg ~ wt + drat + qsec).

Tuttavia, nei modelli complicati con un gran numero di predittori che richiedono numerosi passaggi per essere risolti, l'aggiunta 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.


6
"Poiché è più probabile che il valore AIC più piccolo assomigli al modello VERITÀ" è falso. La costruzione di modelli graduali è altrettanto probabile che mantenga falsi predittori piuttosto che rifiutare veri predittori ... tra una serie di altri problemi: stats.stackexchange.com/questions/115843/…
Alexis,

2
Ovviamente è una bugia. Ecco perché la selezione del modello basata su singoli criteri (come la regressione graduale) è un po 'ingenua.
Adam Quek,

@Alexis ama i tuoi consigli nella tua risposta nel link.
Adam Quek,

3

Qui una risposta semplificata. Innanzitutto, entrambe le procedure cercano di ridurre l'AIC di un determinato modello, ma lo fanno in diversi modi. Quindi, la differenza di base è che nella procedura di selezione all'indietro è possibile scartare le variabili dal modello solo in qualsiasi passaggio, mentre nella selezione graduale è anche possibile aggiungere variabili al modello.

Per quanto riguarda l'output nella selezione graduale, in generale l'output mostra che hai ordinato alternative per ridurre il tuo AIC, quindi la prima riga in ogni passaggio è l'opzione migliore. Quindi, c'è un +dispnella terza riga perché l'aggiunta di quella variabile al modello sarebbe la terza opzione migliore per ridurre l'AIC. Ma ovviamente, poiché la tua migliore alternativa è <none>, questo significa non fare nulla, la procedura si interrompe e ti dà gli stessi risultati della selezione all'indietro.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.