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

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 패키지가 호출된 상황임을 전제한다.

모델 > Bayesian 정보량 기준 (BIC)
Models > Bayesian Information Criterion (BIC)

Linux 사례 (MX 21)

메뉴가 비활성화되어 있다. 데이터를 불러와도 비활성화된 상태가 유지된다.

Linux 사례 (MX 21)

'모델 > Bayesian 정보량 기준 (BIC)' 메뉴는 모형이 만들어진 이후에 사용할 수 있기 때문이다. datasets 패키지에 있는 swiss 데이터셋을 이용하여 연습해보자.

https://rcmdr.tistory.com/184

 

swiss 데이터셋

Dataset_info > swiss data(swiss, package="datasets") # swiss 데이터셋 불러오기 summary(swiss) # swiss 데이터셋 요약정보보기 str(swiss) # swiss 데이터셋 구조살펴보기 데이터셋의 내부는 다음과 같다:..

rcmdr.kr

datasets 패키지에 있는 swiss 데이터셋은 1880년대 스위스 지방의 출산율과 사회경제적인 요인들에 대한 정보를 담고있다. 출산율(Fertility)에 영향을 미치는 요인들을 찾고, 설명력 높은 모형을 선택하고자 하는 과정이 필요하다. 다중회귀분석 기법을 활용한 선형모델을 만들고 계산하였다고 가정하자.

LinearModel.1 <- lm(Fertility ~ Agriculture + Catholic + Education + Examination + 
  Infant.Mortality, data=swiss)
LinearModel.2 <- lm(Fertility ~ Agriculture + Catholic + Education + Infant.Mortality, 
  data=swiss)
summary(LinearModel.1)
summary(LinearModel.2)

LinearModel.1과 LinearModel.2를 비교해보면, 설명변수에 Examination이 포함되어 있는가 여부이다. Examination 변수는 스위스의 지방별로 'draftees receiving highest mark on army examination'의 %를 사례값으로 담고 있다. 두 모형의 분석결과, 특히 Examination 변수의 유무에 따른 차이를 꼼꼼히 살펴보자.

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

LinearModel.1을 살펴보면, Examination 변수는 Fertility 변수에 유의미한 영향력을 미친다고 보기 어렵다. 그렇다면, LinearModel.1과 LinearModel.2에서 어느 모형을 선택해야 하는가? 두 모형의 Multiple R-squared, Adjusted R-squared, F-statistic, p-value 등은 작은 차이를 나타낸다.

 

이 때 사용하는 방법의 하나가 Bayesian 정보량 기준 (BIC)이다. 'When comparing models fitted by maximum likelihood to the same data, the smaller the AIC or BIC, the better the fit.' 최대우도 또는 최대가능도 기법을 통하여 모형들을 비교할 때, 상대적으로 작은 값이 보다 적합도가 높다는 뜻이다. 결국 LinearModel.1과 LinearModel.2에서 어느 모형의 BIC 값이 더 작은가를 확인하여 보다 적합도가 높은 모형을 선택하고자 하는 것이다.

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

LinearModel.2의 BIC 값이 LinearModel.1의 BIC 값보다 미세하지만 더 작다. LinearModel.2가 더 적합도가 높은 모형이다라고 할 수 있다. 1880년대 스위스 지방의 출산율(Fertility)에 관한 사회경제적 요인들을 찾고, 설명변수들의 영향력을 점검할 때 Examination 변수를 제외한 모형을 사용하는 것이 바람직하다는 선택으로 이끌게 된다.

?BIC   # Bayesian 정보량 기준 (BIC) 도움말 보기

https://rcmdr.tistory.com/185

 

Akaike Information Criterion (AIC)

모델 > Akaike 정보량 기준 (AIC) Models > Akaike Information Criterion (AIC) 메뉴가 비활성화되어 있다. 데이터를 불러와도 비활성화된 상태가 유지된다. '모델 > Akaike 정보량 기준 (AIC)' 메뉴는 모형이..

