Kompletny przewodnik po regresji krok po kroku w r


Regresja krokowa to procedura, którą możemy zastosować do zbudowania modelu regresji na podstawie zbioru zmiennych predykcyjnych poprzez stopniowe wprowadzanie i usuwanie predyktorów w modelu, aż do momentu, gdy nie będzie już statystycznie uzasadnionego powodu do wprowadzania lub usuń więcej.

Celem regresji krokowej jest utworzenie modelu regresji obejmującego wszystkie zmienne predykcyjne, które są statystycznie istotnie powiązane ze zmienną odpowiedzi .

W tym samouczku wyjaśniono, jak wykonać następujące procedury regresji krok po kroku w języku R:

  • Wybór krok po kroku
  • Wybór wsteczny krok po kroku
  • Wybór krok po kroku w obu kierunkach

W każdym przykładzie użyjemy wbudowanego zbioru danych mtcars :

 #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

Dopasujemy model regresji liniowej, wykorzystując mpg (mile na galon) jako zmienną odpowiedzi i pozostałych 10 zmiennych w zestawie danych jako potencjalne zmienne predykcyjne.

W każdym przykładzie użyjemy wbudowanej funkcji step() pakietu stats, aby przeprowadzić selekcję krokową, korzystając z następującej składni:

scena (tylko model przechwytywania, kierunek, zasięg)

Złoto:

  • tylko oryginalny model : tylko formuła oryginalnego modelu
  • Kierunek: Tryb wyszukiwania krokowego może być „oba”, „do tyłu” lub „do przodu”.
  • zakres: formuła określająca predyktory, które chcielibyśmy wprowadzić do modelu

Przykład 1: Wybór krok po kroku do przodu

Poniższy kod pokazuje, jak krok po kroku dokonać wyboru:

 #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 

Uwaga: Argument trace=0 mówi R, aby nie wyświetlał pełnych wyników wyboru krok po kroku. Może to zająć dużo miejsca, jeśli istnieje duża liczba zmiennych predykcyjnych.

Oto jak interpretować wyniki:

  • Najpierw dopasowujemy model tylko przechwytujący. Model ten miał AIC wynoszący 115,94345 .
  • Następnie dopasowujemy wszystkie możliwe modele do predyktora. W modelu, który generował najniższe AIC i który również charakteryzował się statystycznie istotną redukcją AIC w porównaniu z modelem bazowym, zastosowano predyktor wt . Model ten miał AIC 73,21736 .
  • Następnie dopasowujemy wszystkie możliwe modele za pomocą dwóch predyktorów. Model, który wygenerował najniższą wartość AIC, a także charakteryzował się statystycznie istotną redukcją AIC w porównaniu z modelem z pojedynczym predyktorem, dodał predyktor cyl . Model ten miał AIC 63,19800 .
  • Następnie dopasowujemy wszystkie możliwe modele do trzech predyktorów. Model, który wygenerował najniższe AIC i który również charakteryzował się statystycznie istotną redukcją AIC w porównaniu z modelem z dwoma predyktorami, dodał predyktor hp . Model ten miał AIC wynoszący 62,66456 .
  • Następnie dopasowujemy wszystkie możliwe modele do czterech predyktorów. Okazało się, że żaden z tych modeli nie spowodował znaczącej redukcji AIC, więc przerwaliśmy procedurę.

Ostateczny model wygląda następująco:

mpg ~ 38,75 – 3,17*waga – 0,94*cyl – 0,02*hip

Przykład 2: Wybór wsteczny krok po kroku

Poniższy kod pokazuje, jak cofnąć się:

 #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

Oto jak interpretować wyniki:

  • Najpierw dopasowujemy model, korzystając ze wszystkich predyktorów p . Zdefiniuj to jako M p .
  • Następnie dla k = p, p-1,…1 dopasowujemy wszystkie k modeli, które zawierają wszystkie predyktory z wyjątkiem jednego w M k , w sumie k-1 zmiennych predykcyjnych. Następnie wybierz najlepszy spośród tych k modeli i nazwij go M k-1 .
  • Na koniec wybieramy najlepszy model spośród M 0 … M p przy użyciu AIC.

Ostateczny model wygląda następująco:

mpg ~ 9,62 – 3,92*waga + 1,23*qs + 2,94*am

Przykład 3: Wybór krok po kroku w obu kierunkach

Poniższy kod pokazuje, jak krok po kroku dokonać wyboru w obu kierunkach:

 #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 

Oto jak interpretować wyniki:

  • Najpierw dopasowujemy model tylko przechwytujący.
  • Następnie sekwencyjnie dodaliśmy predyktory do modelu, tak jak to zrobiliśmy w przypadku selekcji krok po kroku. Jednak po dodaniu każdego predyktora usunęliśmy także wszelkie predyktory, które nie zapewniały już poprawy dopasowania modelu.
  • Powtarzaliśmy ten proces, aż otrzymaliśmy ostateczny model.

Ostateczny model wygląda następująco:

mpg ~ 9,62 – 3,92*waga + 1,23*qs + 2,94*am

Należy zauważyć, że wybór kroku do przodu i wybór kroku w obu kierunkach dały ten sam końcowy wzór, podczas gdy wybór kroku do tyłu dał inny wzór.

Dodatkowe zasoby

Jak sprawdzić znaczenie nachylenia regresji
Jak czytać i interpretować tabelę regresji
Przewodnik po wielowspółliniowości w regresji

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *