Stapsgewijze regressie in R – Hoe werkt het?

Ik probeer het fundamentele verschil tussen stapsgewijze en achterwaartse regressie in R te begrijpen met behulp van de stapfunctie. Voor stapsgewijze regressie gebruikte ik het volgende commando

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

Ik kreeg de onderstaande uitvoer voor de bovenstaande code.

forward

Voor achterwaartse variabele selectie gebruikte ik het volgende commando

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

En ik heb de onderstaande uitvoer voor achteruit

achteruit

Voor zover ik heb begrepen, werkt stapsgewijze selectie als er geen parameter is gespecificeerd als achteruit tenzij de parameter “boven” en “onder” zijn gespecificeerd in R. Maar in de uitvoer van stapsgewijze selectie, er is een + disp die wordt toegevoegd in de 2e stap. Wat probeert de functie te bereiken door de + disp weer toe te voegen aan de stapsgewijze selectie? Waarom voegt R de + disp toe in de 2e stap terwijl de resultaten hetzelfde zijn (AIC-waarden en modelselectiewaarden) als de achterwaartse selectie. Hoe werkt R precies in de stapsgewijze selectie?

Ik wil echt begrijpen hoe deze functie werkt in R. Bij voorbaat dank voor de hulp!

Antwoord

Misschien zou het gemakkelijker zijn om te begrijpen hoe stapsgewijze regressie wordt gedaan door naar alle 15 mogelijke lm-modellen te kijken.

Hier “is een vluggertje om een formule voor alle 15 combinaties te genereren.

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-waarden voor elk van de modellen worden geëxtraheerd met:

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 

Laten we teruggaan naar uw step-regressie. De extractAIC-waarde voor lm (mpg ~ wt + drat + disp + qsec) is 65,63 (equivalent aan model 15 in de bovenstaande lijst).

Als het model disp (-disp) verwijdert, dan is lm (mpg ~ wt + drat + qsec) 63.891 (of model 11 in de lijst).

Als het model dat wel doet niets verwijderen (geen), dan is de AIC nog steeds 65.63

Als het model qsec (-qsec) verwijdert, dan is lm (mpg ~ wt + drat + disp) 65.908 (model 12).

etc.

In wezen onthult de samenvatting de alle mogelijke stapsgewijze verwijdering van één term uit uw volledige model en vergelijkt de extractAIC-waarde door ze in oplopende volgorde op te sommen. Aangezien de kleinere AIC-waarde waarschijnlijk meer op het TRUTH-model lijkt, behoudt stap het (-disp) -model in stap één.

Het proces wordt opnieuw herhaald, maar met het behouden (-disp) model als uitgangspunt. Termen worden ofwel afgetrokken (“achterwaarts”) of afgetrokken / opgeteld (“beide”) om de modellen te kunnen vergelijken. Aangezien de laagste AIC-waarde in vergelijking nog steeds het (-disp) -model, processtop en resulterende modellen is.

Met betrekking tot uw vraag: “Wat probeert de functie te bereiken door de + disp opnieuw toe te voegen? in de stapsgewijze selectie? “, in dit geval doet het” niet echt iets, want het beste model van alle 15 modellen is model 11, dwz lm (mpg ~ wt + drat + qsec).

In gecompliceerde modellen met een groot aantal voorspellers die talloze stappen vereisen om op te lossen, is het toevoegen van een term die aanvankelijk was verwijderd van cruciaal belang om de meest uitgebreide manier te bieden om de termen te vergelijken.

Ik hoop dat deze hulp op de een of andere manier.

Opmerkingen

  • " Omdat de kleinere AIC-waarde waarschijnlijker lijkt op de TRUTH-model " is regelrecht onwaar. Stapsgewijze modelbouw bevat ongeveer evenveel kans om valse voorspellers te behouden als echte voorspellers te verwerpen … naast een groot aantal andere problemen: stats.stackexchange.com/questions/115843/…
  • Het is duidelijk ' een leugen. Dat ' s waarom modelselectie op basis van enkele criteria (zoals stapsgewijze regressie) een beetje naïef is.
  • @Alexis vinden je aanbevelingen in je antwoord in de link geweldig.

Antwoord

Hier een vereenvoudigd antwoord. Ten eerste proberen beide procedures de AIC van een bepaald model te verminderen, maar ze doen het op verschillende manieren. Het fundamentele verschil is dan dat u bij de achterwaartse selectieprocedure alleen variabelen uit het model bij elke stap kunt weggooien, terwijl u bij stapsgewijze selectie ook variabelen aan het model kunt toevoegen.

Over de uitvoer in de stapsgewijze selectie, in het algemeen toont de uitvoer u bestelde alternatieven om uw AIC te verminderen, dus de eerste rij bij elke stap is uw beste optie. Dan is er een +disp in de derde rij, omdat het toevoegen van die variabele aan uw model uw derde beste optie zou zijn om uw AIC te verminderen. Maar natuurlijk, aangezien uw beste alternatief <none> is, betekent dit dat u niets doet, de procedure stopt en u dezelfde resultaten geeft als bij achterwaartse selectie.

Geef een reactie

Het e-mailadres wordt niet gepubliceerd. Vereiste velden zijn gemarkeerd met *