Що таке ідеальна мультиколінеарність? (визначення та приклади)


У статистиці мультиколінеарність виникає, коли дві або більше змінних предикторів сильно корельовані одна з одною, так що вони не надають унікальної чи незалежної інформації в моделі регресії.

Якщо ступінь кореляції між змінними досить високий, це може спричинити проблеми під час підгонки та інтерпретації регресійної моделі.

Найбільш крайній випадок мультиколінеарності називається ідеальною мультиколінеарністю . Це відбувається, коли дві або більше змінних предиктора мають точний лінійний зв’язок одна з одною.

Наприклад, припустимо, що ми маємо такий набір даних:

Зверніть увагу, що значення змінної предиктора x 2 є просто значеннями x 1 , помноженими на 2.

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

Це приклад ідеальної мультиколінеарності .

Проблема ідеальної мультиколінеарності

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

Дійсно, неможливо оцінити граничний вплив змінної предиктора (x 1 ) на змінну відповіді (y), зберігаючи іншу змінну предиктора (x 2 ) постійною, оскільки x 2 рухається завжди точно тоді, коли рухається x 1 .

Коротше кажучи, ідеальна мультиколінеарність унеможливлює оцінку значення для кожного коефіцієнта в моделі регресії.

Як боротися з ідеальною мультиколінеарністю

Найпростіший спосіб впоратися з ідеальною мультиколінеарністю — видалити одну зі змінних, яка має точний лінійний зв’язок з іншою змінною.

Наприклад, у нашому попередньому наборі даних ми могли просто видалити x 2 як змінну предиктора.

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

Приклади ідеальної мультиколінеарності

Наступні приклади демонструють три найпоширеніші сценарії ідеальної мультиколінеарності на практиці.

1. Прогностична змінна є кратною іншій

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

Ось як може виглядати наш набір даних:

Зауважте, що значення «зростання в сантиметрах» просто дорівнює «зростанню в метрах», помноженому на 100. Це випадок ідеальної мультиколінеарності.

Якщо ми спробуємо підібрати модель множинної лінійної регресії в R за допомогою цього набору даних, ми не зможемо отримати оцінку коефіцієнта для змінної предиктора “meters”:

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

Додати коментар

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *