Как исправить в r: в модели есть коэффициенты псевдонимов
Ошибка, с которой вы можете столкнуться в R:
Error in vive.default(model): there are aliased coefficients in the model
Эта ошибка обычно возникает, когда в регрессионной модели существует мультиколлинеарность . То есть две или более переменных-предикторов в модели сильно (или идеально) коррелируют.
Когда это происходит, мы говорим, что переменная является «псевдонимом» другой переменной, что вызывает проблемы при подборе регрессионной модели.
В следующем примере показано, как исправить эту ошибку на практике.
Как воспроизвести ошибку
Предположим, мы применяем следующую модель регрессии в 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)
Мы можем использовать функцию vive() пакета car для расчета значений VIF для каждой предикторной переменной в модели, чтобы определить, является ли мультиколлинеарность проблемой:
library (car)
#calculate VIF values for predictor variables
lively(model)
Error in vive.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. 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
Обратите внимание, что на этот раз мы не получаем никаких ошибок при вычислении значений VIF для модели, поскольку мультиколлинеарность больше не является проблемой.
Связанный: Как рассчитать и интерпретировать значения VIF в R
Дополнительные ресурсы
В следующих руководствах объясняется, как исправить другие распространенные ошибки в R:
Как восстановить в R: замена имеет нулевую длину
Как исправить в R: аргументы содержат разное количество строк
Как исправить в R: аргумент не является ни числовым, ни логическим: return na