/********************************************************* * Chapter 6 Exercise 6.19 in Johnson and Wichern 5th ed * * Comparison of Multivariate Mean Vectors * **********************************************************/ DM "output;clear;log;clear"; Options pagesize=50 linesize=80 PageNo=1 NoDate; OPTIONS FORMCHAR="|----|+|---+=|-/\<>*"; Title1 "Example 5.5 (Data Table 5.2)"; ODS HTML body= "p6_19-body.html" contents="p6_19-contents.html" frame= "p6_19-frame.html" page= "p6_19-page.html" headtext="Comparison of Multivariate Mean Vectors" anchor="p6_19"; Data p6_19; infile 'C:\Teaching\Math593\Data\T6-10.dat'; individual+1; Input Y1-Y3 truck $; label Y1='Fuel' Y2='Repair' Y3='Capital' truck='Truck Type'; title "Comparison of Multivariate Mean Vectors for Milk Transportation Data"; Proc IML; Use p6_19; Read ALL var{Y1 Y2 Y3} where(truck='gasoline') into X1; Read ALL var{Y1 Y2 Y3} where(truck='diesel') into X2; N1=NROW(X1); N2=NROW(X2); P=NCOL(X1); close p6_19; One1=SHAPE(1,N1,1); One2=SHAPE(1,N2,1); MeanVec1=(One1`*X1)/N1; MeanVec2=(One2`*X2)/N2; M1=REPEAT(MeanVec1,N1,1); M2=REPEAT(MeanVec2,N2,1); S1=(X1-M1)`*(X1-M1)/(N1-1); S2=(X2-M2)`*(X2-M2)/(N2-1); Spool=((N1-1)*S1+(N2-1)*S2)/(N1+N2-2); X1bar=MeanVec1`;X2bar=MeanVec2`; print X1bar ' ' X2bar, S1, S2, Spool; *Test under equal covariance matrices; T2=N1*N2/(N1+N2)*(X1bar-X2bar)`*inv(Spool)*(X1bar-X2bar); C=(((N1+N2-2)*P)/(N1+N2-P-1))*FINV(0.99, P, N1+N2-P-1); F=(N1+N2-P-1)/((N1+N2-2)*P)*T2; Pval=1-probF(F,P,(N1+N2-P-1)); print 'Test under equal covariance matrices'; print T2 C Pval; CV=inv(Spool)*(X1bar-X2bar); print 'Coeff vector for the linear combination most responsible for rejection'; print CV; *Test under unequal covariance matrices; T2=(X1bar-X2bar)`*inv(S1/N1+S2/N2)*(X1bar-X2bar); ChiSq=CINV(0.99, P); Pval=1-probChi(T2,P); print 'Test under unequal covariance matrices'; print T2 ChiSq Pval; Start SCI(a,Mean1,Mean2,S,level,P,N1,N2); *begin module named SCI; C=(((N1+N2-2)*P)/(N1+N2-P-1))*FINV(level, P, N1+N2-P-1); Margin=sqrt(C)*sqrt((a`*S*a)*(1/N1+1/N2)); D=Mean1-Mean2; LB=a`*D-Margin; UB=a`*D+Margin; contr=a`; Print contr ' ' LB UB; Finish; reset noprint; print 'Simultaneous Confidence Intervals'; Mean1=X1bar; Mean2=X2bar; S=Spool; a={1 0 0}`; Run SCI(a,Mean1,Mean2,S,.99,P,N1,N2);; *execute module SCI for various coefficient vectors; a={0 1 0}`; Run SCI(a,Mean1,Mean2,S,.99,P,N1,N2);; a={0 0 1}`; Run SCI(a,Mean1,Mean2,S,.99,P,N1,N2);; run; title 'Comparing two mean vectors using MANOVA'; PROC GLM data=p6_19; class truck; model Y1 Y2 Y3 = truck / nouni; contrast 'gasoline vs. diesel' truck 1 -1; manova h=truck / printe printh; run;