Een complete gids voor stapsgewijze regressie in r


Stapsgewijze regressie is een procedure die we kunnen gebruiken om een regressiemodel op te bouwen uit een reeks voorspellende variabelen door voorspellers stapsgewijs in het model in te voeren en te verwijderen totdat er geen statistisch geldige reden meer is om voorspellers in het model in te voeren of te verwijderen. verwijder meer.

Het doel van stapsgewijze regressie is het creëren van een regressiemodel dat alle voorspellende variabelen omvat die statistisch significant gerelateerd zijn aan de responsvariabele .

In deze zelfstudie wordt uitgelegd hoe u de volgende stapsgewijze regressieprocedures in R uitvoert:

  • Stap voor stap vooruit selecteren
  • Stap-voor-stap achterwaartse selectie
  • Stap voor stap selectie in beide richtingen

Voor elk voorbeeld gebruiken we de ingebouwde mtcars -dataset:

 #view first six rows of mtcars
head(mtcars)

                   mpg cyl disp hp drat wt qsec vs am gear carb
Mazda RX4 21.0 6 160 110 3.90 2.620 16.46 0 1 4 4
Mazda RX4 Wag 21.0 6 160 110 3.90 2.875 17.02 0 1 4 4
Datsun 710 22.8 4 108 93 3.85 2.320 18.61 1 1 4 1
Hornet 4 Drive 21.4 6 258 110 3.08 3.215 19.44 1 0 3 1
Hornet Sportabout 18.7 8 360 175 3.15 3.440 17.02 0 0 3 2
Valiant 18.1 6 225 105 2.76 3,460 20.22 1 0 3 1

We passen een meervoudig lineair regressiemodel toe met mpg (mijl per gallon) als responsvariabele en de andere tien variabelen in de dataset als potentiële voorspellende variabelen.

Voor elk voorbeeld zullen we de ingebouwde step()- functie van het stats-pakket gebruiken om een stapsgewijze selectie uit te voeren, waarbij de volgende syntaxis wordt gebruikt:

fase (alleen interceptiemodel, richting, bereik)

Goud:

  • Alleen origineel model : alleen de formule van het originele model
  • Richting: De stapzoekmodus kan “beide”, “achteruit” of “vooruit” zijn.
  • reikwijdte: een formule die de voorspellers specificeert die we in het model willen proberen in te voeren

Voorbeeld 1: Stap-voor-stap voorwaartse selectie

De volgende code laat stap voor stap zien hoe u een selectie uitvoert:

 #define intercept-only model
intercept_only <- lm(mpg ~ 1, data=mtcars)

#define model with all predictors
all <- lm(mpg ~ ., data=mtcars)

#perform forward stepwise regression
forward <- step(intercept_only, direction=' forward ', scope= formula (all), trace=0)

#view results of forward stepwise regression
forward$anova

   Step Df Deviance Resid. Df Resid. Dev AIC
1 NA NA 31 1126.0472 115.94345
2 + wt -1 847.72525 30 278.3219 73.21736
3 + cyl -1 87.14997 29 191.1720 63.19800
4 + hp -1 14.55145 28 176.6205 62.66456

#view final model
forward$coefficients

(Intercept) wt cyl hp 
 38.7517874 -3.1669731 -0.9416168 -0.0180381 

Opmerking: het argument trace=0 vertelt R dat hij niet de volledige resultaten van de stapsgewijze selectie moet weergeven. Dit kan veel ruimte in beslag nemen als er een groot aantal voorspellende variabelen is.

Zo interpreteert u de resultaten:

  • Ten eerste passen we het alleen-intercept-model toe. Dit model had een AIC van 115,94345 .
  • Vervolgens passen we alle mogelijke modellen aan een voorspeller aan. Het model dat de laagste AIC produceerde en ook een statistisch significante reductie in AIC had vergeleken met het model dat alleen op de uitgangssituatie was gebaseerd, gebruikte de wt- voorspeller. Dit model had een AIC van 73,21736 .
  • Vervolgens passen we alle mogelijke modellen aan met twee voorspellers. Het model dat de laagste AIC produceerde en ook een statistisch significante vermindering van de AIC had vergeleken met het model met één voorspeller, voegde de cil- voorspeller toe. Dit model had een AIC van 63,19800 .
  • Vervolgens passen we alle mogelijke modellen aan drie voorspellers aan. Het model dat de laagste AIC produceerde en ook een statistisch significante reductie in AIC had vergeleken met het model met twee voorspellers, voegde de pk- voorspeller toe. Dit model had een AIC van 62,66456 .
  • Vervolgens passen we alle mogelijke modellen aan vier voorspellers aan. Het bleek dat geen van deze modellen een significante vermindering van de AIC opleverde, dus stopten we de procedure.

