/**************************************************************** * * Assessing Normality assumption: Univariate and Multivariate * *****************************************************************/ DM "output;clear;log;clear"; Options pagesize=45 linesize=80 PageNo=1 NoDate; OPTIONS FORMCHAR="|----|+|---+=|-/\<>*"; *To make your document display correctly without SAS Monospace font; Title1 "Example 4.12 & 4.13"; ODS HTML body= "norm-body.html" contents="norm-contents.html" frame= "norm-frame.html" page= "norm-page.html" headtext="Assessing Normality Assumption" anchor="norm"; * HTML files are to be saved in, for example, C:\Program Files\SAS\SAS 9.1; title "Normal Assessement"; Proc IML; N=100; Mu={1 2 3 4}; Cov={3 2 1 1, 2 5 3 2, 1 3 2 1, 1 2 1 3}; Call VNORMAL(mymat, Mu, Cov, N, 1234); Create mydata1 from mymat (|colname={X1 X2 X3 X4}|); Append from mymat; run; quit; Proc IML; Use mydata1; Read ALL into X; N=NROW(X); One=SHAPE(1,N,1); MeanVec=(One`*X)/N; *Calculate Mean Vector; M=REPEAT(MeanVec,N,1); Sigma=(X-M)`*(X-M)/(N-1); *Calculate Cov Matrix; Dis=VECDIAG((X-M)*INV(Sigma)*(X-M)`); *Calculate stat distance; print MeanVec; print Sigma; print Dis; CREATE D2 FROM Dis; APPEND FROM Dis; run; Data mydata2; merge mydata1 D2(RENAME=(COL1=D2)); run; Proc Sort data=mydata2 out=sort_d2; by D2; run; Title "Distances, normal quantiles, and chi-sq quantiles"; Data norm_p; set sort_d2; N=100; NN=(_N_-.5)/N; Z=PROBIT(NN); *Calculate Normal quantiles; Xsq=CINV(NN,2); *Calculate Chi-sq quantiles; drop obs NN X1 X2 X3 X4; Proc print data=norm_p;run; Proc GPLOT data=norm_p; title 'Normal Probability Plot'; Plot D2*Z / HAXIS=AXIS1 VAXIS=AXIS2 VREF=0; AXIS1 Label=('Standard Normal') ORDER=-2 to 2 by 1; AXIS2 Label=('Squared Distance'); Footnote J=L 'Data Prob. 1.4'; run; Proc GPLOT data=norm_p; title 'Chi-sq Probability Plot'; Plot D2*Xsq / HAXIS=AXIS1 VAXIS=AXIS2 VREF=0; AXIS1 Label=('Chi-square') ORDER=0 to 7 by 1; AXIS2 Label=('Squared Distance'); Footnote J=L 'Data Prob. 1.4'; run; ODS HTML Close; /**************************************************************** * Chapter 4 Example 4.12, 4.13 in Johnson and Wichern 5th ed * * Assessing Normality assumption: Univariate and Bivariate * *****************************************************************/ DM "output;clear;log;clear"; Options pagesize=45 linesize=80 PageNo=1 NoDate; OPTIONS FORMCHAR="|----|+|---+=|-/\<>*"; *To make your document display correctly without SAS Monospace font; ODS HTML body= "norm-body.html" contents="norm-contents.html" frame= "norm-frame.html" page= "norm-page.html" headtext="Assessing Normality Assumption" anchor="norm"; * HTML files are to be saved in, for example, C:\Program Files\SAS\SAS 9.1; title "Normal Assessment"; Proc IML; N=100; Mu={1 2 3 4}; Cov={3 2 1 1, 2 5 3 2, 1 3 2 1, 1 2 1 3}; Call VNORMAL(mymat, Mu, Cov, N, 1234); Create mydata1 from mymat (|colname={X1 X2 X3 X4}|); Append from mymat; run; quit; Proc IML; Use mydata1; Read ALL into X; N=NROW(X); One=SHAPE(1,N,1); MeanVec=(One`*X)/N; *Calculate Mean Vector; M=REPEAT(MeanVec,N,1); Sigma=(X-M)`*(X-M)/(N-1); *Calculate Cov Matrix; Dis=VECDIAG((X-M)*INV(Sigma)*(X-M)`); *Calculate stat distance; print MeanVec; print Sigma; print Dis; CREATE D2 FROM Dis; APPEND FROM Dis; run; quit; Data mydata2; merge mydata1 D2(RENAME=(COL1=D2)); run; Proc Sort data=mydata2 out=sort_d2; by D2; run; Title "Distances, normal quantiles, and chi-sq quantiles"; Data norm_p; set sort_d2; N=100; NN=(_N_-.5)/N; Z=PROBIT(NN); *Calculate Normal quantiles; Xsq=CINV(NN,2); *Calculate Chi-sq quantiles; drop obs NN X1 X2 X3 X4; Proc print data=norm_p;run; Proc GPLOT data=norm_p; title 'Normal Probability Plot'; Plot D2*Z / HAXIS=AXIS1 VAXIS=AXIS2 VREF=0; AXIS1 Label=('Standard Normal') ORDER=-2 to 2 by 1; AXIS2 Label=('Squared Distance'); Footnote J=L 'random sample from N4'; run; Proc GPLOT data=norm_p; title 'Chi-sq Probability Plot'; Plot D2*Xsq / HAXIS=AXIS1 VAXIS=AXIS2 VREF=0; AXIS1 Label=('Chi-square') ORDER=0 to 7 by 1; AXIS2 Label=('Squared Distance'); Footnote J=L 'random sample from N4'; run; ODS HTML Close;