사이트맵  |  Contact Us
 
홈 > SAS Tech & Tip > SAS Programming
[SAS 프로그래밍] Restricted Cubic Regression 2019.09.07
박세훈 68 0
http://www.mysas.co.kr/sas_tiptech/a_question.asp?b_no=11174&cmd=content&bd_no=5

Restricted cubic Regression

 

1. Introduction

안녕하세요. 박세훈입니다. 지금까지 많은 회귀 모형들을 다뤄봤는데요, 오늘은 비선형 회귀모형의 한 종류인 Restricted cubic을 적용한 회귀에 대해 배워보겠습니다. 실제 상황에서 데이터는 비선형인 경우가 굉장히 많습니다. 이 경우 Restricted Cubic이라는 방법론을 사용하여 비선형 적합을 할 수 있습니다. 본 실습에선 sashelp 라이브러리에서 제공하는 Cars데이터를 사용하겠습니다.

 

2.  Data

자동차 데이터로, 각 자동차의 제조사와 무게, 모델,가격 , MPG(city & Highway)등을 담고 있습니다. Sashelp 라이브러리에서 쉽게 찾을 수 있습니다.

<code1>

 

/* 샘플 데이터 생성 정렬 ;*/

proc sort data=sashelp.cars  

          out=cars(keep=mpg_city weight model);

by weight;

run;

 

3. 모델링

 

3.1 EFFECT 문의 사용

<code2>

/* Restricted cubic 평활화를 사용하여 데이터를 적합합니다..

   The EFFECT 문은 다음과 같이 다양한 프록시져에서 지원됩니다.

   GLIMMIX, GLMSELECT, LOGISTIC, PHREG, PLS, QUANTREG, ROBUSTREG, ... */

ods select ANOVA ParameterEstimates SplineKnots;

proc glmselect data=cars;

  effect spl = spline(weight / details naturalcubic basis=tpf(noint)                

                               knotmethod=percentiles(5) );

   model mpg_city = spl / selection=none; /*모델 생성종속변수에 spl 대입*/

   output out=SplineOut predicted=Fit; /* 예측 값을 Fit 저장*/

quit;

 

Restricted Cubic Spline의 핵심은 Effect문의 사용에 있습니다. Effect문은 여러가지 프록시져에서 사용이 가능하고, 응답 변수의 종류(EX 이산형 응답 변수일 경우 PROC LOGISTIC에 적용 가능)에 따라 스플라인이 가능합니다.

 

Effect 문에서 스플라인 함수를 기재한 뒤, details naturalcubic basis=tpf(noint)문을 사용하여 평활화 방법 중 Cubic Spline을 사용할 것을 지정합니다 여기서 noint 옵션은 필수로 지정하는 건 아니지만 매개변수 추정을 단순화 시키므로 권장합니다.

 

Knot Number knot method 수에 따라 위치가 지정 되며, 매듭 수에 따라 위의 테이블처럼 다항 회귀로 적합됩니다. 예를 들어, Knot method 10으로 할 경우 회귀 계수는 spl1~spl9까지 생성됩니다.

 

3.2 Visualization

proc sgplot data=SplineOut noautolegend;

   scatter x=X y=Y;

   series x=X y=Fit / lineattrs=(thickness=3 color=red);

run;

위의 <code2>에서 knotmethod는 매듭 스플라인 수를 의미하는데, 숫자가 커질 여러개의 매듭이 생성됩니다.

 

좌측은 매듭(knotmethod) 5로 설정한 그래프이고, 우측은 100으로 설정한 경우 입니다.

 

 

3.3 응용

그러면 매번 평활화 기법을 사용할 때마다 데이터를 함수로 적합시켜야 할까요? Outdsign 기능을 사용하여 외부 설계 행렬을 만들어 봅시다.

 

/*splinebasis 담고 있는  SplineBasis 데이터 생성  */

proc glmselect data=cars outdesign(addinputvars fullmodel)=SplineBasis;

   effect spl = spline(weight / naturalcubic basis=tpf(noint) knotmethod=percentiles(5));

   model mpg_city = spl / selection=none; 

quit;

위와 같이 Resticted Cubic spline이 적용된 모델을 외부 데이터 셋으로 뽑아봤습니다.

 

4. Conclusion

Restricted cubic 스플라인은 선형 회귀 모델을 비선형 관계에 적합시키는 유용한 기법입니다. 다양한 spline 기법을 통해, 빅데이터 시대에 여러가지 모양의 데이터를 다뤄봤으면 좋겠습니다.

 

 
 
휴대폰 번호
휴대폰 인증번호
 
 [SAS 프로그래밍] Histogram Overlay
 [SAS 프로그래밍] Quantile Regression 실습