Het uiteindelijke model blijkt te zijn:

mpg ~ 38,75 – 3,17*gewicht – 0,94*cil – 0,02*hyp

Voorbeeld 2: Stapsgewijze terugselectie

De volgende code laat zien hoe u achteruit kunt stappen:

 #define intercept-only model
intercept_only <- lm(mpg ~ 1, data=mtcars)

#define model with all predictors
all <- lm(mpg ~ ., data=mtcars)

#perform backward stepwise regression
backward <- step(all, direction=' backward ', scope= formula (all), trace=0)

#view results of backward stepwise regression
backward$anova

    Step Df Deviance Resid. Df Resid. Dev AIC
1 NA NA 21 147.4944 70.89774
2 - cyl 1 0.07987121 22 147.5743 68.91507
3 - vs 1 0.26852280 23 147.8428 66.97324
4 - carb 1 0.68546077 24 148.5283 65.12126
5 - gear 1 1.56497053 25 150.0933 63.45667
6 - drat 1 3.34455117 26 153.4378 62.16190
7 - available 1 6.62865369 27 160.0665 61.51530
8 - hp 1 9.21946935 28 169.2859 61.30730

#view final model
backward$coefficients

(Intercept) wt qsec am 
   9.617781 -3.916504 1.225886 2.935837

Zo interpreteert u de resultaten:

  • Eerst passen we een model aan met behulp van alle p- voorspellers. Definieer dit als M p .
  • Vervolgens passen we voor k = p, p-1,…1 alle k-modellen die op één na alle voorspellers in M k bevatten, voor een totaal van k-1 voorspellervariabelen. Kies vervolgens de beste uit deze k-modellen en noem deze M k-1 .
  • Ten slotte kiezen we een beste model uit M 0 … M p met behulp van AIC.

Het uiteindelijke model blijkt te zijn:

mpg ~ 9,62 – 3,92*gewicht + 1,23*qsec + 2,94*am

Voorbeeld 3: Stap voor stap selectie in beide richtingen

De volgende code laat zien hoe u een stapsgewijze selectie in beide richtingen uitvoert:

 #define intercept-only model
intercept_only <- lm(mpg ~ 1, data=mtcars)

#define model with all predictors
all <- lm(mpg ~ ., data=mtcars)

#perform backward stepwise regression
both <- step(intercept_only, direction=' both ', scope= formula (all), trace=0)

#view results of backward stepwise regression
both$anova

   Step Df Deviance Resid. Df Resid. Dev AIC
1 NA NA 31 1126.0472 115.94345
2 + wt -1 847.72525 30 278.3219 73.21736
3 + cyl -1 87.14997 29 191.1720 63.19800
4 + hp -1 14.55145 28 176.6205 62.66456

#view final model
both$coefficients

(Intercept) wt cyl hp 
 38.7517874 -3.1669731 -0.9416168 -0.0180381 

Zo interpreteert u de resultaten:

  • Ten eerste passen we het alleen-intercept-model toe.
  • Vervolgens hebben we achtereenvolgens voorspellers aan het model toegevoegd, net zoals we dat bij de stapsgewijze selectie hebben gedaan. Nadat we elke voorspeller hadden toegevoegd, hebben we echter ook alle voorspellers verwijderd die niet langer een verbetering van de modelfit opleverden.
  • We herhaalden dit proces totdat we een definitief model hadden.

Het uiteindelijke model blijkt te zijn:

mpg ~ 9,62 – 3,92*gewicht + 1,23*qsec + 2,94*am

Merk op dat voorwaartse stapselectie en stapselectie in beide richtingen hetzelfde uiteindelijke patroon produceerden, terwijl achterwaartse stapselectie een ander patroon produceerde.

Aanvullende bronnen

Hoe u de betekenis van een regressiehelling kunt testen
Een regressietabel lezen en interpreteren
Een gids voor multicollineariteit bij regressie

Einen Kommentar hinzufügen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert