Regresja krokowa w R - jak to działa?

15

Próbuję zrozumieć podstawową różnicę między regresją krokową i wsteczną w R za pomocą funkcji krokowej. Do regresji krokowej użyłem następującego polecenia

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

Mam poniższy wynik dla powyższego kodu.

Naprzód

Do wyboru zmiennej wstecznej użyłem następującego polecenia

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

I mam poniższe wyjście do tyłu

do tyłu

O ile rozumiem, gdy żaden parametr nie jest określony, wybór krokowy działa jako wstecz, chyba że parametr „górny” i „dolny” są określone w R. Jednak w wyniku wyboru krokowego istnieje znak +, który jest dodawany w drugi krok. Jaką funkcję próbuje osiągnąć dodając ponownie znak + disp w wyborze krokowym? Dlaczego R dodaje znak + disp w drugim etapie, podczas gdy wyniki są takie same (wartości AIC i wartości wyboru modelu), jak w przypadku wyboru wstecznego. W jaki sposób R działa dokładnie przy wyborze krokowym?

Naprawdę chcę zrozumieć, jak ta funkcja działa w R. Z góry dziękuję za pomoc!


źródło

Odpowiedzi:

17

Być może łatwiej byłoby zrozumieć, w jaki sposób dokonuje się regresji krokowej, patrząc na wszystkie 15 możliwych modeli lm.

Oto szybki sposób na wygenerowanie formuły dla wszystkich 15 kombinacji.

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>

Wartości AIC dla każdego modelu są wyodrębniane za pomocą:

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

Wróćmy do regresji krokowej. Wartość extractAIC dla lm (mpg ~ wt + drat + disp + qsec) wynosi 65,63 (odpowiednik modelu 15 z powyższej listy).

Jeśli model usunie disp (-disp), wówczas lm (mpg ~ wt + drat + qsec) wynosi 63.891 (lub model 11 na liście).

Jeśli model niczego nie usuwa (brak), AIC nadal wynosi 65,63

Jeśli model usunie qsec (-qsec), wówczas lm (mpg ~ wt + drat + disp) wynosi 65,908 (model 12).

itp.

Zasadniczo podsumowanie ujawnia wszystkie możliwe stopniowe usuwanie jednego terminu z pełnego modelu i porównuje wartość extractAIC, umieszczając je w kolejności rosnącej. Ponieważ mniejsza wartość AIC jest bardziej podobna do modelu PRAWDA, krok zachowaj model (-disp) w kroku pierwszym.

Proces powtarza się ponownie, ale z zachowanym (-disp) modelem jako punktem początkowym. Warunki są odejmowane („wstecz”) lub odejmowane / dodawane („oba”), aby umożliwić porównanie modeli. Ponieważ najniższą wartością AIC w porównaniu jest nadal model (-disp), podano zatrzymanie procesu i modele wynikowe.

W odniesieniu do zapytania: „Jaką funkcję próbuje osiągnąć dodając ponownie znak + disp w krokowym wyborze?”, W tym przypadku tak naprawdę nic nie robi, ponieważ najlepszym modelem we wszystkich 15 modelach jest model 11 , tj. lm (mpg ~ wt + drat + qsec).

Jednak w skomplikowanych modelach z dużą liczbą predyktorów, których rozwiązanie wymaga wielu kroków, dodanie terminu, który został początkowo usunięty, ma kluczowe znaczenie dla zapewnienia najbardziej wyczerpującego sposobu porównywania warunków.

Mam nadzieję, że ta pomoc w jakiś sposób.

Adam Quek
źródło
6
„Ponieważ mniejsza wartość AIC jest bardziej podobna do modelu PRAWDY”, jest to nieprawda. Stopniowo budowanie modelu ma równie prawdopodobne zachowanie fałszywych predyktorów, jak odrzucenie prawdziwych predyktorów ... wśród wielu innych problemów: stats.stackexchange.com/questions/115843/…
Alexis
2
Oczywiście to kłamstwo. Dlatego wybór modelu na podstawie pojedynczych kryteriów (takich jak regresja krokowa) jest nieco naiwny.
Adam Quek
@Alexis uwielbiam twoje rekomendacje w odpowiedzi w linku.
Adam Quek
3

Oto uproszczona odpowiedź. Po pierwsze, obie procedury starają się zmniejszyć AIC danego modelu, ale robią to na różne sposoby. Następnie podstawową różnicą jest to, że w procedurze selekcji wstecznej można odrzucić zmienne z modelu tylko na dowolnym etapie, podczas gdy w selekcji krokowej można również dodawać zmienne do modelu.

Jeśli chodzi o dane wyjściowe wybierane krokowo, generalnie dane wyjściowe pokazują zamówione alternatywy w celu zmniejszenia AIC, więc pierwszy wiersz na dowolnym etapie jest najlepszą opcją. Następnie jest +disptrzeci wiersz, ponieważ dodanie tej zmiennej do modelu byłoby trzecią najlepszą opcją zmniejszenia AIC. Ale oczywiście, ponieważ twoją najlepszą alternatywą jest to <none>, że nic nie robisz, procedura zatrzymuje się i daje ci takie same wyniki, jak przy selekcji wstecznej.

Ayar Paco
źródło