단계적 회귀분석 :: R 기초 통계 - mindscale
Skip to content

단계적 회귀분석

단계적 회귀분석

  • 독립변수의 후보가 k개 있으면 가능한 독립변수의 조합은 $2^k$개
  • 독립변수의 후보가 많으면 모든 조합으로 회귀분석을 실시하는 것은 현실적으로 불가능
  • 단계적 회귀분석(stepwise regression): 독립변수를 하나씩 추가/제거 하여 종속변수를 잘 예측하는 변수들을 선택하는 기법
  • 예측력이 (통계적으로) 유의미한 예측변수들만을 골라줌
  • 오직 자료만으로 변수를 선택하기 때문에 이상한 결과가 생길 수 있음
  • 다중공선성 등의 문제에 대한 대처 불가
  • 단계적 회귀분석은 탐색적으로 주요 변수를 파악하는 목적으로만 실시해야

실습 준비

MASS 라이브러리를 사용한다.

library(MASS)

MASS 라이브러리에 내장된 quine 데이터셋을 사용한다. 이 데이터는 학생의 결석에 관한 데이터이다. 종속변수는 결석일수를 나타내는 Days이고 독립변수는 Eth, Sex, Age, Lrn이다.

head(quine)
  Eth Sex Age Lrn Days
1 A   M   F0  SL   2  
2 A   M   F0  SL  11  
3 A   M   F0  SL  14  
4 A   M   F0  AL   5  
5 A   M   F0  AL   5  
6 A   M   F0  AL  13  

전진(forward) 방식

  • 독립변수를 하나씩 추가
  • 예) A, B, C, D를 가지고 Y를 예측하는 전진 방식의 단계적 회귀분석을 한다면,
  • A, B, C, D 중 설명력이 제일 큰 예측변수? A
  • A+B, A+C, A+D 중에 설명력이 가장 큰 조합은? A+B
  • A와 A+B의 설명력이 유의미하게 차이가 나지 않으면 중단
  • 설명력이 유의미하게 차이가 나면 A+B+C, A+B+D 중에 설명력이 가장 큰 조합을 찾음
  • 이상의 과정을 계속

절편만 있는 모형을 만든다.

model.1 = lm(Days ~ 1, data = quine)

stepAIC는 AIC라는 지표를 이용하여 단계적 회귀분석을 한다. AIC가 낮을 수록 설명력이 높은 모형이다.

step.forward = stepAIC(model.1,                             # 절편만 있는 모형에서 시작
                       direction = "forward",               # 전진 방식
                       scope=Days ~ Eth + Sex + Age + Lrn) # Days ~ Eth + Sex + Age + Lrn 이 되면 멈춘다
Start:  AIC=815.18
Days ~ 1

       Df Sum of Sq   RSS    AIC
+ Eth   1   2980.51 35324 805.35
+ Age   3   2535.13 35769 811.18
<none>              38304 815.18
+ Sex   1    269.44 38035 816.15
+ Lrn   1     78.69 38226 816.88

Step:  AIC=805.35
Days ~ Eth

       Df Sum of Sq   RSS    AIC
+ Age   3   2274.91 33049 801.63
<none>              35324 805.35
+ Sex   1    279.01 35045 806.19
+ Lrn   1    100.88 35223 806.93

Step:  AIC=801.63
Days ~ Eth + Age

       Df Sum of Sq   RSS    AIC
+ Lrn   1    598.37 32450 800.96
<none>              33049 801.63
+ Sex   1    122.90 32926 803.09

Step:  AIC=800.96
Days ~ Eth + Age + Lrn

       Df Sum of Sq   RSS    AIC
<none>              32450 800.96
+ Sex   1    213.82 32237 802.00

각 단계를 살펴보면 처음 절편만 있는 모형(Days ~ 1)은 AIC가 815.18이다. 여기에 Eth를 추가하면 AIC가 805.35감소한다. 여기에 Age를 추가하면 801.63, Lrn을 추가하면 800.96까지 내려간다. 그러나 Sex를 추가하면 AIC가 802.00으로 증가하기 때문에 추가하지 않는다. 결과적으로 Days ~ Eth + Age + Lrn에서 멈춘다.

후진(backward) 방식

  • 독립변수를 하나씩 제거
  • 예) A, B, C, D를 가지고 Y를 예측하는 후진 방식의 단계적 회귀분석을 한다면,
  • A+B+C+D에서 설명력이 가장 적게 줄어드는 변수를 제거 (D라고 하자)
  • A+B+C와 A+B+C+D 설명력이 유의미하게 차이가 나면 중단
  • 차이가 나지 않으면 A+B+C에서 설명이 가장 적게 줄어드는 변수를 제거
  • 이상의 과정을 반복
model.2 = lm(Days ~ Eth + Sex + Age + Lrn, data = quine)
step.backward = stepAIC(model.2, direction = "backward")
Start:  AIC=802
Days ~ Eth + Sex + Age + Lrn

       Df Sum of Sq   RSS    AIC
- Sex   1    213.82 32450 800.96
<none>              32237 802.00
- Lrn   1    689.29 32926 803.09
- Age   3   2645.84 34882 807.52
- Eth   1   2774.02 35011 812.05

Step:  AIC=800.96
Days ~ Eth + Age + Lrn

       Df Sum of Sq   RSS    AIC
<none>              32450 800.96
- Lrn   1    598.37 33049 801.63
- Age   3   2772.41 35223 806.93
- Eth   1   2747.81 35198 810.83

각 단계를 살펴보면 Days ~ Eth + Sex + Age + Lrn는 AIC가 802이다. 여기서 Sex를 빼면 800.96으로 AIC가 가장 많이 줄어든다. 그 다음에는 Lrn을 빼도 801.63, Age를 빼도 806.93, Eth를 빼도 810.83으로 AIC가 증가하므로 아무 것도 제외하지 않고 멈춘다.

주의할 점

  • 변수를 순서대로 선택하기 때문에 검토하지 못하는 조합이 생김
  • A -> A+B -> A+B+C ... 순으로 탐색을 하면 B+C는 검토할 기회가 없음
  • 전진 방식과 후진 방식의 결과가 항상 같은 건 아님
  • 대체로 전진 방식이 후진 방식보다 적은 변수를 선택하는 경향이 있음