더북(TheBook)

이제 이 결과를 하나씩 나눠서 살펴보자. step( )의 첫 번째 단계의 출력 결과는 다음과 같다.

> step(m, direction="both")
Start: AIC=1589.64
medv ~ crim + zn + indus + chas + nox + rm + age + dis + rad + 
    tax + ptratio + b + lstat

         Df Sum of Sq   RSS    AIC
- age     1      0.06 11079 1587.7
- indus   1      2.52 11081 1587.8
<none>                11079 1589.6
- chas    1    218.97 11298 1597.5
- tax     1    242.26 11321 1598.6
- crim    1    243.22 11322 1598.6
- zn      1    257.49 11336 1599.3
- b       1    270.63 11349 1599.8
- rad     1    479.15 11558 1609.1
- nox     1    487.16 11566 1609.4
- ptratio 1   1194.23 12273 1639.4
- dis     1   1232.41 12311 1641.0
- rm      1   1871.32 12950 1666.6
- lstat   1   2410.84 13490 1687.3

첫 번째 행을 살펴보면 인자로 주어진 모델 m은 crim, zn, indus, …, lstat의 총 13개 변수를 사용하고 있다. 그리고 그때 AIC8 값은 1589.64였다.

그 뒤에 나열된 결과는 각 변수를 삭제했을 때(따라서 ‘- 설명 변수명’ 형식으로 각 행이 표시되어 있다) AIC의 변화를 표현하고 있다. 예를 들어, age 변수가 제거된 경우 AIC는 1587.7이고, indus 변수가 제거되었을 때 AIC는 1587.8이었다. AIC는 작을수록 더 좋은 모델을 뜻하므로 AIC를 가장 작게 만드는 age 변수가 이 단계에서 제거된다.

age가 삭제된 뒤 step( ) 함수의 출력은 다음과 같았다.

Step: AIC=1587.65
medv ~ crim + zn + indus + chas + nox + rm + dis + rad + tax + 
    ptratio + b + lstat

         Df Sum of Sq   RSS    AIC
- indus   1      2.52 11081 1585.8
<none>                11079 1587.7
+ age     1      0.06 11079 1589.6
- chas    1    219.91 11299 1595.6
- tax     1    242.24 11321 1596.6
- crim    1    243.20 11322 1596.6
- zn      1    260.32 11339 1597.4
- b       1    272.26 11351 1597.9
- rad     1    481.09 11560 1607.2
- nox     1    520.87 11600 1608.9
- ptratio 1   1200.23 12279 1637.7
- dis     1   1352.26 12431 1643.9
- rm      1   1959.55 13038 1668.0
- lstat   1   2718.88 13798 1696.7

이 단계는 age가 전 단계에서 제거되었으므로 crim, zn, indus, …, lstat의 총 12개 변수로 출발한다. 이때 AIC는 1587.65다.

이번에는 각 설명 변수를 제거하는 테스트뿐만 아니라 제거된 변수들을 추가하는 검토까지 한다. 제거된 변수는 age밖에 없으므로 변수 추가는 age에 대해서만 수행하며 ‘+ age’로 표시된 행이 이에 해당한다. 변수의 추가 및 삭제에 따른 결과를 보면 indus 변수를 제거한 경우 AIC가 1585.8이 되어 가장 많은 개선이 있으므로 해당 변수를 제거한다.

이와 같은 변수의 추가와 삭제를 반복하여 step( )은 다음과 같이 최종 모델을 결정한다.

> m2 <- step(m, direction="both")
...
> formula(m2)
medv ~ crim + zn + chas + nox + rm + dis + rad + tax + ptratio + 
    b + lstat

새로운 데이터에 대한 예측 등은 predict(m2, newdata=…)로 수행하면 된다.


8 AIC는 모델의 상태적 품질을 평가하는 척도로 아카이케 정보 기준(Akaikie Information Criteria)의 약어다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.