/****************************************************************
* * 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;