Co to jest doskonała wielowspółliniowość? (definicja i przykłady)


W statystyce 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 jest wystarczająco wysoki, może to powodować problemy podczas dopasowywania i interpretacji modelu regresji.

Najbardziej ekstremalny przypadek współliniowości nazywany jest doskonałą wielowspółliniowością . Dzieje się tak, gdy dwie lub więcej zmiennych predykcyjnych ma ze sobą dokładnie liniową zależność.

Załóżmy na przykład, że mamy następujący zestaw danych:

Należy zauważyć, że wartości zmiennej predykcyjnej x 2 są po prostu wartościami x 1 pomnożonymi przez 2.

przykład doskonałej wielowspółliniowości

Jest to przykład doskonałej wielowspółliniowości .

Problem doskonałej wielowspółliniowości

Gdy w zbiorze danych występuje doskonała wieloliniowość, zwykła metoda najmniejszych kwadratów nie jest w stanie wygenerować szacunków współczynników regresji.

Rzeczywiście, nie jest możliwe oszacowanie marginalnego wpływu zmiennej predykcyjnej (x 1 ) na zmienną odpowiedzi (y), przy jednoczesnym utrzymaniu innej zmiennej predykcyjnej (x 2 ) na stałym poziomie, ponieważ x 2 porusza się zawsze dokładnie wtedy, gdy porusza się x 1 .

Krótko mówiąc, idealna współliniowość uniemożliwia oszacowanie wartości każdego współczynnika w modelu regresji.

Jak sobie radzić z doskonałą wielowspółliniowością

Najprostszym sposobem poradzenia sobie z doskonałą współliniowością jest usunięcie jednej ze zmiennych, która ma dokładnie liniową zależność z inną zmienną.

Na przykład w naszym poprzednim zbiorze danych mogliśmy po prostu usunąć x 2 jako zmienną predykcyjną.

Następnie dopasowalibyśmy model regresji, stosując x 1 jako zmienną predykcyjną i y jako zmienną odpowiedzi.

Przykłady doskonałej wielowspółliniowości

Poniższe przykłady pokazują trzy najczęstsze scenariusze doskonałej współliniowości w praktyce.

1. Zmienna predykcyjna jest wielokrotnością innej zmiennej

Załóżmy, że chcemy użyć „wzrostu w centymetrach” i „wzrostu w metrach”, aby przewidzieć wagę określonego gatunku delfina.

Tak mógłby wyglądać nasz zbiór danych:

Należy zauważyć, że wartość „wzrostu w centymetrach” jest po prostu równa „wzrostowi w metrach” pomnożonemu przez 100. Jest to przypadek doskonałej współliniowości.

Jeśli spróbujemy dopasować model regresji liniowej w R przy użyciu tego zbioru danych, nie będziemy w stanie wygenerować oszacowania współczynnika dla zmiennej predykcyjnej „metry”:

 #define data
df <- data. frame (weight=c(400, 460, 470, 475, 490, 440, 430, 490, 500, 540),
                 m=c(1.3, .7, .6, 1.3, 1.2, 1.5, 1.2, 1.6, 1.1, 1.4),
                 cm=c(130, 70, 60, 130, 120, 150, 120, 160, 110, 140))

#fit multiple linear regression model
model <- lm(weight~m+cm, data=df)

#view summary of model
summary(model)

Call:
lm(formula = weight ~ m + cm, data = df)

Residuals:
    Min 1Q Median 3Q Max 
-70,501 -25,501 5,183 19,499 68,590 

Coefficients: (1 not defined because of singularities)
            Estimate Std. Error t value Pr(>|t|)    
(Intercept) 458,676 53,403 8,589 2.61e-05 ***
m 9.096 43.473 0.209 0.839    
cm NA NA NA NA    
---
Significant. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Residual standard error: 41.9 on 8 degrees of freedom
Multiple R-squared: 0.005442, Adjusted R-squared: -0.1189 
F-statistic: 0.04378 on 1 and 8 DF, p-value: 0.8395

2. Zmienna predykcyjna jest przekształconą wersją innej

Załóżmy, że chcemy użyć „punktów” i „punktów skalowanych” do przewidzenia ocen koszykarzy.

Załóżmy, że zmienna „punkty skalowane” jest obliczana jako:

Punkty skalowane = (punkty – μ punktów ) / σ punktów

Tak mógłby wyglądać nasz zbiór danych:

Należy pamiętać, że każda wartość „punktów skalowanych” jest po prostu standardową wersją „punktów”. Jest to przypadek doskonałej wielowspółliniowości.

