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