Как проверить мультиколлинеарность в r
В регрессионном анализе мультиколлинеарность возникает, когда две или более переменных-предикторов сильно коррелируют друг с другом, так что они не предоставляют уникальную или независимую информацию в модели регрессии.
Если степень корреляции между переменными-предикторами достаточно высока, это может вызвать проблемы при подборе и интерпретации модели регрессии.
Самый простой способ обнаружить мультиколлинеарность в регрессионной модели — вычислить метрику, известную как коэффициент инфляции дисперсии, часто сокращенно VIF .
VIF измеряет силу корреляции между переменными-предикторами в модели. Он принимает значение от 1 до положительной бесконечности.
Для интерпретации значений VIF мы используем следующие практические правила:
- VIF = 1: между данной переменной-предиктором и любой другой переменной-предиктором в модели нет корреляции.
- VIF от 1 до 5: существует умеренная корреляция между данной переменной-предиктором и другими переменными-предикторами в модели.
- VIF > 5 : существует сильная корреляция между данной переменной-предиктором и другими переменными-предикторами в модели.
В следующем примере показано, как обнаружить мультиколлинеарность в модели регрессии в R путем расчета значений VIF для каждой переменной-предиктора в модели.
Пример: проверка мультиколлинеарности в R
Предположим, у нас есть следующий кадр данных, содержащий информацию о различных баскетболистах:
#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
Предположим, мы хотим подогнать модель множественной линейной регрессии , используя оценку в качестве переменной ответа и очки , передачи и подборы в качестве переменных-предикторов.
Чтобы вычислить VIF для каждой предикторной переменной в модели, мы можем использовать функцию vive() из пакета 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
Мы можем увидеть значения VIF для каждой из переменных-предсказателей:
- баллы: 1,76
- передачи: 1,96
- подборы: 1,18
Поскольку каждое из значений VIF переменных-предикторов в модели близко к 1, мультиколлинеарность не является проблемой в модели.
Примечание . Если мультиколлинеарность оказывается проблемой в вашей модели, самое быстрое решение в большинстве случаев — удалить одну или несколько сильно коррелированных переменных.
Зачастую это приемлемое решение, поскольку удаляемые переменные в любом случае являются избыточными и добавляют в модель мало уникальной или независимой информации.
Дополнительные ресурсы
В следующих руководствах объясняется, как выполнять другие распространенные задачи в R:
Как выполнить множественную линейную регрессию в R
Как создать график QQ в R
Как создать остаточный график в R