728x90

통계학에서 행렬(MATRIX) 가장 많이 접하게 되는 부분이 아마 회귀분석일 것입니다. 그리하여 SAS/IML을 이용하여 회귀분석을 하여 보겠습니다. 많은 사람들이 SAS/IML을 사용할 경우가 별로 없지만 SAS/IML을 사용하여 SAS프로그램을 개발해야 하는 경우 SAS에서 제공하는 샘플프로그램을 살펴보는 것이 가장 빠릅니다.

SAS가 설치된 폴더에서 c:\Program Files\SAS Institute\SAS\V8\iml\sample 로 가 보면 여러 가지 샘플이 있습니다.

저자는 실제 프로젝트에서 회귀분석 기법 중 Stepwise Regression 프로빗모형 개발에 유용하게 적용하였으며 SAS/IML을 이해하는 데에도 많은 도움이 되었습니다.

 

/* -------------------------------------------------------*/

/* SAS/IML을 이용한 회귀분석 프로그램 12_iml.sas */

/* ------------------------------------------------------*/

1 PROC IML;

2 x={1 1, 1 2,1 3, 1 4, 1 6, 1 7};

3 y={21, 32, 43, 56, 67, 76};

 

4 xpx=x'*x; /* cross-products */

5 xpy=x'*y;

 

6 xpxi=INV(xpx); /* inverse crossproducts */

7 beta=INV(x'*x)*x'*y; /* parameter estimates */

8 yhat=x*beta;

9 resid=y-yhat;

10 sse = SSQ(resid); /* sum of squares error */

 

11 n=NROW(x); /* number of observations */

12 k=NCOL(x); /* number of variables */

 

13 dfe = n-k; /* degrees of freedom error */

14 mse = sse/dfe; /* mean square error */

15 rmse = SQRT(mse); /* root mean square error */

16 rsquare = 1-sse/((y-y [:])[##]);

 

17 PRINT,,'Regression Analysis',,'Residual Error:'

18 sse dfe mse rmse rsquare;

 

19 covb = INV(x'*x)#mse;

20 stderr = SQRT(VECDIAG(covb)) ; /* std error of estimates */

21 tratio = beta/stderr; /* test for parameter=0 */

22 probt=1-PROBF(tratio##2,1,dfe); /* significance probability */

23 PRINT ,,'Regression Parameter Estimates ',,

24 beta stderr tratio probt;

25 RUN;

 

IML의 결과를 보면 PROC REG의 결과와 같음을 알 수 있습니다.

'SAS, R, Python 일반 > 12. SAS_IML' 카테고리의 다른 글

(S1)제12강(1.1) SAS에서 R 실행하기  (0) 2021.01.19
12.0 SAS/IML 목차  (0) 2020.08.06
12.5 (2) SAS/IML 예제를 R로 하기  (0) 2020.07.10
12.2. SAS/IML 사용법 기초(s1)  (0) 2020.07.10
12.1 SAS/IML 이란?  (0) 2020.06.27

+ Recent posts