proc iml; start main; y={12, 9, 8, 5, 7, 5, 6, 8}; X={1, 1, 1, 1, 1, 1, 1, 1}; A={1 0 0 .5 .5 .5 .5 0 0 0 0, 0 1 0 .5 .5 .5 .5 .5 .5 .5 .5, 0 0 1 0 0 0 0 .5 .5 .5 .5, .5 .5 0 1 .5 .5 .5 .25 .25 .25 .25, .5 .5 0 .5 1 .5 .5 .25 .25 .25 .25, .5 .5 0 .5 .5 1 .5 .25 .25 .25 .25, .5 .5 0 .5 .5 .5 1 .25 .25 .25 .25, 0 .5 .5 .25 .25 .25 .25 1 .5 .5 .5, 0 .5 .5 .25 .25 .25 .25 .5 1 .5 .5, 0 .5 .5 .25 .25 .25 .25 .5 .5 1 .5, 0 .5 .5 .25 .25 .25 .25 .5 .5 .5 1}; AINV=INV(A); Z1={0 0 0 1 0 0 0 0 0 0 0, 0 0 0 0 1 0 0 0 0 0 0, 0 0 0 0 0 1 0 0 0 0 0, 0 0 0 0 0 0 1 0 0 0 0, 0 0 0 0 0 0 0 1 0 0 0, 0 0 0 0 0 0 0 0 1 0 0, 0 0 0 0 0 0 0 0 0 1 0, 0 0 0 0 0 0 0 0 0 0 1}; Z2={0 0 0 0 1 0 0 0 1 1 0, 0 0 0 1 0 0 0 0 1 1 0, 0 0 0 0 0 0 1 1 0 0 1, 0 0 0 0 0 1 0 1 0 0 1, 0 0 0 0 0 1 1 0 0 0 1, 0 0 0 1 1 0 0 0 0 1 0, 0 0 0 1 1 0 0 0 1 0 0, 0 0 0 0 0 1 1 1 0 0 0}; Z3={0 1 0 0 0 1 1 0, 1 0 0 0 0 1 1 0, 0 0 0 1 1 0 0 1, 0 0 1 0 1 0 0 1, 0 0 1 1 0 0 0 1, 1 1 0 0 0 0 1 0, 1 1 0 0 0 1 0 0, 0 0 1 1 1 0 0 0}; I8=I(8); *IDENTITY MATRIX; P={30 -4, -4 10}; K=inv(P)#60; K33=60#(1/6); LHS=((X`*X) ||(X`*Z1) ||(X`*Z2) ||(X`*Z3)) //((Z1`*X)||(Z1`*Z1+AINV#K[1,1])||(Z1`*Z2+AINV#K[1,2])||(Z1`*Z3)) //((Z2`*X)||(Z2`*Z1+AINV#K[2,1])||(Z2`*Z2+AINV#K[2,2])||(Z2`*Z3)) //((Z3`*X)||(Z3`*Z1) ||(Z3`*Z2) ||(Z3`*Z3)+I8#K33); RHS=(X`*Y)//(Z1`*Y)//(Z2`*Y)//(Z3`*Y); C=INV(LHS); BU=C*RHS; RMSE=(Y`*Y-BU`*RHS)#(1/6); print BU ; /* LHS=((X`*X)||(X`*Z1)) //((Z1`*X)||(Z1`*Z1+AINV#2)); RHS=(X`*Y)//(Z1`*Y); C=INV(LHS); BU=C*RHS; RMSE=(Y`*Y-BU`*RHS)#(1/6); print BU ; */ finish main; run; quit;