Что такое совершенная мультиколлинеарность? (Определение и примеры)

Что такое совершенная мультиколлинеарность? (Определение и примеры)

В статистике мультиколлинеарность возникает, когда две или более переменных-предикторов сильно коррелируют друг с другом, так что они не предоставляют уникальную или независимую информацию в регрессионной модели.

Если степень корреляции между переменными достаточно высока, это может вызвать проблемы при подгонке и интерпретации регрессионной модели.

Самый крайний случай мультиколлинеарности известен как совершенная мультиколлинеарность.Это происходит, когда по крайней мере две переменные-предикторы имеют точную линейную связь между собой.

Например, предположим, что у нас есть следующий набор данных:

Обратите внимание, что значения переменной-предиктора x2 — это просто значения x1 , умноженные на 2 .

пример идеальной мультиколлинеарности

Это пример идеальной мультиколлинеарности .

Проблема с совершенной мультиколлинеарностью

Когда в наборе данных присутствует идеальная мультиколлинеарность, метод обычных наименьших квадратов не может дать оценки для коэффициентов регрессии.

Это связано с тем, что невозможно оценить предельное влияние одной переменной-предиктора (x 1 ) на переменную отклика (y), сохраняя постоянной другую переменную-предиктор (x 2 ), потому что x 2 всегда перемещается точно тогда, когда движется x 1 .

Короче говоря, идеальная мультиколлинеарность делает невозможным оценку значения каждого коэффициента в регрессионной модели.

Как справиться с идеальной мультиколлинеарностью

Самый простой способ справиться с идеальной мультиколлинеарностью — отбросить одну из переменных, которая имеет точную линейную связь с другой переменной.

Например, в нашем предыдущем наборе данных мы могли просто отбросить x 2 в качестве переменной-предиктора.

Затем мы подогнали бы модель регрессии, используя x 1 в качестве переменной-предиктора и y в качестве переменной отклика.

Примеры идеальной мультиколлинеарности

В следующих примерах показаны три наиболее распространенных сценария идеальной мультиколлинеарности на практике.

1. Одна предикторная переменная кратна другой

Предположим, мы хотим использовать «рост в сантиметрах» и «рост в метрах», чтобы предсказать вес определенного вида дельфинов.

Вот как может выглядеть наш набор данных:

Обратите внимание, что значение «роста в сантиметрах» просто равно «росту в метрах», умноженному на 100. Это случай идеальной мультиколлинеарности.

Если мы попытаемся подогнать модель множественной линейной регрессии в R, используя этот набор данных, мы не сможем произвести оценку коэффициента для предикторной переменной «метры»:

#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 
---
Signif. 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. Одна переменная-предиктор является преобразованной версией другой.

Предположим, мы хотим использовать «очки» и «масштабированные очки» для прогнозирования рейтинга баскетболистов.

Предположим, что переменная «масштабированные точки» рассчитывается как:

Баллы по шкале = (баллы – μ баллов ) / σ баллов

Вот как может выглядеть наш набор данных:

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

Если мы попытаемся подогнать модель множественной линейной регрессии в R, используя этот набор данных, мы не сможем произвести оценку коэффициента для предикторной переменной «масштабированные точки»:

#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 
---
Signif. 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. Ловушка фиктивной переменной

Другой сценарий, в котором может иметь место идеальная мультиколлинеарность, известен как ловушка фиктивной переменной.Это когда мы хотим использовать категориальную переменную в регрессионной модели и преобразовать ее в «фиктивную переменную», которая принимает значения 0, 1, 2 и т. д.

Например, предположим, что мы хотели бы использовать предикторные переменные «возраст» и «семейное положение» для прогнозирования дохода:

Чтобы использовать «семейное положение» в качестве переменной-предиктора, нам нужно сначала преобразовать его в фиктивную переменную.

Для этого мы можем позволить «Не замужем» быть нашим базовым значением, поскольку оно встречается чаще всего, и присвоить значения 0 или 1 «Женаты» и «Развод» следующим образом:

Ошибкой было бы создание трех новых фиктивных переменных следующим образом:

В этом случае переменная «Холост» является идеальной линейной комбинацией переменных «Женаты» и «Разведены». Это пример идеальной мультиколлинеарности.

Если мы попытаемся подогнать модель множественной линейной регрессии в R, используя этот набор данных, мы не сможем произвести оценку коэффициента для каждой переменной-предиктора:

#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 
---
Signif. 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

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

Руководство по мультиколлинеарности и VIF в регрессии
Как рассчитать VIF в R
Как рассчитать VIF в Python
Как рассчитать VIF в Excel

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