proc iml; start main; y={7, 9, 10, 6, 9}; X={1, 1, 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 1 0 0 0, 0 0 1 0 0, 0 0 0 1 0, 0 0 0 0 1}; 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/3); print C BU RMSE; C22={0.64586 0.16981 0.18432 0.37880 0.22496, 0.16981 0.66037 0.16981 0.39622 0.39622, 0.18432 0.16981 0.64586 0.22496 0.37880, 0.37880 0.39622 0.22496 0.73004 0.34542, 0.22496 0.39622 0.37880 0.34542 0.73004}; PEV=C22#RMSE; SIGMA_A=RMSE*(1/LAM); PV=A*SIGMA_A+PEV; PRINT PEV PV; finish main; run; quit;