Eine vollständige anleitung zur schrittweisen regression in r
Schrittweise Regression ist ein Verfahren, mit dem wir ein Regressionsmodell aus einer Reihe von Prädiktorvariablen erstellen können, indem wir Prädiktoren Schritt für Schritt in das Modell eingeben und entfernen, bis es keinen statistisch gültigen Grund mehr für die Eingabe von oder gibt mehr löschen.
Das Ziel der schrittweisen Regression besteht darin, ein Regressionsmodell zu erstellen, das alle Prädiktorvariablen umfasst, die statistisch signifikant mit der Antwortvariablen zusammenhängen.
In diesem Tutorial wird erklärt, wie Sie die folgenden schrittweisen Regressionsverfahren in R durchführen:
- Schritt für Schritt vorwärts Auswahl
- Schrittweise Rückwärtsauswahl
- Schritt-für-Schritt-Auswahl in beide Richtungen
Für jedes Beispiel verwenden wir den integrierten mtcars -Datensatz:
#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
Wir werden ein multiples lineares Regressionsmodell anpassen, das mpg (Meilen pro Gallone) als Antwortvariable und die anderen 10 Variablen im Datensatz als potenzielle Prädiktorvariablen verwendet.
Für jedes Beispiel verwenden wir die integrierte Funktion „step()“ des Statistikpakets, um eine schrittweise Auswahl durchzuführen, die die folgende Syntax verwendet:
Stufe (nur Abfangmodell, Richtung, Reichweite)
Gold:
- Nur Originalmodell : Nur die Formel des Originalmodells
- Richtung: Der Schrittsuchmodus kann „beide“, „rückwärts“ oder „vorwärts“ sein.
- Geltungsbereich: eine Formel, die die Prädiktoren angibt, die wir in das Modell eingeben möchten
Beispiel 1: Schrittweise Vorwärtsauswahl
Der folgende Code zeigt, wie Sie eine Auswahl Schritt für Schritt durchführen:
#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
Hinweis: Das Argument „trace=0“ weist R an, nicht die vollständigen Ergebnisse der schrittweisen Auswahl anzuzeigen. Dies kann viel Platz beanspruchen, wenn eine große Anzahl von Prädiktorvariablen vorhanden ist.
So interpretieren Sie die Ergebnisse:
- Zuerst passen wir das Intercept-Only-Modell an. Dieses Modell hatte einen AIC von 115,94345 .
- Dann passen wir alle möglichen Modelle an einen Prädiktor an. Das Modell, das den niedrigsten AIC ergab und im Vergleich zum reinen Basismodell auch eine statistisch signifikante Reduzierung des AIC aufwies, verwendete den Gewichtsprädiktor . Dieses Modell hatte einen AIC von 73,21736 .
- Als nächstes passen wir alle möglichen Modelle mit zwei Prädiktoren an. Das Modell, das den niedrigsten AIC erzeugte und im Vergleich zum Einzelprädiktormodell auch eine statistisch signifikante Reduzierung des AIC aufwies, fügte den Zyl- Prädiktor hinzu. Dieses Modell hatte einen AIC von 63,19800 .
- Als nächstes passen wir alle möglichen Modelle an drei Prädiktoren an. Das Modell, das den niedrigsten AIC erzeugte und im Vergleich zum Modell mit zwei Prädiktoren auch eine statistisch signifikante Reduzierung des AIC aufwies, fügte den HP- Prädiktor hinzu. Dieses Modell hatte einen AIC von 62,66456 .
- Als nächstes passen wir alle möglichen Modelle an vier Prädiktoren an. Es stellte sich heraus, dass keines dieser Modelle eine signifikante Reduzierung des AIC bewirkte, weshalb wir das Verfahren abbrachen.
Das endgültige Modell sieht wie folgt aus:
mpg ~ 38,75 – 3,17*Gewicht – 0,94*Zyl – 0,02*Hyp
Beispiel 2: Schrittweise Rückwärtsauswahl
Der folgende Code zeigt, wie man einen Schritt zurück macht:
#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
So interpretieren Sie die Ergebnisse:
- Zuerst passen wir ein Modell unter Verwendung aller p- Prädiktoren an. Definieren Sie dies als M p .
- Dann passen wir für k = p, p-1,…1 alle k Modelle an, die alle außer einem Prädiktor in M k enthalten, für insgesamt k-1 Prädiktorvariablen. Wählen Sie dann das beste aus diesen k Modellen aus und nennen Sie es M k-1 .
- Schließlich wählen wir mithilfe von AIC ein bestes Modell aus M 0 … M p aus.
Das endgültige Modell sieht wie folgt aus:
mpg ~ 9,62 – 3,92*Gewicht + 1,23*qsec + 2,94*am
Beispiel 3: Schrittweise Auswahl in beide Richtungen
Der folgende Code zeigt, wie Sie eine schrittweise Auswahl in beide Richtungen durchführen:
#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
So interpretieren Sie die Ergebnisse:
- Zuerst passen wir das Intercept-Only-Modell an.
- Als nächstes fügten wir dem Modell nacheinander Prädiktoren hinzu, genau wie bei der schrittweisen Auswahl. Allerdings haben wir nach dem Hinzufügen jedes Prädiktors auch alle Prädiktoren entfernt, die keine Verbesserung der Modellanpassung mehr bewirkten.
- Wir wiederholten diesen Vorgang, bis wir ein endgültiges Modell hatten.
Das endgültige Modell sieht wie folgt aus:
mpg ~ 9,62 – 3,92*Gewicht + 1,23*qsec + 2,94*am
Beachten Sie, dass die Vorwärtsschrittauswahl und die Schrittauswahl in beide Richtungen das gleiche endgültige Muster erzeugten, während die Rückwärtsschrittauswahl ein anderes Muster erzeugte.
Zusätzliche Ressourcen
So testen Sie die Signifikanz einer Regressionssteigung
So lesen und interpretieren Sie eine Regressionstabelle
Ein Leitfaden zur Multikollinearität in der Regression