다중공선성(multicollinearity) 판단을 위한 VIF 계산

Loxia·2023년 4월 14일
0

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
# Function to calculate VIF
def calculate_vif(data):
    data_with_constant = add_constant(data)
    # Calculate VIF for each predictor variable
    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
    
profile
50mm F2.0

0개의 댓글