Jak sprawdzić współliniowość w r


W analizie regresji wieloliniowość występuje, gdy dwie lub więcej zmiennych predykcyjnych jest ze sobą silnie skorelowanych, tak że nie dostarczają unikalnych lub niezależnych informacji w modelu regresji.

Jeśli stopień korelacji między zmiennymi predykcyjnymi jest wystarczająco wysoki, może to powodować problemy podczas dopasowywania i interpretacji modelu regresji.

Najprostszym sposobem wykrycia wieloliniowości w modelu regresji jest obliczenie metryki zwanej współczynnikiem inflacji wariancji, często w skrócie VIF .

VIF mierzy siłę korelacji między zmiennymi predykcyjnymi w modelu. Przyjmuje wartość z zakresu od 1 do dodatniej nieskończoności.

Do interpretacji wartości VIF stosujemy następujące praktyczne zasady:

  • VIF = 1: Nie ma korelacji pomiędzy daną zmienną predykcyjną a jakąkolwiek inną zmienną predykcyjną w modelu.
  • VIF od 1 do 5: Istnieje umiarkowana korelacja pomiędzy daną zmienną predykcyjną a innymi zmiennymi predykcyjnymi w modelu.
  • VIF > 5 : Istnieje silna korelacja pomiędzy daną zmienną predykcyjną a innymi zmiennymi predykcyjnymi w modelu.

Poniższy przykład pokazuje, jak wykryć wieloliniowość w modelu regresji w R, obliczając wartości VIF dla każdej zmiennej predykcyjnej w modelu.

Przykład: testowanie współliniowości w R

Załóżmy, że mamy następującą ramkę danych zawierającą informacje o różnych koszykarzach:

 #create data frame
df = data. frame (rating = c(90, 85, 82, 88, 94, 90, 76, 75, 87, 86),
                points=c(25, 20, 14, 16, 27, 20, 12, 15, 14, 19),
                assists=c(5, 7, 7, 8, 5, 7, 6, 9, 9, 5),
                rebounds=c(11, 8, 10, 6, 6, 9, 6, 10, 10, 7))

#view data frame
df

   rating points assists rebounds
1 90 25 5 11
2 85 20 7 8
3 82 14 7 10
4 88 16 8 6
5 94 27 5 6
6 90 20 7 9
7 76 12 6 6
8 75 15 9 10
9 87 14 9 10
10 86 19 5 7

Załóżmy, że chcemy dopasować model regresji liniowej, wykorzystując punktację jako zmienną odpowiedzi oraz punkty , asysty i zbiórki jako zmienne predykcyjne.

Aby obliczyć VIF dla każdej zmiennej predykcyjnej w modelu, możemy użyć funkcji vive() z pakietu car :

 library (car)

#define multiple linear regression model
model <- lm(rating ~ points + assists + rebounds, data=df)

#calculate the VIF for each predictor variable in the model
lively(model)

  points assists rebounds 
1.763977 1.959104 1.175030 

Możemy zobaczyć wartości VIF dla każdej ze zmiennych predykcyjnych:

  • punkty: 1,76
  • asysty: 1,96
  • zbiórki: 1,18

Ponieważ każda z wartości VIF zmiennych predykcyjnych w modelu jest bliska 1, współliniowość w modelu nie stanowi problemu.

Uwaga : Jeśli w Twoim modelu problemem okaże się współliniowość, w większości przypadków najszybszym rozwiązaniem jest usunięcie jednej lub większej liczby silnie skorelowanych zmiennych.

Jest to często akceptowalne rozwiązanie, ponieważ usuwane zmienne i tak są zbędne i dodają niewiele unikalnych lub niezależnych informacji do modelu.

Dodatkowe zasoby

Poniższe samouczki wyjaśniają, jak wykonywać inne typowe zadania w języku R:

Jak wykonać wielokrotną regresję liniową w R
Jak utworzyć wykres QQ w R
Jak utworzyć wykres rezydualny w R

Dodaj komentarz

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