반응형

[R] 선형 회귀 분석의 모델 최적화 : 전진 선택법, 후진 제거법 - lm(), step()

 

 앞선 글에서 여러 개의 변수를 넣고 선형 회귀 분석을 하는 방법까지 소개하였다. 하지만 여기에는 큰 문제가 있는데, 바로 "어떤 교란 변수까지 모델에 넣을 것인가?"라는 질문이다. 이에 대한 방법은 여럿이 소개되어 있다.

1) 단변량 분석에서 유의하게 나온 변수를 모델에 넣는다. 이때 유의 수준은 기존의 0.05보다 덜 보수적인 0.1 혹은 0.2로 책정될 수도 있다.

2) 본인이 갖고 있는 데이터로 시행한 단변량 분석에서 유의하지 않더라도 과거 문헌상 고려되어야만 하는 교란 변수라면 공변량으로 넣는다.

3) 하나의 공변량을 추가로 넣을 때 Estimate를 크게 변화시키지 않으면서 신뢰구간만 넓히게 된다면 굳이 공변량을 넣지 마라.

4) Interaction term을 쓴다면 Hierachically well formulated model을 쓰기 위해 가능한 모든 변수들의 조합을 공변량으로 넣어라.

5) 전진 선택법 혹은 후진 제거법을 이용하여 변수를 선택하라.

 

당장 생각나는 것은 이 정도인데 아마도 더 많은 방법론들이 존재할 것이다. 이번 포스팅에서는 위 중 5번째에 속하는 "전진 선택법(Forward selection)"과 "후진 제거법(Backward elimination)"을 소개할 것이다.

 

전진 선택법과 후진 제거법

 전진 선택법은 어떠한 독립 변수도 없는 모델 (null model)에서 시작하여 가장 유의한 변수부터 하나씩 추가하며 AIC (Akaike's Information Criterion)가 최소화되는 조합을 찾아내는 방법이다. AIC는 회귀 분석에서 독립 변수들이 종속 변수를 얼마나 잘 설명하는지 평가하는 동시에 모델이 얼마나 간단한지도 평가하는 도구인데 자세한 내용은 다음 링크를 확인하길 바란다. (링크 추가 예정) 

 후진 제거법은 분석가가 지정한 모든 독립 변수를 포함한 모델에서 시작하여 제일 쓸모없는 변수를 하나씩 제거해보며 AIC를 최소화하는 조합을 찾아내는 방법이다.

 

*실습용 데이터는 아래 링크를 클릭하면 다운로드할 수 있습니다.

2022.08.04 - [공지사항 및 소개] - 분석용 데이터 (update 22.12.18)

 

분석용 데이터 (update 22.12.18)

2022년 12월 18일 버전입니다. 변수는 계속하여 추가될 예정입니다. 다음 카테고리에 있는 글에서 이용된 데이터입니다. - 기술 통계 - 범주형 자료 분석 - 모평균 검정 - 상관분석 - 반복 측정 자료

medistat.tistory.com

 

코드를 보여드리기에 앞서 워킹 디렉토리부터 지정하겠다.

워킹 디렉토리에 관한 설명은 다음 링크된 포스트에서 볼 수 있다.

2022.08.05 - [통계 프로그램 사용 방법/R] - [R] 작업 디렉토리 (Working Directory) 지정 - getwd(), setwd()

setwd("C:/Users/user/Documents/Tistory_blog")

 

데이터를 불러와 df에 객체로 저장하겠다.

데이터 불러오는 방법은 다음 링크에서 볼 수 있다.

2022.08.05 - [통계 프로그램 사용 방법/R] - [R] 데이터 불러오기 : EXCEL - read_excel(), read.xlsx()

2022.08.10 - [통계 프로그램 사용 방법/R] - [R] 데이터 저장하기 : CSV 파일 - write.csv(), write_csv()

2022.08.10 - [통계 프로그램 사용 방법/R] - [R] 데이터 불러오기 : SAS file (.sas7bdat) - read.sas7bdat(), read_sas()

install.packages("readr")
library("readr")
df<-read_csv("Data.csv")

 

목표:  심혈관 질환 위험 점수 (CVD_RISK)를 예측하는 변수로 수축기 혈압 (SBP), BMI, 흡연 상태 (SMOK)를 고려하되, 전진 선택법과 후진 제거법을 이용하여 최적의 모델을 구성하는 공변량의 조합을 찾아라.

이전에 SBP, BMI, SMOK를 고려한 선형 회귀 분석에서 SMOK는 유의하지 않은 결과를 냈다(2022.12.23 - [선형 회귀 분석/R] - [R] 다중 선형 회귀 분석 (Multiple linear regression) - lm(), factor()). 전진 선택법과 후진 선택법이 제대로 작동한다면 SMOK는 최종 모델에 들어가지 않는 것이 적절할 것이다. 과연 그런지 확인해보도록 하겠다.

1) 전진 선택법

코드

전진 선택법을 위해서는 어떠한 독립 변수도 없는 모델(null model)을 먼저 지정해주어야 한다.

Null<-lm(CVD_RISK~1, data=df)

Null<-lm(CVD_RISK~1, data=df) : 종속 변수에 CVD_RISK를 넣고 독립 변수에는 어떠한 변수도 없는 선형 회귀 모델을 구축하여 Null이라는 객체에 저장한다. 종속 변수에 1이라고 적으면 어떠한 독립 변수도 존재하지 않는 모델을 의미하는 것이다.

 

#SMOK는 범주형 변수임을 미리 선언한다.
df$SMOK<-factor(df$SMOK)

Forward<-step(Null, direction="forward", scope=(CVD_RISK~SBP+BMI+SMOK))
summary(Forward)

Forward<-step(Null, direction="forward", scope=(CVD_RISK~SBP+BMI+SMOK))

  : Null이라는 모델을 가져와서, 전진 선택법(direction="forward")으로 변수를 선택할 것인데, 아무리 변수가 많이 선택되어도 SBP, BMI, SMOK까지만 들어간다. 최종 모델을 Forward에 저장한다.
summary(Forward) : 최종 모델을 보여달라.

 

결과

Call:
lm(formula = CVD_RISK ~ SBP + BMI, data = df)

Residuals:
     Min       1Q   Median       3Q      Max 
-17.3967  -3.7096   0.0512   3.4044  15.9551 

Coefficients:
            Estimate Std. Error t value Pr(>|t|)    
(Intercept) 14.36106    1.83287   7.835 1.19e-14 ***
SBP          0.99389    0.01931  51.478  < 2e-16 ***
BMI          1.08243    0.17174   6.303 4.38e-10 ***
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 5.079 on 997 degrees of freedom
Multiple R-squared:  0.9393,	Adjusted R-squared:  0.9392 
F-statistic:  7712 on 2 and 997 DF,  p-value: < 2.2e-16

맨 윗줄 "Call:"을 보면, SBP와 BMI만 모델에 들어간 것을 알 수 있다.

 

 

2) 후진 제거법

코드

Full<-lm(CVD_RISK~SBP+BMI+SMOK, data=df)
Back<-step(Full, direction="backward")
summary(Back)

Full<-lm(CVD_RISK~SBP+BMI+SMOK, data=df) : 먼저, 다중 선형 회귀 분석을 이전 포스팅과 같이 시행하겠다. (2022.12.23 - [선형 회귀 분석/R] - [R] 다중 선형 회귀 분석 (Multiple linear regression) - lm(), factor())
Back<-step(Full, direction="backward") :  Full이라는 모델을 가져와서, 후진 제거법(direction="backward")으로 변수를 제거하며 최적 모델을 선정하고 Back에 저장한다.
summary(Back) : 최종 모델을 보여달라.

 

결과

Call:
lm(formula = CVD_RISK ~ SBP + BMI, data = df)

Residuals:
     Min       1Q   Median       3Q      Max 
-17.3967  -3.7096   0.0512   3.4044  15.9551 

Coefficients:
            Estimate Std. Error t value Pr(>|t|)    
(Intercept) 14.36106    1.83287   7.835 1.19e-14 ***
SBP          0.99389    0.01931  51.478  < 2e-16 ***
BMI          1.08243    0.17174   6.303 4.38e-10 ***
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 5.079 on 997 degrees of freedom
Multiple R-squared:  0.9393,	Adjusted R-squared:  0.9392 
F-statistic:  7712 on 2 and 997 DF,  p-value: < 2.2e-16

전진 선택법과 같은 결과를 내주는 것을 볼 수 있다. 

 

하지만 두 방법이 꼭 같은 결과를 내는 것은 아니다. 서로 다른 결과를 낼 수 있음에 유의하길 바란다. 

 

[R] 선형 회귀 분석의 모델 최적화 : 전진 선택법, 후진 제거법 정복 완료!

작성일: 2022.12.23.

최종 수정일: 2022.12.23.

이용 프로그램: R 4.2.2

RStudio v2022.07.2

RStudio 2022.07.2+576 "Spotted Wakerobin" Release

운영체제: Windows 10, Mac OS 12.6.1

반응형

+ Recent posts