Stegvis regression i R – Hur fungerar det?

Jag försöker förstå den grundläggande skillnaden mellan stegvis och bakåtgående regression i R med stegfunktionen. För stegvis regression använde jag följande kommando

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

Jag fick nedanstående utdata för ovanstående kod.

framåt

För bakåtvariabelval valde jag följande kommando

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

Och jag fick utmatningen nedan för bakåt

bakåt

Så mycket som jag har förstått, när ingen parameter anges, fungerar stegvis markering som bakåt om inte parametern ”övre” och ”nedre” anges i R. Ändå i utgången av stegvis markering, det finns en + disp som läggs till i andra steget. Vad försöker funktionen uppnå genom att lägga till + disp igen i stegvis val? Varför lägger R till + disp i det andra steget medan resultaten är desamma (AIC-värden och modellvalvärden) som det bakåtgående valet. Hur fungerar R exakt i stegvis val?

Jag vill verkligen förstå hur den här funktionen fungerar i R. Tack på förhand för hjälpen!

Svar

Kanske skulle det vara lättare att förstå hur stegvis regression görs genom att titta på alla 15 möjliga lm-modeller.

Här är en quickie för att generera formel för alla 15 kombinationer.

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> 

AIC-värden för var och en av modellen extraheras med:

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 

Låt oss gå tillbaka till din steg-regression. ExtractAIC-värdet för lm (mpg ~ wt + drat + disp + qsec) är 65,63 (motsvarar modell 15 i listan ovan).

Om modellen tar bort disp (-disp) är lm (mpg ~ wt + drat + qsec) 63.891 (eller modell 11 i listan).

Om modellen gör inte ta bort någonting (ingen), då är AIC fortfarande 65.63

Om modellen tar bort qsec (-qsec) är lm (mpg ~ wt + drat + disp) 65.908 (modell 12).

etc.

Sammanfattningsvis avslöjar alla möjliga stegvisa borttagningar av en term från din fullständiga modell och jämför extractAIC-värdet genom att lista dem i stigande ordning. Eftersom det är mer troligt att det mindre AIC-värdet liknar TRUTH-modellen, behåll steg (-disp) -modellen i steg ett.

Processen upprepas igen, men med den bibehållna (-disp) modellen som utgångspunkt. Termer subtraheras (”bakåt”) eller subtraheras / läggs till (”båda”) för att möjliggöra jämförelse av modellerna. Eftersom det lägsta AIC-värdet i jämförelse fortfarande är (-disp) -modellen ges processstopp och resulterande modeller.

När det gäller din fråga: ”Vad försöker funktionen uppnå genom att lägga till + disp igen i det stegvisa urvalet? ”, i det här fallet gör det inte riktigt något, för den bästa modellen över alla 15 modellerna är modell 11, dvs lm (mpg ~ wt + drat + qsec).

I komplicerade modeller med stort antal prediktorer som kräver många steg för att lösa är det dock viktigt att lägga till en term som ursprungligen togs bort för att ge det mest uttömmande sättet att jämföra termerna.

Hoppas det här hjälp på något sätt.

Kommentarer

  • " Eftersom det mindre AIC-värdet sannolikt liknar SANNHETSMODELL " är rakt upp falsk. Stegvis modellbyggnad är ungefär lika sannolikt att behålla falska prediktorer som att avvisa sanna prediktorer … bland en mängd andra problem: stats.stackexchange.com/questions/115843/…
  • Uppenbarligen ' en lögn. Det är ' varför modellval baserat på enstaka kriterier (som stegvis regression) är lite naivt.
  • @Alexis älskar dina rekommendationer i ditt svar i länken.

Svar

Här är ett förenklat svar. Först försöker båda procedurerna minska AIC för en viss modell, men de gör det på olika sätt. Då är den grundläggande skillnaden att i det bakåtgående urvalsförfarandet kan du bara kasta variabler från modellen i vilket steg som helst, medan du i stegvis markering också kan lägga till variabler i modellen.

Om utdata i stegvis val, i allmänhet visar utgången att du har beställt alternativ för att minska din AIC, så den första raden i vilket steg som helst är ditt bästa alternativ. Sedan finns det en +disp i den tredje raden eftersom att lägga till den variabeln i din modell skulle vara ditt tredje bästa alternativ för att minska din AIC. Men uppenbarligen, eftersom ditt bästa alternativ är <none>, betyder det att du inte gör någonting, stoppar proceduren och ger dig samma resultat som i bakåtval.

Lämna ett svar

Din e-postadress kommer inte publiceras. Obligatoriska fält är märkta *