다중공선성

다중공선성

정의 1

다중회귀분석 $Y \leftarrow X_{1} , \cdots, X_{p}$ 을 한다고 생각해보자.이 때 독립변수 $ X_{1} , \cdots, X_{p}$ 중에서 독립변수끼리 강한 상관관계를 가지면 다중공선성Multicollinearity이 있다고 한다

실습

애초에 독립변수끼리 종속적이라는 것 자체가 회귀분석의 가정에 위배되는 말이며, 실제로 수치적인 문제를 야기해 분석 결과를 신뢰할 수 없게 만든다. 데이터에 따라서는 다중공선성이 있는지 없는지를 알아내는 것부터가 일이다.

데이터 탐색

내장데이터 MplsDemo 데이터를 불러와보자.

20181222\_121700.png MplsDemo는 미국 미니애폴리스 지역을 구회별로 나누고 population(총 인구), white(백인 비율), black(흑인 비율), foreignBorn(외국 태생), hhIncome(가계 소득), poverty(빈곤), collegeGrad(대학 졸업 비율)을 추정한 데이터다.

20181222\_123641.png 5C1DB3F02.png

회귀분석 후 가설검정을 보면 딱히 문제가 없는 것 같고 설명력도 괜찮은데다 잔차그림 역시 양호하다. 그런데 회귀계수를 잘 보면 백인이 많을수록 대졸자가 많아지는 한편 외국 태생이 많을수록 대졸자가 많아지기도 한다. 물론 이 데이터가 모든 인종에 대한 정확한 정보를 가지고 있는 것은 아니지만, 이것은 뭔가 이상해보인다. 또 소득이 많을수록 대졸자가 많아지는 건 그렇다 쳐도 빈곤율이 전혀 영향을 못 미치는것도 뭔가 꺼림칙한 구석이 있다.

20181222\_123349.png

산점도를 살펴보면 누가봐도 백인, 가계소득이 양의 상관관계, 흑인, 외국 태생이 음의 상관관계를 가지는 게 정상으로 보인다. 빈곤은 애매하지만 굳이 따지자면 약한 음의 상관관계를 보인다. 그런데 흑인과 외국 태생에 대한 회귀계수가 양수인 것은 무언가 이 데이터가 제대로 설명되지 못했음을 암시한다. 물론 설명력 자체는 0.8이 넘을 정도로 괜찮지만, 어딘가 석연찮은 구석이 분명히 있다. 다중공선성을 생각해보면 백인이 다른 변수들과 강한 상관관계가 있어보이는 게 걸린다.

모델 수정

백인 비율을 나타내는 독립 변수 white를 제거하고 다시 회귀분석을 해보자.

20181222\_133921.png

새로운 분석 결과는 비록 설명력이 10% 가까이 떨어졌지만 산점도에서 예상되는 회귀관계를 비교적 말이 되게 설명한 것을 확인할 수 있다. 여전히 외국 태생은 계수가 조금 이상하지만, 회귀계수가 유의하지 않으므로 신경쓸 필요가 없어보인다. 이쯤부터 더 정교한 분석을 위해 데이터를 어떻게 다룰것인가 하는 문제는 전적으로 분석자에게 달려있다.

다중공선성의 탐지

다중공선성이 있을 가능성이 높은 상황으로 다음과 같은 경우들이 있다.

  1. F검정은 통과했으나 각각의 회귀계수가 t검정을 통과하지 못하는 경우2. 예상하던 것과 달리 회귀계수의 부호가 반대일 정도로 괴리가 큰 경우
  2. 데이터를 추가하거나 제거할 때 기존의 회귀계수가 극심하게 많이 변하는 경우

물론 어떤 경우든간에 분석이 잘못되어서 문제가 발생했다는 것부터 설명력 $R^2$ 가 낮아서 다중공선성을 의심해볼 수는 있다. 하지만 설명력이라는 것엔 어느정도부터 좋다는 기준도 없는데다가 틀린 분석이라도 얼마든지 설명력이 높게 나올 수 있으며, 그조차도 다분히 주관적이라서 참고가 되지 못할 수 있다. 애초에 현실 속에서 얻어지는 데이터는 모든 변수가 완전한 독립인 경우가 더 드물다. 다중공선성이라고 말할 정도는 아니지만 어느정도는 관계가 있어서 애매한 영향력을 미치는 게 보통이다.

예제와 같이 산점도를 통해 그림으로 파악하는것도 만능이라고는 할 수 없다. 물론 산점도를 보면 두 변수간의 관계는 금방 알아낼 수 있지만, 가령 $X_{1}+ X_{2} + X_{3} = 1$ 과 같이 여러 변수가 복잡한 관계를 가지면 눈으로는 찾아내기 어렵다.

수치적 지표

그렇다면 당연히 수치적인 지표를 생각하지 않을 수가 없다. 이에 대해 가장 즐겨쓰이는 것이 분상팽창인자(VIF)로, 다중공선성을 파악하는데에 유용하게 쓰이고 있다. 그러나 VIF는 어떤 확률분포를 따르지는 않기 때문에 가설검정을 할 수가 없다. 그래서 경험적으로 정한 기준을 넘으면 다중공선성이 있다고 주장할 따름이다. 그 경험적 기준이라는 것도 애매할 때가 있어 골칫거리다. 회귀분석을 한다는 것은 실로 이 다중공선성과의 싸움이라고 할 수 있을 정도다.

VIF 외에도 주성분분석을 통해 얻는 조건수 같은 지표도 있지만, 잘 쓰이지는 않는다.

코드

아래는 예제 코드다.

install.packages('car')
library(car)
 
DATA=MplsDemo; head(DATA)
 
win.graph()
plot(DATA[,-1])
 
out0<-lm(collegeGrad~.-neighborhood,data=DATA)
summary(out0)
 
win.graph(4,4)
plot(out0$residuals, main="잔차")
 
out1<-lm(collegeGrad~.-neighborhood-white,data=DATA)
summary(out1)

  1. Hadi. (2006). Regression Analysis by Example(4th Edition): p222. ↩︎

댓글