proc sort data=calc_conc; by concentration; proc mixed data=calc_conc; class run; model calc_conc=/solution; random run; by concentration; ods output dimensions=dim; ods output solutionf=solf; ods output CovParms=var_comp; proc sort data=calc_conc; by concentration run plate; proc univariate data=calc_conc noprint; var calc_conc; by concentration run; output out=stat_by_conc_run n=n; proc sql; create table stat_by_conc as select t1.concentration, cap_n, sum_n_sq/cap_n as n, n_run, mean, sqrt(sigma_w_sq) as sigma_w, 100*sqrt(sigma_w_sq)/t1.concentration as cv_w, sqrt(sigma_b_sq) as sigma_b, 100*sqrt(sigma_b_sq)/t1.concentration as cv_b, sqrt(sigma_w_sq+sigma_w_sq) as sigma_t, 100*sqrt(sigma_w_sq+sigma_w_sq)/t1.concentration as cv_t from (select concentration, value as cap_n from dim where descr='Observations Used') as t1, (select concentration, estimate as mean from solf) as t2, (select concentration, sum(n**2) as sum_n_sq from stat_by_conc_run group by concentration) as t3, (select concentration, estimate as sigma_b_sq from var_comp where covparm='run') as t4, (select concentration, estimate as sigma_w_sq from var_comp where covparm='Residual') as t5, (select count(run) as n_run from (select distinct run from stat_by_conc_run)) as t6 where t1.concentration=t2.concentration= t3.concentration=t4.concentration=t5.concentration; run; quit;