/* ==================================== SAS EXAMPLES ON PRINCIAP COMPONENTS ANALYSIS ======================================*/ /* In SAS, you may perform a principal component analysis using either the PRINCOMP or FACTOR Procedures */ /* ========================= EXAMPLE 1: PCA BASED ON RAW DATA ===========================*/ dm log 'clear'; dm output 'clear'; options nodate; data PCA; input X1 X2 X3 X4 X5 X6 X7 X8; datalines; 6 7 2 5 8 7 8 8 9 10 5 8 10 9 9 10 7 8 3 6 9 8 9 7 5 6 8 5 6 5 9 2 6 8 8 8 4 4 9 5 7 7 7 6 8 7 10 5 9 9 8 8 8 8 8 8 9 9 9 8 9 9 8 8 9 9 7 8 8 8 8 5 4 7 10 2 10 10 7 10 4 7 10 0 10 8 3 9 4 7 10 4 10 10 7 8 6 9 8 10 5 4 9 4 8 9 8 9 6 3 8 2 4 8 8 7 5 4 10 2 6 9 5 7 8 9 8 9 8 7 7 7 9 5 8 6 6 8 8 4 8 8 6 4 6 7 8 4 7 8 5 4 4 8 7 8 8 9 10 5 ; PROC PRINCOMP DATA=PCA OUT=PCSCORES COVARIANCE n=8; /* The option n=2 retains only 2 principal components. */ VAR X1--X8; title 'Principal Component Analysis'; ods output eigenvalues=meigen; RUN; /* THE SCREE PLOT */ PROC PLOT DATA=meigen; PLOT eigenvalue * Number; run; PROC FACTOR DATA=PCA METHOD=PRIN NFACT=3 SCREE SIMPLE ROUND FLAG=.30 ; VAR X1--X8; TITLE2'Scree Plot of Eigenvalues'; RUN; PROC CORR DATA=D2; VAR FACTOR1 FACTOR2; WITH X1 X2 X3 X4 X5 X6 X7 X8 FACTOR1 FACTOR2; RUN; PROC PRINT DATA=PCSCORES; VAR prin1 prin2 prin3; TITLE2 'VALUES OF THE FIRST THREE PRINCIPAL COMPONENT SCORES'; RUN; proc univariate data=pcscores plot; var prin1 prin2; TITLE2 'Univariate Analysis on the first two Principal Components'; run; proc gplot data=pcscores; plot prin2*prin1; titles 'A Scatter Plot of the First Two Principal Component Scores'; run; quit; /* =========================================== EXAMPLE 2: PCA WITH CORRELATION MATRIX AS INPUT ============================================*/ DATA D1(TYPE=CORR) ; INPUT _TYPE_ $ _NAME_ $ V1-V12 ; CARDS; N . 300 300 300 300 300 300 300 300 300 300 300 300 STD . 2.48 2.39 2.58 3.12 2.80 3.14 2.92 2.50 2.10 2.14 1.83 2.26 CORR V1 1.00 . . . . . . . . . . . CORR V2 .69 1.00 . . . . . . . . . . CORR V3 .60 .79 1.00 . . . . . . . . . CORR V4 .62 .47 .48 1.00 . . . . . . . . CORR V5 .03 .04 .16 .09 1.00 . . . . . . . CORR V6 .05 -.04 .08 .05 .91 1.00 . . . . . . CORR V7 .14 .05 .06 .12 .82 .89 1.00 . . . . . CORR V8 .23 .13 .16 .21 .70 .72 .82 1.00 . . . . CORR V9 -.17 -.07 -.04 -.05 -.33 -.26 -.38 -.45 1.00 . . . CORR V10 -.10 -.08 .07 .15 -.16 -.20 -.27 -.34 .45 1.00 . . CORR V11 -.24 -.19 -.26 -.28 -.43 -.37 -.53 -.57 .60 .22 1.00 . CORR V12 -.11 -.07 .07 .08 -.10 -.13 -.23 -.31 .44 .60 .26 1.00 ; PROC FACTOR DATA=D1 METHOD=PRIN PRIORS=ONE MINEIGEN=1 SCREE ROTATE=VARIMAX ROUND FLAG=.40 ; VAR V1-V12; *VAR V1-V10 V12; /* IN ORDER TO HAVE A SIMPLER STRUCTURE */ RUN;