rcmdr.kr

 

모델 > Akaike 정보량 기준 (AIC)

Models > Akaike Information Criterion (AIC)

Linux 사례 (MX 21)

메뉴가 비활성화되어 있다. 데이터를 불러와도 비활성화된 상태가 유지된다.

Linux 사례 (MX 21)

'모델 > Akaike 정보량 기준 (AIC)' 메뉴는 모형이 만들어진 이후에 사용할 수 있기 때문이다. datasets 패키지에 있는 swiss 데이터셋을 이용하여 연습해보자.

https://rcmdr.tistory.com/184

 

swiss 데이터셋

Dataset_info > swiss data(swiss, package="datasets") # swiss 데이터셋 불러오기 summary(swiss) # swiss 데이터셋 요약정보보기 str(swiss) # swiss 데이터셋 구조살펴보기 데이터셋의 내부는 다음과 같다:..

rcmdr.kr

datasets 패키지에 있는 swiss 데이터셋은 1880년대 스위스 지방의 출산율과 사회경제적인 요인들에 대한 정보를 담고있다. 출산율(Fertility)에 영향을 미치는 요인들을 찾고, 설명력 높은 모형을 선택하고자 하는 과정이 필요하다. 다중회귀분석 기법을 활용한 선형모델을 만들고 계산하였다고 가정하자.

LinearModel.1 <- lm(Fertility ~ Agriculture + Catholic + Education + Examination + 
  Infant.Mortality, data=swiss)
LinearModel.2 <- lm(Fertility ~ Agriculture + Catholic + Education + Infant.Mortality, 
  data=swiss)
summary(LinearModel.1)
summary(LinearModel.2)

LinearModel.1과 LinearModel.2를 비교해보면, 설명변수에 Examination이 포함되어 있는가 여부이다. Examination 변수는 스위스의 지방별로 'draftees receiving highest mark on army examination'의 %를 사례값으로 담고 있다. 두 모형의 분석결과, 특히 Examination 변수의 유무에 따른 차이를 꼼꼼히 살펴보자.

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

LinearModel.1을 살펴보면, Examination 변수는 Fertility 변수에 유의미한 영향력을 미친다고 보기 어렵다. 그렇다면, LinearModel.1과 LinearModel.2에서 어느 모형을 선택해야 하는가? 두 모형의 Multiple R-squared, Adjusted R-squared, F-statistic, p-value 등은 작은 차이를 나타낸다.

 

이 때 사용하는 방법의 하나가 Akaike 정보량 기준 (AIC)이다. 'When comparing models fitted by maximum likelihood to the same data, the smaller the AIC or BIC, the better the fit.' 최대우도 또는 최대가능도 기법을 통하여 모형들을 비교할 때, 상대적으로 작은 값이 보다 적합도가 높다는 뜻이다. 결국 LinearModel.1과 LinearModel.2에서 어느 모형의 AIC 값이 더 작은가를 확인하여 보다 적합도가 높은 모형을 선택하고자 하는 것이다.

 

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

LinearModel.2의 AIC 값이 LinearModel.1의 AIC 값보다 미세하지만 더 작다. LinearModel.2가 더 적합도가 높은 모형이다라고 할 수 있다. 1880년대 스위스 지방의 출산율(Fertility)에 관한 사회경제적 요인들을 찾고, 설명변수들의 영향력을 점검할 때 Examination 변수를 제외한 모형을 사용하는 것이 바람직하다는 선택으로 이끌게 된다.

?AIC     # AIC 함수에 관한 도움말보기

https://rcmdr.tistory.com/186

 

Bayesian Information Criterion (BIC)

모델 > Bayesian 정보량 기준 (BIC) Models > Bayesian Information Criterion (BIC) 메뉴가 비활성화되어 있다. 데이터를 불러와도 비활성화된 상태가 유지된다. '모델 > Bayesian 정보량 기준 (BIC)' 메뉴는..

rcmdr.kr

 

+ Recent posts