통계학에서 행렬(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연습 200제 > 11. 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 |