/*********************************************** SAS EXAMPLE -- CORRELATION MULTIPLE REGRESSION COLLINEARITY DIAGNOSTICS FILENAME: multiple_regression.sas ************************************************/ options formdlim=" " pageno=1; title; libname labdata "c:\temp\labdata"; /*FIRST, EXAMINE CORRELATION MATRIX*/ TITLE "PEARSON CORRELATION MATRIX LISTWISE DELETION"; proc corr data=labdata.werner nomiss; var chol age calc uric alb wt wtalb; run; /*NEXT, SCATTERPLOT MATRIX TO GET SCATTER-PLOT MATRIX, YOU CAN USE INSIGHT: ANALYSIS > MULTIVARIATE(YX). CHOOSE CHOL CALC URIC AGE AS Y CLICK ON THE OUTPUT BUTTON AND CHOOSE > SCATTER-PLOT MATRIX*/ TITLE "PEARSON CORRELATION MATRIX PAIRWISE DELETION"; proc corr data=labdata.werner /*nomiss*/ nosimple; var chol age calc uric alb wt wtalb; run; TITLE1 "MULTIPLE REGRESSION ANALYSIS"; TITLE2 "WITH INFLUENCE DIAGNOSTICS"; ods trace on; proc reg data=labdata.werner; model chol = age calc uric alb wt / r influence stb tol vif collin; output out=outreg1 p=predict1 r=resid1 rstudent=rstud1 cookd = cookd1 dffits=dffits; plot rstudent. * predicted.; ods output OutputStatistics = OutputStat1; run;quit; ods trace off; TITLE "DESCRIPTIVES ON OUTPUT STATISTICS DATA SET FROM ODS"; proc means data=OutputStat1; run; TITLE "DESCRIPTIVES ON OUTREG1 DATA SET"; proc means data=outreg1; run; TITLE "CHECK DISTRIBUTION OF RESIDUALS"; proc univariate data=OutputStat1 plot normal; var studentresidual; histogram; qqplot / normal(mu=est sigma=est); run; TITLE "REMOVE OUTLIER FOR CHOLESTEROL"; TITLE2 "SENSITIVITY ANALYSIS"; proc reg data=labdata.werner; where chol > 50; model chol = age calc uric alb wt; run; quit; TITLE1 "MULTIPLE REGRESSION ANALYSIS"; TITLE2 "WITH COLLINEARITY"; proc reg data=labdata.werner; model chol = age calc uric alb wt / stb tol vif collin; run;