Jeśli spróbujemy dopasować model regresji liniowej w R przy użyciu tego zbioru danych, nie będziemy w stanie wygenerować oszacowania współczynnika dla zmiennej predykcyjnej „punkty skalowane”:

 #define data
df <- data. frame (rating=c(88, 83, 90, 94, 96, 78, 79, 91, 90, 82),
                 pts=c(17, 19, 24, 29, 33, 15, 14, 29, 25, 22))

df$scaled_pts <- (df$pts - mean(df$pts)) / sd(df$pts)

#fit multiple linear regression model
model <- lm(rating~pts+scaled_pts, data=df)

#view summary of model
summary(model)

Call:
lm(formula = rating ~ pts + scaled_pts, data = df)

Residuals:
    Min 1Q Median 3Q Max 
-4.4932 -1.3941 -0.2935 1.3055 5.8412 

Coefficients: (1 not defined because of singularities)
            Estimate Std. Error t value Pr(>|t|)    
(Intercept) 67.4218 3.5896 18.783 6.67e-08 ***
pts 0.8669 0.1527 5.678 0.000466 ***
scaled_pts NA NA NA NA    
---
Significant. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Residual standard error: 2.953 on 8 degrees of freedom
Multiple R-squared: 0.8012, Adjusted R-squared: 0.7763 
F-statistic: 32.23 on 1 and 8 DF, p-value: 0.0004663

3. Sztuczna pułapka zmienna

Inny scenariusz, w którym może wystąpić doskonała wieloliniowość, nazywany jest fikcyjną pułapką zmiennych . Dzieje się tak wtedy, gdy chcemy wziąć zmienną kategoryczną w modelu regresji i przekształcić ją w „zmienną fikcyjną”, która przyjmuje wartości 0, 1, 2 itd.

Załóżmy na przykład, że chcemy użyć zmiennych predykcyjnych „wiek” i „stan cywilny” do przewidzenia dochodów:

Aby użyć „stanu cywilnego” jako zmiennej predykcyjnej, musimy najpierw przekształcić go w zmienną fikcyjną.

Aby to zrobić, możemy pozostawić „Single” jako wartość bazową, ponieważ zdarza się to najczęściej, i przypisać wartości 0 lub 1 do „Żonaty” i „Rozwód” w następujący sposób:

Błędem byłoby utworzenie trzech nowych zmiennych fikcyjnych w następujący sposób:

W tym przypadku zmienna „Singiel” jest idealną liniową kombinacją zmiennych „Żonaty” i „Rozwiedziony”. Jest to przykład doskonałej wielowspółliniowości.

Jeśli spróbujemy dopasować model regresji liniowej w R przy użyciu tego zbioru danych, nie będziemy w stanie wygenerować oszacowania współczynnika dla każdej zmiennej predykcyjnej:

 #define data
df <- data. frame (income=c(45, 48, 54, 57, 65, 69, 78, 83, 98, 104, 107),
                 age=c(23, 25, 24, 29, 38, 36, 40, 59, 56, 64, 53),
                 single=c(1, 1, 1, 1, 0, 1, 0, 1, 1, 0, 0),
                 married=c(0, 0, 0, 0, 1, 0, 1, 0, 0, 1, 1),
                 divorced=c(0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0))

#fit multiple linear regression model
model <- lm(income~age+single+married+divorced, data=df)

#view summary of model
summary(model)

Call:
lm(formula = income ~ age + single + married + divorced, data = df)

Residuals:
    Min 1Q Median 3Q Max 
-9.7075 -5.0338 0.0453 3.3904 12.2454 

Coefficients: (1 not defined because of singularities)
            Estimate Std. Error t value Pr(>|t|)   
(Intercept) 16.7559 17.7811 0.942 0.37739   
age 1.4717 0.3544 4.152 0.00428 **
single -2.4797 9.4313 -0.263 0.80018   
married NA NA NA NA   
divorced -8.3974 12.7714 -0.658 0.53187   
---
Significant. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Residual standard error: 8.391 on 7 degrees of freedom
Multiple R-squared: 0.9008, Adjusted R-squared: 0.8584 
F-statistic: 21.2 on 3 and 7 DF, p-value: 0.0006865

Dodatkowe zasoby

Przewodnik po wielowspółliniowości i VIF w regresji
Jak obliczyć VIF w R
Jak obliczyć VIF w Pythonie
Jak obliczyć VIF w Excelu

Dodaj komentarz

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