다중공선성이란?
회귀분석을 할 때 다중공선성을 고려해야 한다고 합니다.
다중공선성은 회귀분석 시 독립변수 간에 강한 상관관계가 있을 때를 지칭하는 용어이다.
변수간 다중공선성이 높다고 판단되면 이들 변수를 독립변수 이상으로 보기 어렵다.
다중공선성은 회귀분석의 전제인 독립변수 X로 Y를 예측한다는 가정을 할 수 없기 때문에 회귀분석의 심각한 문제 중 하나로 간주된다.
VIF
VIF는 Variance Inflation Factor의 약자로 한글로 번역하면 Variance Inflation Factor입니다.
이 값은 독립변수의 다중공선성을 판단하는 지표로 사용되며 계산식은 다음과 같다.
r_i는 i번째 변수가 없는 회귀 방정식의 R^2 값입니다.
자주 VIF 값이 10을 초과하면 다중공선성이 상당히 높은 것으로 판단하여 제거한다.
왜 10입니까?
VIF > 10이라는 식을 위의 식으로 바꾸면 결과는 r_i > 0.9입니다.
즉, i번째 변수가 방정식에서 제외되더라도 나머지는 Y의 90% 이상을 설명할 수 있습니다.
즉, 제거하고 다른 값으로 대체해도 예측이 크게 변경되지 않습니다.
파이썬의 VIF
모듈을 사용하여 Python에서 VIF를 가져옵니다.
from statsmodels.stats.outliers_influence import variance_inflation_factor as vif
특정 데이터 프레임에서 각 독립 변수에 대한 VIF를 구하는 절차는 다음과 같습니다.
vif_factors = (vif(X.values, i) for i in range(0, X.shape(1)))
vif_report = pd.DataFrame({"variable": X.columns, "VIF Factors": vif_factors})
vif_report는 각 독립 변수에 대한 VIF를 저장하는 데이터 프레임이므로 어떤 독립 변수가 VIF가 크거나 작은지 확인할 수 있습니다.
그것을 확인하고 VIF가 10을 초과하면 값을 제거하십시오.
다른 회귀 분석에서 다중 공선성을 고려해야 합니까?
이 부분에 대해서는 명확한 답을 찾지 못했습니다.
선형회귀 외에 다른 회귀분석(예: 로지스틱 회귀)에서도 다중공선성을 고려해야 하는지에 대해 인터넷에 검색해도 모두 다른 답변을 내놓았기 때문이다.
다만, 다중공선성의 특성과 회귀분석의 가정을 고려할 때, 다중공선성으로 인해 독립변수 간의 독립성을 보장할 수 없을 가능성이 있으므로 모든 회귀분석에서 다중공선성을 고려해야 한다고 판단하였다.
사실 제가 옳지 않을 수도 있습니다.
이 부분은 논문과 같은 더 많은 데이터를 찾아야 합니다.