option ls=76 nocenter; data mice; input cage condition diet $ gain; datalines; 1 1 normal 58 1 1 restrict 58 1 1 suppleme 58 1 2 normal 54 1 2 restrict 46 1 2 suppleme 57 2 1 normal 49 2 1 restrict 50 2 1 suppleme 57 2 3 normal 57 2 3 restrict 53 2 3 suppleme 62 3 1 normal 59 3 1 restrict 58 3 1 suppleme 57 3 4 normal 63 3 4 restrict 61 3 4 suppleme 65 4 2 normal 57 4 2 restrict 64 4 2 suppleme 52 4 3 normal 63 4 3 restrict 67 4 3 suppleme 51 5 2 normal 53 5 2 restrict 46 5 2 suppleme 51 5 4 normal 58 5 4 restrict 52 5 4 suppleme 61 6 3 normal 65 6 3 restrict 64 6 3 suppleme 54 6 4 normal 59 6 4 restrict 47 6 4 suppleme 73 ; run; %let seed = 71853048; %let var_cage = 5.03; %let var_cc = -6.24; %let var_resid = 31.56; %let nsim = 1000; data noise; retain i j; do sim = 1 to ≁ i = 1; j = 2; do cage = 1 to 12; /* cage =12 to double the sample size */ u_cage = sqrt(&var_cage) * rannor(&seed); do condition = i,j; e1 = rannor(&seed); e2 = rannor(&seed); e3 = rannor(&seed); diet = "normal "; noise = u_cage + 5.0318983*e1; output; diet = "restrict"; noise = u_cage - 1.240089*e1 + 4.8766977*e2; output; diet = "suppleme"; noise = u_cage - 1.240089*e1 - 1.594895*e2 + 4.6085237*e3; output; end; j = j + 1; if (j = 5) then do; i = i + 1; j = i + 1; end; if(cage=6) then do;i=1;j=2; end; /* new line added */ end; end; run; proc mixed data=mice nobound; class cage condition diet; model gain=condition|diet / outpm=opm; random cage cage*condition; run; data opm1; set opm; drop gain stderrpred df alpha lower upper resid; run;