다중 공선성의 해결방안

어느정도의 X들(설명변수들)끼리의 영향은 존재할 수 밖에 없으나, 그 교집합이 심하게 겹칠 경우, 다중 공선성이 발생한다. 이 때는 적절한 변수를 선택(제거)를 하는 변수 선택법이 필요하다.

사실 X의 개수(컬럼수, 변수수)가 증가할수록 예측error가 감소하는 구간이 있다.
하지만, 적절한 복잡성을 넘어선 모델 복잡성(다중공선성으로 인해)은 과적합 = 오버피팅을 일으켜 오류가 증가하게 된다. 비록, 현재의 데이터(훈련데이터) 오류가 계속 줄어든다고 하더라도, 모르는 집단(실제데이터, 테스트 데이터)의 오류가 줄어들다가 다시 증가하는 순간이 생긴다. 이 때, 적절한 변수만 선택하여 과적합, 오버피팅을 발생시키지 않게 해야한다. 의미있는 변수들만 선택해야한다.

변수 선택법 3가지

  1. 전진 선택법(Forward selection) : X 0개부터 시작하여, 가장 유의한 변수들부터 하나씩 추가하면서, 매번 모형의 유의성을 판단한다

  2. 후진 제거법(Backward elimination) : 모든 X를 넣어놓고, 하나씩 제거해간다.

  3. 단계적 방법(stepwise selection) : 0개부터 추가했다가 뺐다가 왔다갔다함.

    • r에서 step( 모델, direction = "backward")식으로 step()함수를 이용한다. 그러면 결과창에 AIC가 찍히므로 확인한다.
  4. 의학분야 : 임상적인 의미를 가진 변수, 기존 연구에서 검증된 변수를 유의성과 관계없이 넣을 수 있다. 실제 임상에서는 단변수 -> 다변수로 체크하면서 변수를 추가하는 경우가 많다.
    예를들어, Y에 X1, X2, X3, X4, X5가 있다고 치면,
    단변수 체크 : Y ~ X1, Y ~ X2... 다 체크해서 유의성 높은 것 뽑느다. 0.05는 너무 STRICT한 기준으로 보고 0.1 ~ 0.2까지 허용해준다.
    다변수 체크 : 단변수에서 유의성이 높은 변수들을 가지고 유의성을 체크한다 Y ~ X2 + X4+ X5

### 모형 선택 기준 1. `결정계수(R^2) / 수정된 결정계수(adj R^2)` : best모델의 설명력(나머지는 설명안되는 error) / 여러모델 비교시 사용(높을수록 좋다) 2. `AIC(Akaike Information Criterion)` : -2logL + 2K (낮을수록 좋다) 3. `BIC(Baysian Information Criterion)` : -2logL + Klogn(낮을수록 좋다)

### AIC + ANOVA를 이용한 회귀모델 비교 1. `AIC(모델1, 모델1)` : 2모델 중 AIC가 낮은 모델을 선택한다. 2. `summary(모델1) (모델2)$r.squared` : 각 모델마다 설명력을 확인한다(선택에는 영향x) 3. `summary(모델1) (모델2)$adj.r.squared` : 각각의 모델에서 나온 수정된 결정계수를 비교하여 높은 모델을 선택한다. 3. `anova( 모델1, 모델2)` : `H0 : 모형1 = 모형2`가 기각되는지 `F pr(>F)`를 확인하여, `H0`가 기각되지 않고 같은 모형으로 판단된다면 **`변수가 작은 모델을 선택한다`**

### 가능한 모든 경우의수의 모델 조사 by leaps패키지 많이 쓰진 않는다고 한다. regsubsets()함수를 이용하여 nbest = size당 n개의 최적 모형을 저장하여, plot으로 그리면 된다. y축에는 adj R^2가 나오는데, 높은 모델을 사용하면 될 것이다.

+ Recent posts