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


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

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

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

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

Обратите внимание, что значения переменной-предиктора x 2 — это просто значения x 1 , умноженные на 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    
---
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

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *