Eine vollständige Anleitung zur schrittweisen Regression in R

Von Fabian
Kategorie: R
Tags: Regression
Lesezeit: 11 Minuten

Die Regression ist eine statistische Methode, mit der wir die Beziehung zwischen Prädiktorvariablen und einer Antwortvariablen verstehen können.

Die schrittweise Regression ist ein Verfahren, mit dem wir ein Regressionsmodell aus einer Reihe von Kandidaten-Prädiktorvariablen erstellen können, indem wir Prädiktoren schrittweise in das Modell eingeben und daraus entfernen, bis kein statistisch gültiger Grund mehr für die Eingabe oder Entfernung vorliegt.

Das Ziel der schrittweisen Regression besteht darin, ein Regressionsmodell zu erstellen, das alle Prädiktorvariablen enthält, die statistisch signifikant mit der Antwortvariablen zusammenhängen.

Grundlegendes zum schrittweisen Regressionsverfahren

Das allgemeine Verfahren für die schrittweise Regression ist wie folgt:

Schritt 1:

  • Beginnen Sie mit dem Intercept-Only-Modell. Beginnen Sie also ohne Prädiktoren im Modell.

Schritt 2:

  • Passen Sie jedes der Ein-Prädiktor-Modelle an und wählen Sie das Modell aus, das den niedrigsten AIC (Akaike-Informationskriterium) erzeugt. Dies ist ein Maß für die Qualität des Regressionsmodells im Vergleich zu allen anderen Modellen. Das heißt, passen Sie das Modell y ~ x 1 an, passen Sie dann das Modell y ~ x 2 an, passen Sie dann das Modell y ~ x 3 an, passen Sie dann das Modell y ~ x 4 an und fahren Sie fort, bis Sie alle Ein-Prädiktor-Modelle angepasst haben.
  • Wählen Sie das Modell aus, das den niedrigsten AIC-Wert erzeugt. Wenn kein Modell einen AIC-Wert erzeugt, der sich erheblich vom Intercept-Only-Modell unterscheidet, stoppen Sie.

Schritt 3:

  • Angenommen, y ~ x 1 hat das Modell mit dem niedrigsten AIC erzeugt. Passen Sie als Nächstes jedes der Zwei-Prädiktor-Modelle an, die x 1 als Prädiktor enthalten. Das heißt, passen Sie das Modell y ~ x 1 + x 2 an, passen Sie dann das Modell y ~ x 1 + x 3 an und fahren Sie fort, bis Sie alle Modelle mit zwei Prädiktoren angepasst haben.
  • Wählen Sie das Modell aus, das den niedrigsten AIC-Wert erzeugt. Wenn kein Modell einen AIC-Wert erzeugt, der sich erheblich vom Ein-Prädiktor-Modell unterscheidet, stoppen Sie. Das Ein-Prädiktor-Modell ist Ihr endgültiges Modell.
  • Angenommen, x 2 stellte sich als der beste zweite hinzuzufügende Prädiktor heraus und wird somit in das Modell eingegeben. Überprüfen Sie nun, ob Sie x 2 eingeben in das Modell irgendwie beeinflusst die Bedeutung des x 1 Prädiktors. Wenn x 1 ist kein signifikanter Prädiktor mehr, entferne x 1 vom Modell.

Schritt 4:

  • Angenommen, y ~ x 1 + x 2 hat das Modell mit dem niedrigsten AIC erzeugt. Passen Sie als Nächstes jedes der drei Prädiktormodelle an, die x 1 und x 2 als Prädiktoren enthalten. Passen Sie also das Modell y ~ x 1 + x 2 + x 3 an, passen Sie dann das Modell y ~ x 1 + x 2 + x 4 an und fahren Sie fort, bis Sie alle Modelle mit drei Prädiktoren angepasst haben.
  • Wählen Sie das Modell aus, das den niedrigsten AIC-Wert erzeugt. Wenn kein Modell einen AIC-Wert erzeugt, der sich erheblich vom Zwei-Prädiktor-Modell unterscheidet, stoppen Sie. Das Zwei-Prädiktor-Modell ist Ihr endgültiges Modell.
  • Angenommen, x 3 stellte sich als der beste zweite hinzuzufügende Prädiktor heraus und wird somit in das Modell eingegeben. Überprüfen Sie nun, ob Sie x 3 eingeben in das Modell irgendwie beeinflusst die Bedeutung des x 1 Prädiktors und des x 2 Prädiktors. Wenn einer der Prädiktoren ist kein signifikanter Prädiktor mehr, entfernen Sie diesen Prädiktor vom Modell.

