Schrittweise Regression in R - Wie funktioniert es?

15

Ich versuche, den grundsätzlichen Unterschied zwischen schrittweiser und rückwärtiger Regression in R mit der Sprungfunktion zu verstehen. Für die schrittweise Regression habe ich den folgenden Befehl verwendet

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

Ich habe die folgende Ausgabe für den obigen Code.

nach vorne

Für die Auswahl der Rückwärtsvariablen habe ich den folgenden Befehl verwendet

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

Und ich habe die folgende Ausgabe für Rückwärts

rückwärts

Soweit ich verstanden habe, verhält sich die schrittweise Auswahl rückwärts, wenn kein Parameter angegeben ist, es sei denn, der Parameter "Upper" und "Lower" sind in R angegeben. Bei der Ausgabe der schrittweisen Auswahl wird jedoch ein + disp hinzugefügt der 2. Schritt. Was versucht die Funktion zu erreichen, indem Sie das + disp in der schrittweisen Auswahl erneut hinzufügen? Warum fügt R im 2. Schritt das + disp hinzu, während die Ergebnisse mit denen der Rückwärtsauswahl übereinstimmen (AIC-Werte und Modellauswahlwerte)? Wie funktioniert R genau in der schrittweisen Auswahl?

Ich möchte wirklich verstehen, wie diese Funktion in R funktioniert. Vielen Dank im Voraus für die Hilfe!


quelle

Antworten:

16

Vielleicht ist es einfacher zu verstehen, wie schrittweise Regressionen durchgeführt werden, wenn alle 15 möglichen lm-Modelle betrachtet werden.

Hier ist eine Kurzanleitung, um eine Formel für alle 15 Kombinationen zu erstellen.

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-Werte für jedes Modell werden extrahiert mit:

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

Kehren wir zu Ihrer schrittweisen Regression zurück. Der Wert für extractAIC für lm (mpg ~ wt + drat + disp + qsec) beträgt 65,63 (entspricht Modell 15 in der obigen Liste).

Wenn das Modell disp (-disp) entfernt, ist lm (mpg ~ wt + drat + qsec) 63.891 (oder Modell 11 in der Liste).

Wenn das Modell nichts entfernt (keine), ist der AIC immer noch 65,63

Wenn das Modell qsec (-qsec) entfernt, ist lm (mpg ~ wt + drat + disp) 65.908 (Modell 12).

etc.

Grundsätzlich wird in der Zusammenfassung die schrittweise Entfernung eines Begriffs aus Ihrem vollständigen Modell aufgedeckt und der Wert von extractAIC durch Auflisten in aufsteigender Reihenfolge verglichen. Da der kleinere AIC-Wert eher dem TRUTH-Modell ähnelt, behalten Sie das (-disp) -Modell in Schritt 1 bei.

Der Vorgang wird erneut wiederholt, jedoch mit dem beibehaltenen (-disp) Modell als Ausgangspunkt. Begriffe werden entweder subtrahiert ("rückwärts") oder subtrahiert / addiert ("beide"), um den Vergleich der Modelle zu ermöglichen. Da der niedrigste AIC-Wert im Vergleich immer noch das (-disp) -Modell ist, werden Prozessstopp- und resultierende Modelle angegeben.

In Bezug auf Ihre Frage: "Was ist die Funktion, die Sie erreichen möchten, indem Sie das + disp erneut in die schrittweise Auswahl einfügen?" dh lm (mpg ~ wt + drat + qsec).

In komplizierten Modellen mit einer großen Anzahl von Prädiktoren, für deren Auflösung zahlreiche Schritte erforderlich sind, ist jedoch das Zurückaddieren eines Begriffs, der ursprünglich entfernt wurde, entscheidend, um die umfassendste Methode zum Vergleichen der Begriffe bereitzustellen.

Hoffe diese Hilfe irgendwie.

Adam Quek
quelle
6
"Da es wahrscheinlicher ist, dass der kleinere AIC-Wert dem WAHRHEITSMODELL ähnelt" ist dies einfach falsch. Bei der schrittweisen Erstellung von Modellen werden mit etwa gleicher Wahrscheinlichkeit falsche Prädiktoren beibehalten wie echte Prädiktoren zurückgewiesen.
Alexis
2
Offensichtlich ist es eine Lüge. Das ist der Grund, warum die Modellauswahl anhand einzelner Kriterien (wie die schrittweise Regression) ein bisschen naiv ist.
Adam Quek
@Alexis lieben deine Empfehlungen in deiner Antwort im Link.
Adam Quek
3

Hier eine vereinfachte Antwort. Erstens versuchen beide Verfahren, den AIC eines bestimmten Modells zu reduzieren, aber sie tun dies auf unterschiedliche Weise. Der grundlegende Unterschied besteht dann darin, dass Sie bei der Rückwärtsauswahl nur Variablen aus dem Modell verwerfen können, während Sie bei der schrittweisen Auswahl dem Modell auch Variablen hinzufügen können.

In Bezug auf die Ausgabe in der schrittweisen Auswahl zeigt die Ausgabe im Allgemeinen die von Ihnen bestellten Alternativen zur Reduzierung Ihres AIC an. Daher ist die erste Zeile in jedem Schritt die beste Option. Dann gibt es eine+disp in der dritten Zeile eine, da das Hinzufügen dieser Variablen zu Ihrem Modell die drittbeste Option wäre, um Ihren AIC zu verringern. Da Ihre beste Alternative jedoch darin besteht <none>, nichts zu tun, wird der Vorgang abgebrochen und Sie erhalten dieselben Ergebnisse wie bei der Rückwärtsauswahl.

Ayar Paco
quelle