VIF 값 해석
- VIF = 1: 예측 변수와 모델의 다른 예측 변수 간에 다중공선성이 없음
- 1 < VIF < 5: 일반적으로 이 범위는 허용 가능한 범위로 간주
- VIF ≥ 5: 중간에서 높은 정도의 다중공선성이 있음을 나타내며, 다중공선성 문제를 해결할 필요가 있습니다.
- VIF ≥ 10: 일반적으로 VIF 값이 10 이상인 경우 다중공선성을 해결하는 것이 좋습니다.
높은 VIF 값 처리
- 높게 상관된 예측 변수 중 하나를 제거
- 상관된 예측 변수들을 결합하여 공유된 정보를 나타내는 새로운 특성을 생성
- Ridge 회귀 또는 Lasso 회귀와 같은 정규화 기법을 사용
- 주성분 분석(PCA)과 같은 차원 축소 기법을 적용하여 상관된 예측 변수를 상관 관계가 없는 새로운 변수 집합으로 변환
from statsmodels.stats.outliers_influence import variance_inflation_factor
from statsmodels.tools.tools import add_constant
def calculate_vif(data):
data_with_constant = add_constant(data)
vif = pd.DataFrame()
vif["Variable"] = data_with_constant.columns
vif["VIF"] = [variance_inflation_factor(
data_with_constant.values, i) for i in range(data_with_constant.shape[1])]
return vif