Setzen Sie diesen Vorgang einfach fort, bis das Hinzufügen zusätzlicher Prädiktoren den AIC nicht mehr signifikant reduziert. Wenn kein zusätzlicher Prädiktor den AIC signifikant reduziert, sind Sie bei Ihrem endgültigen Modell angekommen.

Dieser Vorgang wäre manuell ziemlich mühsam, aber glücklicherweise können die meisten statistischen Softwareprogramme diesen Vorgang automatisch ausführen.

Anpassen einer schrittweisen Regression in R

Nun werden wir veranschaulichen, wie eine schrittweise Regression in R mithilfe des integrierten Datensatzes mtcars durchgeführt wird:

#Erste sechs Reihen von mtcars anzeigen
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

Angenommen, wir möchten ein Regressionsmodell anpassen, das mpg (Meilen pro Gallone) als Antwortvariable und alle anderen 10 Variablen im Datensatz als potenzielle Prädiktoren verwendet.

Zunächst definieren wir unser Intercept-Only-Modell.

Anschließend definieren wir einen Bereich, um R mitzuteilen, dass wir versuchen möchten, alle möglichen Prädiktoren schrittweise in das Modell aufzunehmen.

Zuletzt werden wir die step()–Funktion verwenden, um das schrittweise Modell anzupassen, das die folgende Syntax verwendet:

step(Intercept-Only-Modell, Richtung, Umfang)

  • Intercept-Only-Modell: Die Formel für das Intercept-Only-Modell
  • Richtung: Der Modus der schrittweisen Suche kann entweder „beide“, „rückwärts“ oder „vorwärts“ sein. Wir verwenden „beide“, da wir versuchen möchten, bei jedem Schritt Prädiktoren einzugeben und zu entfernen
  • Umfang: Eine Formel, die angibt, welche Prädiktoren wir versuchen möchten, in das Modell einzutreten

Der folgende Code zeigt, wie diese schrittweise Regression durchgeführt wird:

#Intercept-only-Modell definieren
intercept_only_model <- lm(mpg ~ 1, data = mtcars)
#Gesamtmodell definieren
total_model <- lm(mpg ~ ., data = mtcars)
#Schrittweise Regression durchführen
step(intercept_only_model, direction = 'both', scope = formula(total_model))

#Start:  AIC=115.94
#mpg ~ 1
#
#       Df Sum of Sq     RSS     AIC
#+ wt    1    847.73  278.32  73.217
#+ cyl   1    817.71  308.33  76.494
#+ disp  1    808.89  317.16  77.397
#+ hp    1    678.37  447.67  88.427
#+ drat  1    522.48  603.57  97.988
#+ vs    1    496.53  629.52  99.335
#+ am    1    405.15  720.90 103.672
#+ carb  1    341.78  784.27 106.369
#+ gear  1    259.75  866.30 109.552
#+ qsec  1    197.39  928.66 111.776
#              1126.05 115.943
#
#Step:  AIC=73.22
#mpg ~ wt
#
#       Df Sum of Sq     RSS     AIC
#+ cyl   1     87.15  191.17  63.198
#+ hp    1     83.27  195.05  63.840
#+ qsec  1     82.86  195.46  63.908
#+ vs    1     54.23  224.09  68.283
#+ carb  1     44.60  233.72  69.628
#+ disp  1     31.64  246.68  71.356
#               278.32  73.217
#+ drat  1      9.08  269.24  74.156
#+ gear  1      1.14  277.19  75.086
#+ am    1      0.00  278.32  75.217
#- wt    1    847.73 1126.05 115.943
#
#Step:  AIC=63.2
#mpg ~ wt + cyl
#
#       Df Sum of Sq    RSS    AIC
#+ hp    1    14.551 176.62 62.665
#+ carb  1    13.772 177.40 62.805
#              191.17 63.198
#+ qsec  1    10.567 180.60 63.378
#+ gear  1     3.028 188.14 64.687
#+ disp  1     2.680 188.49 64.746
#+ vs    1     0.706 190.47 65.080
#+ am    1     0.125 191.05 65.177
#+ drat  1     0.001 191.17 65.198
#- cyl   1    87.150 278.32 73.217
#- wt    1   117.162 308.33 76.494
#
#Step:  AIC=62.66
#mpg ~ wt + cyl + hp
#
#       Df Sum of Sq    RSS    AIC
#              176.62 62.665
#- hp    1    14.551 191.17 63.198
#+ am    1     6.623 170.00 63.442
#+ disp  1     6.176 170.44 63.526
#- cyl   1    18.427 195.05 63.840
#+ carb  1     2.519 174.10 64.205
#+ drat  1     2.245 174.38 64.255
#+ qsec  1     1.401 175.22 64.410
#+ gear  1     0.856 175.76 64.509
#+ vs    1     0.060 176.56 64.654
#- wt    1   115.354 291.98 76.750
#
#Call:
#lm(formula = mpg ~ wt + cyl + hp, data = mtcars)
#
#Coefficients:
#(Intercept)           wt          cyl           hp  
#   38.75179     -3.16697     -0.94162     -0.01804  

