Regresja krokowa w R – Jak to działa?

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

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

Otrzymałem poniższe dane wyjściowe dla powyższego kodu.

forward

Do wstecznego wyboru zmiennych użyłem następującego polecenia

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

I otrzymałem poniższe dane wyjściowe dla wstecznego

wstecz

O ile zrozumiałem, gdy nie określono żadnego parametru, wybór krokowy działa jak wstecz, chyba że parametry „górny” i „dolny” są określone w R. Jednak w danych wyjściowych selekcji krokowej, w drugim kroku jest dodawany znak +. Jaka funkcja próbuje osiągnąć, dodając ponownie + disp w selekcji krokowej? Dlaczego R dodaje + disp w drugim kroku, podczas gdy wyniki są takie same (wartości AIC i wartości wyboru modelu) jak w przypadku wyboru wstecz. Jak dokładnie R działa w selekcji krokowej?

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

Odpowiedź

Być może łatwiej byłoby zrozumieć, jak przebiega regresja krokowa, patrząc na wszystkie 15 możliwych modeli lm.

Tutaj „szybki numerek do wygenerowania 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 na powyższej liście).

Jeśli model usuwa disp (-disp), to lm (mpg ~ wt + drat + qsec) wynosi 63,891 (lub model 11 na liście).

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

Jeśli model usuwa qsec (-qsec), to lm (mpg ~ wt + drat + disp) wynosi 65.908 (model 12).

itd.

Podsumowanie ujawnia wszystkie możliwe stopniowe usuwanie jednego członu z pełnego modelu i porównuje wartość extractAIC, wypisując je w porządku rosnącym. Ponieważ mniejsza wartość AIC z większym prawdopodobieństwem będzie przypominać model TRUTH, w kroku pierwszym zachowaj model (-disp).

Proces jest powtarzany ponownie, ale z zachowanym (-disp) modelem jako punktem wyjścia. Warunki są albo odejmowane („wstecz”), albo odejmowane / dodawane („oba”), aby umożliwić porównanie modeli. Ponieważ najniższą wartością AIC w porównaniu jest nadal model (-disp), podane są modele zatrzymania procesu i wynikowe.

W odniesieniu do zapytania: „Jaka jest funkcja, która próbuje osiągnąć, dodając ponownie + disp w selekcji krokowej? ”, w tym przypadku tak naprawdę nic nie robi, ponieważ najlepszym modelem spośród wszystkich 15 modeli jest model 11, tj. lm (mpg ~ wt + drat + qsec).

Jednak w skomplikowanych modelach z dużą liczbą predyktorów, które wymagają wielu kroków do rozwiązania, dodanie z tyłu usuniętego terminu ma kluczowe znaczenie dla zapewnienia najbardziej wyczerpującego sposobu porównania terminów.

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

Komentarze

  • " Ponieważ mniejsza wartość AIC z większym prawdopodobieństwem będzie przypominać Model PRAWDA " jest po prostu fałszywy. Stopniowe budowanie modelu jest mniej więcej tak samo prawdopodobne, że zachowa fałszywe predyktory, jak i odrzuci prawdziwe predyktory … wśród wielu innych problemów: stats.stackexchange.com/questions/115843/…
  • Oczywiście ' to kłamstwo. To ' dlaczego wybór modelu na podstawie pojedynczych kryteriów (takich jak regresja krokowa) jest odrobinę naiwny.
  • @Alexis uwielbia Twoje rekomendacje w odpowiedzi w linku.

Odpowiedź

Tutaj uproszczona odpowiedź. Po pierwsze, obie procedury próbują zredukować AIC danego modelu, ale robią to na różne sposoby. Wówczas podstawowa różnica polega na tym, że w procedurze selekcji wstecznej można tylko odrzucić zmienne z modelu na dowolnym etapie, natomiast w przypadku selekcji krokowej można również dodać zmienne do modelu.

O wyniku w trybie krokowym wybór, generalnie wynik pokazuje zamówione alternatywy w celu zmniejszenia AIC, więc pierwszy wiersz na dowolnym etapie jest najlepszą opcją. Następnie w trzecim wierszu znajduje się +disp, ponieważ dodanie tej zmiennej do modelu byłoby trzecią najlepszą opcją obniżenia AIC. Ale oczywiście, ponieważ najlepszą alternatywą jest <none>, oznacza to, że nic nie robisz, procedura zatrzymuje się i daje takie same wyniki, jak w przypadku selekcji wstecznej.

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *