회귀분석, 변수 자동 선별: FWDSelect
y가 하나, x가 여러 개....
주어진 y를 가장 잘 설명할 수 있는 임의 개수의 x를 선별하고 싶다고 하자.
주어진 y를 가장 잘 설명할 수 있는 임의 개수의 x를 선별하고 싶다고 하자.
1. FWDSelect 설치
R> install.packages("FWDselect")
2. Sample Code
2.1. 패키지 부르기, 데이터 준비
R> library(FWDselect)
R> data("diabetes")
R> y <- diabetes[,1] #y변수
R> x <- diabetes[,2:11] #x변수, 모두 10개
2.2. 변수 선택
R> obj_selected <- selection(x,y,q=2) #x변수 2개 선택
기본적으로 변수를 선택할 때 deviance 기준, gaussian 족을 선택한다. 그런데 deviance 기준 이외에 R 스퀘어나 잔차(residual variance) 혹은 정보량(AIC나 BIC)을 활용하고 싶다면,
R> obj_selected <- selection(x,y,q=2,criterion="variance")
criterion의 옵션을 variance, R2, aic, bic 등으로 변경한다.
마찬가지로, 회귀분석의 방법을 method = "lm" 으로 정할 수 있다. 해당 옵션은 lm, glm, gam이 있다.
잔차 가정을 정규분포 쪽으로 하려면 family="gaussian"이 된다(기본값). 이 옵션은 binomial, poisson으로 변경 가능하다.
2.3. 결과
R> obj_selected
****************************************************
Best subset of size q = 2 : bmi ltg
Information Criterion Value - deviance : 284631.7
****************************************************
x변수 중 bmi와 ltg가 선택되었다.
2.4. 차선 모형 포함
R> obj_selected <- selection(x,y,q=2,seconds = TRUE,nmodels = 4)
seconds를 TRUE로 하고 nmodels에 개수를 밝힌다.
결과는 다음과 같다.
> obj_selected
****************************************************
Best subset of size q = 2 : bmi ltg
Information Criterion Value - deviance : 284631.7
****************************************************
Aternative ( 1 ) subset of size q = 2 : map, bmi
Information Criterion Value - deviance : 318221.4
Aternative ( 2 ) subset of size q = 2 : tch, bmi
Information Criterion Value - deviance : 323156.7
Aternative ( 3 ) subset of size q = 2 : hdl, bmi
Information Criterion Value - deviance : 326948.7
Aternative ( 4 ) subset of size q = 2 : glu, bmi
Information Criterion Value - deviance : 332808.3
3. 적절한 변수의 개수
R> q_size = qselection(x,y,qvector=1:4)
변수를 4개까지 선택하도록 qvector=1:4로 설정한다.
R> q_size$selection
[1] bmi bmi, ltg bmi, ltg, map bmi, ltg, map, tc
결과의 효과를 보기 위하여 plotting을 할 수 있다.
R> plot(q_size)
2개 이후로는 실익이 별로 없다. 모형은 단순한 것이 최고다.
댓글
댓글 쓰기