Как исправить в R: в модели есть алиасинговые коэффициенты


Одна ошибка, с которой вы можете столкнуться в R:

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

Эта ошибка обычно возникает, когда в модели регрессии существует мультиколлинеарность.То есть две или более переменных-предикторов в модели сильно (или полностью) коррелированы.

Когда это происходит, мы говорим, что одна переменная является «псевдонимом» другой переменной, что вызывает проблемы при подгонке регрессионной модели.

В следующем примере показано, как исправить эту ошибку на практике.

Как воспроизвести ошибку

Предположим, мы подгоняем следующую модель регрессии в R:

#make this example reproducible
set. seed (0)

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

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

Мы можем использовать функцию vif() из пакета car , чтобы вычислить значения VIF для каждой переменной-предиктора в модели, чтобы определить, является ли мультиколлинеарность проблемой:

library (car)

#calculate VIF values for predictor variables
vif(model)

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

Получаем ошибку, что « в модели есть алиасинговые коэффициенты.

Это говорит нам о том, что две или более переменных-предикторов в модели полностью коррелированы.

Как исправить ошибку

Чтобы определить, какие переменные-предикторы полностью коррелированы, мы можем использовать функцию cor() для создания матрицы корреляции для переменных:

#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

Мы видим, что переменные x2 и x3 имеюткоэффициент корреляции , равный 1. Это говорит нам о том, что эти две переменные вызывают ошибку, потому что они полностью коррелированы.

Чтобы исправить эту ошибку, нам просто нужно снова подобрать регрессионную модель и исключить одну из этих двух переменных.

Неважно, какую переменную мы опустим, поскольку обе они предоставляют одну и ту же информацию в регрессионной модели.

Для простоты удалим x3 и снова подгоним регрессионную модель:

library (car)

#make this example reproducible
set. seed (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
vif(model)

 x1 x2 
1.016364 1.016364

Обратите внимание, что на этот раз мы не получаем никаких ошибок при вычислении значений VIF для модели, потому что мультиколлинеарность больше не является проблемой.

Связанный: Как рассчитать и интерпретировать значения VIF в R

Дополнительные ресурсы

В следующих руководствах объясняется, как исправить другие распространенные ошибки в R:

Как исправить в R: замена имеет нулевую длину
Как исправить в R: аргументы подразумевают разное количество строк
Как исправить в R: аргумент не является числовым или логическим: возвращается na

Замечательно! Вы успешно подписались.
Добро пожаловать обратно! Вы успешно вошли
Вы успешно подписались на кодкамп.
Срок действия вашей ссылки истек.
Ура! Проверьте свою электронную почту на наличие волшебной ссылки для входа.
Успех! Ваша платежная информация обновлена.
Ваша платежная информация не была обновлена.