proc iml; start main; y={7, 10, 6}; X={1, 1, 1}; A={1 0 0 .5 0, 0 1 0 .5 .5, 0 0 1 0 .5, .5 .5 0 1 .25, 0 .5 .5 .25 1}; lam=1; Z={1 0 0 0 0, 0 0 1 0 0, 0 0 0 1 0}; LHS=((X`*X)||(X`*Z))//((Z`*X)||(Z`*Z+INV(A)#LAM)); RHS=(X`*Y)//(Z`*Y); C=INV(LHS); BU=C*RHS; RMSE=(Y`*Y-BU`*RHS)#(1/2); print C BU RMSE; C22={0.7692308 -0.461538 -0.153846 -0.384615 -0.461538 -0.269231 -0.461538 0.7435897 0.025641 0.2307692 0.4102564 0.1282051 -0.153846 0.025641 0.8974359 0.0769231 0.3589744 0.4871795 -0.384615 0.2307692 0.0769231 0.6923077 0.2307692 0.3846154 -0.461538 0.4102564 0.3589744 0.2307692 0.7435897 0.2948718 -0.269231 0.1282051 0.4871795 0.3846154 0.2948718 0.9358974}; PEV=C22#RMSE; SIGMA_A=RMSE*(1/LAM); PV=A*SIGMA_A+PEV; PRINT PEV PV; finish main; run; quit;