다중공선성
다중공선성
- 다중공선성(Multicollinearity)은 다중 선형 회귀 모델 내부에서 독립변수들끼리 매우 강한 선형 상관관계를 띠는 현상
- 서로 겹치는 정보가 많아 각 회귀계수를 분리하여 추정하기 어려워짐
- 모델의 신뢰성 훼손, 추정치의 분산 팽창 등이 발생할 수 있음
- 심한 경우 회귀계수의 부호가 논리와 정반대로 뒤집히기도 함
- Variance Inflation Factor(VIF)
- 특정 독립변수가 나머지 여러 독립변수들에 의해 어느 정도 설명되는지 측정하는 수치 지표
- 특정 독립변수 Xi를 종속변수로 두고 나머지 X들로 회귀분석했을 때 산출된 Ri2를 이용
- 판단 기준
- 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.001speed:-406.5725, p-value0.049
퀴즈
다중공선성에 대한 설명으로 맞는 것은?
퀴즈를 풀려면 대화형 기능을 불러와야 합니다.