/* Example 4.3.4.------ One-Sided Test */ proc iml; systol={-8, 7, -2, 0, -2, 0, -2, 1}; diastol={-1, 6, 4, 2, 5, 3, 4, 2}; x=systol||diastol; p=2; n=8; /* t-method */ xb=J(1,n,1/n)*x; winv=inv(x`*x); w0=vecdiag(sqrt(diag(x`*x))); a=winv*w0; s=(x-J(n,1,1)*xb)`*(x-J(n,1,1)*xb)/(n-1); t=sqrt(n)*a`*xb`/sqrt(a`*s*a); ta=tinv(0.95,7); print t ta; if t>ta then print "T > Ta: reject (based on t)"; else print "T < Ta: accept (based on t)"; /* M-method */ tt=0; do i=1 to p; ti=sqrt(n)*winv[,i]`*xb`/sqrt(winv[,i]`*s*winv[,i]); tt=max(tt,ti); end; M=max(t,tt); t0=tinv(1-0.05/(p+1), n-1); print M t0; if M > t0 then print "M > T0: reject (based on M)"; else print "M < T0: accept (based on M)"; /* u-method */ call eigen(v, H, winv); u=sqrt(n)*H*sqrt(diag(v))*H`*xb`; m=u<>0; ubsq=m`*m; uba=0.4392; /*from Table B.13 n=8, p=2*/ print ubsq uba; if ubsq>uba then print "UBSQ > UBa: reject (based on u)"; else print "UBSQ < UBa: accept (based on u)"; quit; T TA 1.2107594 2.3646243 t < ta: accept (based on t) M T0 5.5466096 2.6418597 M > T0: reject (based on M) UBSQ UBA 0.7693822 0.4392 UBSQ > UBa: reject (based on u)