Unser endgültiges Modell ist mpg ~ 38,75 – 3,17 * wt – 0,94 * cyl – 0,02 * hyp.

Von den möglichen zehn wurden insgesamt drei Prädiktoren verwendet.

Interpretation einer schrittweisen Regression in R

Lassen Sie uns genau durchgehen, was gerade passiert ist, als R diese schrittweise Regression durchgeführt hat.

Zunächst beginnen wir mit dem Intercept-Only-Modell. R sagt uns, dass das Modell zu diesem Zeitpunkt mpg ~ 1 ist, was einen AIC von 115,94 hat. Dann passt R zu jedem möglichen Ein-Prädiktor-Modell und zeigt den entsprechenden AIC. Wir können sehen, dass das Hinzufügen des Prädiktors wt das Modell mit dem niedrigsten AIC ergibt:

#schrittweise Regression durchführen
step(intercept_only_model, direction = 'both', scope = formula(total_model))

#Start:  AIC=115.94
#mpg ~ 1
#
#       Df Sum of Sq     RSS     AIC
#+ wt    1    847.73  278.32  73.217
#+ cyl   1    817.71  308.33  76.494
#+ disp  1    808.89  317.16  77.397
#+ hp    1    678.37  447.67  88.427
#+ drat  1    522.48  603.57  97.988
#+ vs    1    496.53  629.52  99.335
#+ am    1    405.15  720.90 103.672
#+ carb  1    341.78  784.27 106.369
#+ gear  1    259.75  866.30 109.552
#+ qsec  1    197.39  928.66 111.776
#              1126.05 115.943

R bestimmt, dass das Modell mpg ~ wt eine statistisch signifikante Verringerung des AIC im Vergleich zum Intercept-Only-Modell bietet, sodass wt in das Modell eingegeben wird. Somit ist das Modell zu diesem Zeitpunkt mpg ~ wt, das einen AIC von 73,22 hat.

Dann passt R zu jedem möglichen Zwei-Prädiktor-Modell, das wt als Prädiktor enthält, und zeigt den entsprechenden AIC. Wir können sehen, dass das Hinzufügen des Prädiktor cyl das Modell mit dem niedrigsten AIC bei 63,198 ergibt. Im Vergleich dazu würde das Hinzufügen keiner zusätzlichen Variablen zum Modell ( ) den AIC einfach bei 73,22 halten. Daher ist es sinnvoll, cyl als Prädiktor in das Modell aufzunehmen:

#Step:  AIC=73.22
#mpg ~ wt
#
#       Df Sum of Sq     RSS     AIC
#+ cyl   1     87.15  191.17  63.198
#+ hp    1     83.27  195.05  63.840
#+ qsec  1     82.86  195.46  63.908
#+ vs    1     54.23  224.09  68.283
#+ carb  1     44.60  233.72  69.628
#+ disp  1     31.64  246.68  71.356
#               278.32  73.217
#+ drat  1      9.08  269.24  74.156
#+ gear  1      1.14  277.19  75.086
#+ am    1      0.00  278.32  75.217
#- wt    1    847.73 1126.05 115.943

