모델 > 단계적 모델 선택...

Models > Stepwise model selection...

Linux 사례 (MX 21)

어느 모형이 최적의 모형인가? 여러 모형 중에서 어느 모형을 선택해야 하는가? 많은 모형을 하나씩 하나씩 만들어보는 수고를 하지않고, 보다 신속하고 체계적으로 최적의 모형을 찾는 방법은 없는가? '모델 > 단계적 모델 선택...'기능은 이러한 질문들에 대한 답을 찾는 문제의식과 연관되어 있다.

 

carData 패키지에 있는 Prestige 데이터셋을 활용하여 '단계적 모델 선택...'기능을 연습해보자. 직업의 사회적 권위(prestige)에 영향을 미친다고 생각할 수 있는 변수들은 income, education, type, women 등이라고 먼저 떠올려보자. 이 네개의 설명변수들의 선형적 조합에는 변수 한개씩을 선택하는 경우, 변수 두개를 선택하는 경우, 변수 세개를 선택하는 경우, 그리고 변수 네개를 모두 선택하는 경우 등 매우 다양할 것이다.

 

data(Prestige)  # carData 패키지에 내장된 Prestige 데이터셋 불러오기
LinearModel.1 <- lm(prestige ~ women + type + income + education, data=Prestige)
                # 관심가는 설명변수 후보들을 모두 선택하여 선형모델을 우선 만들기
summary(LinearModel.1)  # 만든 선형모델의 요약정보 살펴보기

'통계 > 적합성 모델 > 선형 모델...'의 메뉴를 선택하면 아래와 같은 모형 만들기 창이 등장한다. 아래와 같이 변수들을 선택하여 입력하고, 예(OK) 버튼을 누른다.

Linux 사례 (MX 21)

아래와 같이 R Commander의 출력창의 내용이 보일 것이다. LinearModel.1이라는 모형의 요약 정보가 출력된다.

Linux 사례 (MX 21)

활성화된 메뉴 기능, '단계적 모델 선택...'을 선택한다.

Linux 사례 (MX 21)

메뉴창에 있는 선택사항, '검색방향'에서 두번째 '전진선택중 변수제거검토'를 선택하고, 예(OK) 버튼을 누른다.

Linux 사례 (MX 21)

그런데 stepwise() 함수의 연산결과가 나오지 않고,  R Commander의 맨 아래에 있는 메세지창에 오류문이 출력된다.

Linux 사례 (MX 21)

stepwise() 함수를 이용할 때, 주의해야 할 사항이 있는데, 단계적으로 생성되는 모델들은 동일한 크기의 데이터셋 행(rows)을 사용해야 한다는 것이다. 그럼 위의 오류문을 이해해보면, 다른 크기의 데이터셋 행이 사용되었다는 것인가. 이 경우, 결측치를 갖고 있는 변수가 있다면, 데이터셋의 행의 크기가 변수에 따라 달라질 수 있는 경우가 발생할 것이다.

 

'통계 > 요약 > 관찰 결측치 셈하기' 기능을 이용하면 어느 변수에 결측치가 있는지, 그 결측치의 갯수는 몇 개인지를 확인할 수 있다.

Linux 사례 (MX 21)

Prestige 데이터셋의 type 변수에 결측치가 네개 있음을 확인한다. 이 경우 na.omit()를 사용하여 결측치가 있는 행을 제거하자. 그럼 분석에 들어가는 행의 갯수는 98개가 될 것이다.

Linux 사례 (MX 21)
Linux 사례 (MX 21)
Linux 사례 (MX 21)
Linux 사례 (MX 21)

결측치를 제거한 새로운 데이터셋 Prestige를 사용하여 첫 과정부터 다시해야 한다. 아래와 같이 진행된다.

Prestige <- na.omit(Prestige) # 결측치를 제거한 새로운 데이터셋 Prestige 만들기
LinearModel.2 <- lm(prestige ~ women + type + income + education, data=Prestige)
summary(LinearModel.2)
stepwise(LinearModel.2, direction='backward/forward', criterion='BIC')

