본문 바로가기

계량경제학/인과추론의 데이터과학

인과추론을 위한 회귀분석 - Collinearity

아래 링크를 참고하여 작성했습니다. 

https://theeffectbook.net/ch-StatisticalAdjustment.html?panelset5=python-code6&panelset6=python-code7&panelset7=python-code8&panelset8=python-code9#additional-regression-concerns


Collinearity의 종류 

(1) Perfect Multicollinearity

  • 변수들의 linear combination이 다른 변수를 정확하게 예측할 수 있는 경우 (e.g. X1 = 2X2 + 3X3 - X4) 
  • 변수들간 correlation이 -1 또는 1

(2) Not Perfect Multicollinearity

  • 변수들간 correlation이 -1 또는 1까지는 아니지만, 매우 높은 경우 
  • Multicollinearity가 있으면 샘플링 분포가 매우 넓어지고 standard error이 증가함 

Collinearity가 standard error를 높이는 이유

: Multicollinearity의 종류(Perfect or not)에 관계 없이, Multicollinearity가 있으면 추정치의 불확실성이 커지기 때문에 coefficients의 Standard Error가 커짐

 

(1) Perfect Multicollinearity가 있는 경우 

Sales = b0 + b1Winter + b2NotWinter

  • Winter: 겨울 / NotWinter: 겨울이 아님 
  • 모든 날짜에 대해서 Winter + NotWinter = 1이 됨 
  • Winter과 NotWinter의 상관관계 = -1 
  • 위 식을 만족하는 가능한 (b0, b1, b2)의 조합이 무한대가 나옴
    • e.g.) (b0, b1, b2) = (15, -5, 0), (10, 0, 5), ... 등 

(2) Not Perfect Multicollinearity가 있는 경우 

Sales = b0 + b1WinterExceptJan1 + b2NotWinter

  • WinterExceptJan1: 1월 1일을 제외한 겨울 / NotWinter: 겨울이 아님 
  • 1월 1일을 제외하고는 WinterExceptJan1 + NotWinter = 1이 됨 (1월 1일에는 WinterExceptJan1 + NotWinter = 0) 
  • Winter과 NotWinter의 상관관계 ≒ -1 
  • (b0, b1, b2) 값이 달라지면 prediction 값이 비슷하지만 서로 다른 값을 도출함 
    • 1월 1일의 Sales = 5라면 (b0, b1, b2) = (5, 5, 10) / 1월 1일의 Sales = 15라면 (b0, b1, b2) = (15, -5, 0)
    • -> 값 하나의 변동이 모든 coefficient를 평행이동시킴 
    • b1은 sales의 변동만큼 움직임 -> b1의 standard error는 sales의 standard error와 동일함 
  • 일반적인 경우, sample의 수가 늘어나면 standard error가 줄어들지만, Not Perfect Multicollinearity가 있는 경우, b1의 standard error는 sample의 수에 관계 없이 sales의 standard deviation과 동일함 

Collinearity가 높을 때 어떻게 해야 하는가? 

(1) Collinearity가 높은 변수를 제거한다 

  • 변수를 제거할 수 있는 상황일 때 - 동일한 현상에 대해서 서로 다른 변수로 나타낸 경우에 사용하는 방법 

(2) 차원 축소(Dimension reduction)

  • 변수를 제거할 수 없는 상황일 때 - 상관관계가 큰 변수들이 동일한 현상에 대해 서로 다른 변수로 나타낸 것이 아닐 때 사용하는 방법 
  • Multicollinearity 문제를 피하면서 모든 변수를 모델에 포함할 수 있음 
  • e.g.) FA (Factor Analysis), PCA (Principal Components Analysis) 등

Collinearity를 측정하는 방법: VIF (Variance Inflation Factor)

  • Rj^2: Xj를 종속변수로, 나머지 변수들을 설명변수로 설정했을 때의 R-squred
  • 즉, 특정 변수(Xj)에 대해서 나머지 변수들(X1, ..., Xj-1, Xj+1, ..., Xn)이 얼마나 많은 설명력을 가지고 있는지를 판단 -> 나머지 변수들이 특정 변수를 linear combination으로 일정 수준 이상 설명할 수 있다면, 해당 변수는 collinearity가 높다고 판단, 제거할 수 있음 
  • e.g.) model: Salary = a * Job level + b * Working Years + c * Age
    • Job level = b * Working Years + c * age + intercept -> R_a^2 계산 -> VIF_a 계산
    • Working Years = a * Job level + c * age + intercept -> R_b^2 계산 -> VIF_b 계산
    • Age = a * Job level + b * Working Years + intercept -> R_c^2 계산 -> VIF_c 계산
  • Collinearity가 있다고 판단하는 VIF의 기준은 데이터의 성격, 맥락 등에 따라서 다른데, VIF > 10을 기준으로 하는 경우가 많음 (Rj^2 > 0.9)

VIFi>10은 Ri^2>0.9를 의미함