Jak naprawić w r: w modelu znajdują się współczynniki aliasów


Błąd, który możesz napotkać w R to:

 Error in vive.default(model): there are aliased coefficients in the model

Ten błąd zwykle występuje, gdy w modelu regresji istnieje wieloliniowość . Oznacza to, że dwie lub więcej zmiennych predykcyjnych w modelu jest silnie (lub doskonale) skorelowanych.

Kiedy tak się dzieje, mówimy, że zmienna jest „aliasem” innej zmiennej, co powoduje problemy przy dopasowywaniu modelu regresji.

Poniższy przykład pokazuje, jak w praktyce skorygować ten błąd.

Jak odtworzyć błąd

Załóżmy, że zastosujemy następujący model regresji w R:

 #make this example reproducible
set. seeds (0)

#define data
x1 <- rnorm(100)
x2 <- rnorm(100)
x3 <- x2*3
y <- rnorm(100)

#fit regression model
model <- lm(y~x1+x2+x3)

Możemy użyć funkcji vive() pakietu car do obliczenia wartości VIF dla każdej zmiennej predykcyjnej w modelu, aby określić, czy współliniowość jest problemem:

 library (car)

#calculate VIF values for predictor variables
lively(model)

Error in vive.default(model): there are aliased coefficients in the model

Otrzymujemy błąd informujący, że „ w modelu znajdują się współczynniki aliasów”.

Mówi nam to, że dwie lub więcej zmiennych predykcyjnych w modelu jest doskonale skorelowanych.

Jak naprawić błąd

Aby określić, które zmienne predykcyjne są doskonale skorelowane, możemy użyć funkcji cor() w celu utworzenia macierzy korelacji dla zmiennych:

 #place variables in data frame
df <- data. frame (x1, x2, x3, y)

#create correlation matrix for data frame
cor(df)

           x1 x2 x3 y
x1 1.00000000 0.126886263 0.126886263 0.065047543
x2 0.12688626 1.000000000 1.000000000 -0.009107573
x3 0.12688626 1.000000000 1.000000000 -0.009107573
y 0.06504754 -0.009107573 -0.009107573 1.000000000

Widzimy, że zmienne x2 i x3 mają współczynnik korelacji równy 1. To mówi nam, że te dwie zmienne powodują błąd, ponieważ są doskonale skorelowane.

Aby skorygować ten błąd, wystarczy ponownie dostosować model regresji i pominąć jedną z tych dwóch zmiennych.

Nie ma znaczenia, którą zmienną pominiemy, ponieważ obie dostarczają dokładnie tych samych informacji w modelu regresji.

Dla uproszczenia usuńmy x3 i ponownie dopasujmy model regresji:

 library (car)

#make this example reproducible
set. seeds (0)

#define data
x1 <- rnorm(100)
x2 <- rnorm(100)
x3 <- x2*3
y <- rnorm(100)

#fit regression model
model <- lm(y~x1+x2)

#calculate VIF values for predictor variables in model
lively(model)

      x1 x2 
1.016364 1.016364 

Należy pamiętać, że tym razem nie otrzymaliśmy żadnych błędów podczas obliczania wartości VIF dla modelu, ponieważ wielowspółliniowość nie jest już problemem.

Powiązane: Jak obliczyć i zinterpretować wartości VIF w R

Dodatkowe zasoby

Poniższe samouczki wyjaśniają, jak naprawić inne typowe błędy w R:

Jak naprawić w R: wymiana ma zerową długość
Jak naprawić w R: argumenty obejmują różną liczbę linii
Jak naprawić w R: argument nie jest ani numeryczny, ani logiczny: return na

Dodaj komentarz

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