logo

다중공선성

다중공선성

  • 다중공선성(Multicollinearity)은 다중 선형 회귀 모델 내부에서 독립변수들끼리 매우 강한 선형 상관관계를 띠는 현상
  • 서로 겹치는 정보가 많아 각 회귀계수를 분리하여 추정하기 어려워짐
  • 모델의 신뢰성 훼손, 추정치의 분산 팽창 등이 발생할 수 있음
  • 심한 경우 회귀계수의 부호가 논리와 정반대로 뒤집히기도 함
  • Variance Inflation Factor(VIF)
    • 특정 독립변수가 나머지 여러 독립변수들에 의해 어느 정도 설명되는지 측정하는 수치 지표
    • 특정 독립변수 Xi​를 종속변수로 두고 나머지 X들로 회귀분석했을 때 산출된 Ri2​를 이용
VIFi​=1−Ri2​1​
  • 판단 기준
    • VIF가 1에 가까울수록 다중공선성이 없음
    • 실무적으로 VIF > 10이면 다중공선성 문제가 심각하다고 평가하고 변수 제외 등 조치를 고려

실습 준비

import pandas as pd
import patsy
from statsmodels.formula.api import ols
from statsmodels.stats.outliers_influence import variance_inflation_factor
df_ship = pd.read_excel("ship.xlsx")

독립변수 간 상관관계

df_ship[["length", "beam", "speed", "weight"]].corr()
실행 결과
          length      beam     speed    weight
length  1.000000  0.960654  0.065254  0.630324
beam    0.960654  1.000000  0.041467  0.693125
speed   0.065254  0.041467  1.000000 -0.114179
weight  0.630324  0.693125 -0.114179  1.000000

length와 beam의 상관계수는 0.960654. 두 변수가 비슷한 정보를 포함하여 다중공선성 가능성이 큼.

분산팽창지수 계산

design_matrix = patsy.dmatrix(
    " ~ length + beam + speed",
    df_ship,
    return_type="dataframe",
)

pd.DataFrame({
    "variable": design_matrix.columns[1:],
    "VIF": [
        variance_inflation_factor(design_matrix.values, i)
        for i in range(1, design_matrix.shape[1])
    ],
})
실행 결과
  variable        VIF
0   length  13.072579
1     beam  13.039336
2    speed   1.010198

변수 제외 후 모형 비교

length와 beam의 VIF가 10보다 큼. length를 제외하고 다시 적합.

ols("weight ~ beam + speed", data=df_ship).fit().summary()
실행 결과
<class 'statsmodels.iolib.summary.Summary'>
"""
                            OLS Regression Results                            
==============================================================================
Dep. Variable:                 weight   R-squared:                       0.501
Model:                            OLS   Adj. R-squared:                  0.491
Method:                 Least Squares   F-statistic:                     48.67
Date:                Tue, 06 Oct 2026   Prob (F-statistic):           2.31e-15
Time:                        13:36:41   Log-Likelihood:                -1038.7
No. Observations:                 100   AIC:                             2083.
Df Residuals:                      97   BIC:                             2091.
Df Model:                           2                                         
Covariance Type:            nonrobust                                         
==============================================================================
                 coef    std err          t      P>|t|      [0.025      0.975]
------------------------------------------------------------------------------
Intercept   1.668e+04   5486.797      3.040      0.003    5791.011    2.76e+04
beam        1056.1652    108.469      9.737      0.000     840.884    1271.446
speed       -406.5725    203.885     -1.994      0.049    -811.228      -1.917
==============================================================================
Omnibus:                       13.558   Durbin-Watson:                   1.943
Prob(Omnibus):                  0.001   Jarque-Bera (JB):               15.344
Skew:                           0.956   Prob(JB):                     0.000466
Kurtosis:                       3.166   Cond. No.                         293.
==============================================================================

Notes:
[1] Standard Errors assume that the covariance matrix of the errors is correctly specified.
"""
  • R2: 0.501
  • 수정 R2: 0.491
  • beam: 1056.1652, p-value < 0.001
  • speed: -406.5725, p-value 0.049

퀴즈

문제 1 / 2맞음: 0힌트: 0틀림: 0채점중: 0남음: 2

다중공선성에 대한 설명으로 맞는 것은?

  • ○독립변수들끼리 매우 강한 선형 상관관계를 띠는 현상
  • ○독립변수와 종속변수의 상관관계가 매우 강한 현상
  • ○회귀모형의 결정계수가 매우 높게 나타나는 현상
  • ○독립변수의 측정 단위가 서로 다른 현상

퀴즈를 풀려면 대화형 기능을 불러와야 합니다.

Previous
다중회귀분석