출력창에 아래와 같은 긴 출력물이 생산될 것이다.


> stepwise(LinearModel.2, direction='backward/forward', criterion='BIC')

Direction:  backward/forward
Criterion:  BIC 

Start:  AIC=406.37
prestige ~ women + type + income + education

            Df Sum of Sq    RSS    AIC
- women      1      2.29 4681.3 401.83
<none>                        4679.0 406.37
- type          2    583.08 5262.1 408.70
- income     1    803.92 5482.9 417.32
- education  1   1635.49 6314.5 431.16

Step:  AIC=401.83
prestige ~ type + income + education

            Df Sum of Sq    RSS    AIC
<none>                          4681.3 401.83
- type           2    591.16 5272.4 404.31
+ women      1       2.29 4679.0 406.37
- income      1   1058.77 5740.0 417.22
- education  1   1655.47 6336.7 426.92

Call:
lm(formula = prestige ~ type + income + education, data = Prestige)

Coefficients:
 (Intercept)     type[T.prof]    type[T.wc]        income     education  
   -0.622929      6.038971     -2.737231      0.001013      3.673166  


출력내용 중에서 아래의 내용을 주의깊게 살펴보자.

Linux 사례 (MX 21)

Start: AIC=406.37은 LinearModel.2의 값으로, 최초의 문제의식이 담긴 설명변수 네개를 모두 포함하고 있다. 그 밑에 있는 차례로 삭제될 변수들 중에서 '- women'의 AIC값은 401.83으로 LinearModel.2의 AIC값 406.37보다 작다. women을 설명변수 목록에서 뺀 모형이 더 적합도가 높다는 뜻이다.

 

그래서 나온 다음 단계가 'Step: AIC=401.83'이다. 그 아래의 삭제될 변수의 AIC값들은 모두 401.83보다 높다. 추가로 변수를 삭제하지 않는 <none>의 AIC값, 다른 말로 하면 type + income + education 세개의 설명변수를 담고 있는 선형모델이 적합도가 가장 높다는 뜻이다.

 

LinearModel.3 <- lm(prestige ~ type + income + education, data=Prestige)
summary(LinearModel.3)

Linux 사례 (MX 21)

위의 LinearModel.3에 대한 요약정보를 살펴보자. 설명변수로 선택된 type, income, education 중에서 type은 income, education과 달리 유의미한 설명력을 갖지 못한다. 그렇다면, type을 제거한 income과 education 두개의 설명변수를 가진 모형이 더 설명력이 높지 않을까하는 궁금증이 생길 수 있다. 하지만, type이 제거된 prestige ~ income + education의 AIC 값은 404.31로 prestige ~ type + income + education의 AIC 값인 401.83보다 크다. 따라서 모형 적합도 차원에서 보면, 유의미한 영향력을 행사하지 못하는 type 변수를 넣는 것이 바람직할 것이다.

 

그러나, 이러한 수리적인 차원의 모형 적합도 선별은 유의미한 영향력을 행사하는 변수들을 발견하거나, 또는 사전에 세운 가설을 확인하는 차원에서 선택된 설명 변수의 신뢰유의도를 검정하는 목적과 다른 맥락일 수 있다. 물론 상관계수의 크기에 대한 정교한 계산을 위하여 type 변수를 넣은 모형을 선택할 수 있으나, 보다 광의적으로 생각하면 분석 대상으로 들어온 데이터셋 자체가 가지는 한계(크기, 모집단 반영, 향후 미래적 예측력)가 있기 때문에 사회과학 입장에서 매우 예민하게 고민할 필요가 있을까라는 질문을 받을 수 있다.


한편, '단계적 모델 선택...'기능에서 'BIC'가 선택된 기본설정을 그대로 사용하였음에도 불구하고, 분석의 내용에는 모두 AIC로 되어 있다. 이 상황에 대한 설명은 stepwise() 함수의 도움말에 나와있다:

?stepwise    # RcmdrMisc 패키지에 포함된 함수로서, 먼저 Rcmdr 패키지가 호출된 상황임을 전제한다.

+ Recent posts