/****************************************************************
* 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;
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 "Data in Prob 1.4";
Data p1_4;
obs+1;
Input X1-X3;
Label X1="Sales"
X2="Profits"
X3="Assets";
DataLines;
126974 4224 173297
96933 3835 160893
86656 3510 83219
63438 3758 77734
55264 3939 128344
50976 1809 39080
39069 2946 38528
36156 359 51038
35209 2480 34715
32416 2413 25636
;
Proc Print DATA=p1_4; Id Obs; run;
title "Array of Descriptive Statistics for X1 & X2";
Proc IML;
Use p1_4;
Read ALL VAR{ X1 X2 } 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;
Title "X1 and X2 with distance";
Data pp1_4; merge p1_4 D2(RENAME=(COL1=D2));
Drop X3;
Proc Print data=pp1_4 NOOBS;
run;
Proc Sort data=pp1_4 out=sort_d2;
by D2;
run;
Title "Distances, normal quantiles, and chi-sq quantiles";
Data norm_p; set sort_d2;
NN=(_N_-.5)/10;
Z=PROBIT(NN); *Calculate Normal quantiles;
Xsq=CINV(NN,2); *Calculate Chi-sq quantiles;
drop obs NN X1 X2;
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;