아래 링크를 참고하여 작성했습니다.
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)
'계량경제학 > 인과추론의 데이터과학' 카테고리의 다른 글
인과추론을 위한 회귀분석 - Penalized Regression (1) | 2022.10.03 |
---|---|
인과추론을 위한 회귀분석 - Measurement Error (1) | 2022.10.03 |
인과추론을 위한 회귀분석 - Sample Weights (0) | 2022.10.03 |
Gauss-Markov Assumptions (0) | 2022.09.30 |
인과추론을 위한 회귀분석 - Standard Error을 어떻게 고치면 되는가? (1) | 2022.09.25 |