Das Modell zu diesem Zeitpunkt ist mpg ~ wt + cyl mit einem AIC von 63,198. Als nächstes passt R zu jedem möglichen Drei-Prädiktor-Modell, das wt und cyl als Prädiktoren enthält, und zeigt den entsprechenden AIC. Wir können sehen, dass das Hinzufügen des Prädiktors hp das Modell mit dem niedrigsten AIC bei 62,665 ergibt. Im Vergleich dazu würde das Hinzufügen keiner zusätzlichen Variablen zum Modell ( ) den AIC einfach bei 63,198 halten. Daher ist es sinnvoll, HP als Prädiktor in das Modell aufzunehmen:

#mpg ~ wt + cyl
#
#       Df Sum of Sq    RSS    AIC
#+ hp    1    14.551 176.62 62.665
#+ carb  1    13.772 177.40 62.805
#              191.17 63.198
#+ qsec  1    10.567 180.60 63.378
#+ gear  1     3.028 188.14 64.687
#+ disp  1     2.680 188.49 64.746
#+ vs    1     0.706 190.47 65.080
#+ am    1     0.125 191.05 65.177
#+ drat  1     0.001 191.17 65.198
#- cyl   1    87.150 278.32 73.217
#- wt    1   117.162 308.33 76.494

Das Modell zu diesem Zeitpunkt ist mpg ~ wt + cyl + hp mit einem AIC von 62,665*. Als nächstes passt R zu jedem möglichen Vier-Prädiktor-Modell, das wt, cyl und hp als Prädiktoren enthält, und zeigt den entsprechenden AIC. Wir können sehen, dass das Hinzufügen keiner zusätzlichen Variablen zum Modell ( ) den niedrigsten AIC erzeugt. Damit sind wir bei unserem endgültigen Modell angekommen, das sich als mpg ~ wt + cyl + hp herausstellt . R sagt uns, dass das endgültig angepasste Modell mpg ~ 38,75 – 3,17 * wt – 0,94 * cyl – 0,02 * hyp ist***.

#Step:  AIC=62.66
#mpg ~ wt + cyl + hp
#
#       Df Sum of Sq    RSS    AIC
#              176.62 62.665
#- hp    1    14.551 191.17 63.198
#+ am    1     6.623 170.00 63.442
#+ disp  1     6.176 170.44 63.526
#- cyl   1    18.427 195.05 63.840
#+ carb  1     2.519 174.10 64.205
#+ drat  1     2.245 174.38 64.255
#+ qsec  1     1.401 175.22 64.410
#+ gear  1     0.856 175.76 64.509
#+ vs    1     0.060 176.56 64.654
#- wt    1   115.354 291.98 76.750
#
#Call:
#lm(formula = mpg ~ wt + cyl + hp, data = mtcars)
#
#Coefficients:
#(Intercept)           wt          cyl           hp  
#   38.75179     -3.16697     -0.94162     -0.01804

Vorsichtsmaßnahmen für die schrittweise Regression

Bei der schrittweisen Regression sind verschiedene Dinge zu beachten, darunter:

  • Die schrittweise Regression führt zu einem einzigen endgültigen Modell, aber in der Realität gibt es oft mehrere gleich gute Modelle, die verwendet werden könnten.
  • Es ist nicht garantiert, dass das endgültige Modell in einer bestimmten Weise optimal ist.
  • Es ist möglich, dass nicht alle wichtigen Prädiktoren in das Modell aufgenommen wurden. Es ist auch möglich, dass nicht alle unwichtigen Prädiktoren ausgeschlossen wurden.
  • Die Reihenfolge, in der die Prädiktoren in das Modell eingegeben werden, sollte nicht überinterpretiert werden.

Weiterführende Literatur:
Ein Leitfaden zur Multikollinearität in der Regression

Statistik: Der Weg zur Datenanalyse

* Amazon Affiliate Link


Das könnte Sie auch interessieren: