options ps=54 ls=76; data one; infile 'I:\sta6207\EMP10-1.DAT'; input A 13 B 26 C 39 Y 45-52; Y=log(Y); run; proc glm; class A B C; model Y=A C A*C B A*B C*B A*C*B / ss1 ss2 ss3; run; data two; set one; if A=1 then A1=1; else if A=8 then A1=-1; else A1=0; if A=2 then A2=1; else if A=8 then A2=-1; else A2=0; if A=3 then A3=1; else if A=8 then A3=-1; else A3=0; if A=4 then A4=1; else if A=8 then A4=-1; else A4=0; if A=5 then A5=1; else if A=8 then A5=-1; else A5=0; if A=6 then A6=1; else if A=8 then A6=-1; else A6=0; if A=7 then A7=1; else if A=8 then A7=-1; else A7=0; if B=1 then B1=1; else B1=-1; if C=1 then C1=1; else C1=-1; keep A1-A7 B1 C1 Y; run; * proc print; proc iml; use two; read all into ABCY; Y=ABCY(|,1|); INT=j(nrow(Y),1,1); A=ABCY(|,2:8|); B=ABCY(|,9|); C=ABCY(|,10|); AB=A#B; AC=A#C; BC=B#C; ABC=A#B#C; * print A B C AB; X1A=INT||A; X0A=INT; X1C=X1A||C; X1AC=X1C||AC; X1B=X1AC||B; X1AB=X1B||AB; X1BC=X1AB||BC; X1ABC=X1BC||ABC; T1A = Y`*X1A*INV(X1A`*X1A)*X1A`*Y - Y`*X0A*INV(X0A`*X0A)*X0A`*Y; T1C = Y`*X1C*INV(X1C`*X1C)*X1C`*Y - Y`*X1A*INV(X1A`*X1A)*X1A`*Y; T1AC = Y`*X1AC*INV(X1AC`*X1AC)*X1AC`*Y - Y`*X1C*INV(X1C`*X1C)*X1C`*Y; T1B = Y`*X1B*INV(X1B`*X1B)*X1B`*Y - Y`*X1AC*INV(X1AC`*X1AC)*X1AC`*Y ; T1AB = Y`*X1AB*INV(X1AB`*X1AB)*X1AB`*Y - Y`*X1B*INV(X1B`*X1B)*X1B`*Y; T1BC = Y`*X1BC*INV(X1BC`*X1BC)*X1BC`*Y - Y`*X1AB*INV(X1AB`*X1AB)*X1AB`*Y; T1ABC = Y`*X1ABC*INV(X1ABC`*X1ABC)*X1ABC`*Y - Y`*X1AB*INV(X1AB`*X1AB)*X1AB`*Y; print T1A T1C T1AC T1B T1AB T1BC T1ABC; X2A1=INT||B||C||BC||A; X2A2=INT||B||C||BC; X2C1=INT||A||B||AB||C; X2c2=INT||A||B||AB; X2AC1=INT||A||B||AB||C||AC||BC; X2AC2=INT||A||B||AB||C||BC; X2B1=INT||A||C||AC||B; X2B2=INT||A||C||AC; X2AB1=INT||A||C||AC||B||AB||BC; X2AB2=INT||A||C||AC||B||BC; X2BC1=INT||A||C||AC||B||AB||BC; X2BC2=INT||A||C||AC||B||AB; T2A = Y`*X2A1*INV(X2A1`*X2A1)*X2A1`*Y - Y`*X2A2*INV(X2A2`*X2A2)*X2A2`*Y; T2C = Y`*X2C1*INV(X2C1`*X2C1)*X2C1`*Y - Y`*X2C2*INV(X2C2`*X2C2)*X2C2`*Y; T2AC = Y`*X2AC1*INV(X2AC1`*X2AC1)*X2AC1`*Y - Y`*X2AC2*INV(X2AC2`*X2AC2)*X2AC2`*Y; T2B = Y`*X2B1*INV(X2B1`*X2B1)*X2B1`*Y - Y`*X2B2*INV(X2B2`*X2B2)*X2B2`*Y; T2AB = Y`*X2AB1*INV(X2AB1`*X2AB1)*X2AB1`*Y - Y`*X2AB2*INV(X2AB2`*X2AB2)*X2AB2`*Y; T2BC = Y`*X2BC1*INV(X2BC1`*X2BC1)*X2BC1`*Y - Y`*X2BC2*INV(X2BC2`*X2BC2)*X2BC2`*Y; T2ABC=T1ABC; print T2A T2C T2AC T2B T2AB T2BC T2ABC; X31=INT||A||C||AC||B||AB||BC||ABC; X3A2=INT||C||AC||B||AB||BC||ABC; X3C2=INT||A||AC||B||AB||BC||ABC; X3AC2=INT||A||C||B||AB||BC||ABC; X3B2=INT||A||C||AC||AB||BC||ABC; X3AB2=INT||A||C||AC||B||BC||ABC; X3BC2=INT||A||C||AC||B||AB||ABC; T3A = Y`*X31*INV(X31`*X31)*X31`*Y - Y`*X3A2*INV(X3A2`*X3A2)*X3A2`*Y; T3C = Y`*X31*INV(X31`*X31)*X31`*Y - Y`*X3C2*INV(X3C2`*X3C2)*X3C2`*Y; T3AC = Y`*X31*INV(X31`*X31)*X31`*Y - Y`*X3AC2*INV(X3AC2`*X3AC2)*X3AC2`*Y; T3B = Y`*X31*INV(X31`*X31)*X31`*Y - Y`*X3B2*INV(X3B2`*X3B2)*X3B2`*Y; T3AB = Y`*X31*INV(X31`*X31)*X31`*Y - Y`*X3AB2*INV(X3AB2`*X3AB2)*X3AB2`*Y; T3BC = Y`*X31*INV(X31`*X31)*X31`*Y - Y`*X3BC2*INV(X3BC2`*X3BC2)*X3BC2`*Y; T3ABC=T1ABC; print T3A T3C T3AC T3B T3AB T3BC T3ABC; stop; quit;