/**********************************************************************/ /* Atkinson, Donev, and Tobias, "Optimum Experimental Designs" */ /* */ /* NAME: Program 16.6 */ /* TITLE: Fig. 16.6. Three-component mixture in two blocks */ /* KEYS: */ /* DATA: */ /* NOTES: Uses the ADX macros to create simplex lattice designs. */ /* */ /* Author: Randy Tobias */ /* History: */ /* Created...............................................27Jun2007 */ /**********************************************************************/ title1 "Fig. 16.6. Three-component mixture in two blocks"; %adxgen; %adxmix; /* / Create data sets holding the three designs in Figure 16.6. /---------------------------------------------------------------------*/ data fig1606a; input A x1 x2 x3 @@; cards; 1 1 0 0 1 0 1 0 1 0 0 1 1 0.5 0.5 0 1 0.5 0 0.5 1 0 0.5 0.5 2 0.5 0.5 0 2 0.5 0 0.5 2 0 0.5 0.5 ; data fig1606b; input A x1 x2 x3 @@; cards; 1 1 0 0 1 0.5 0.5 0 1 0.5 0 0.5 1 0 0.5 0.5 2 0 1 0 2 0 0 1 2 0.5 0.5 0 2 0.5 0 0.5 2 0 0.5 0.5 ; data fig1606c; input A x1 x2 x3 @@; cards; 1 1 0 0 1 0 1 0 1 0 0 1 1 0.5 0.5 0 2 1 0 0 2 0 1 0 2 0.5 0.5 0 2 0.5 0 0.5 2 0 0.5 0.5 ; /* / Create a candidate set of all vertices and centroids, within each / level of the qualitative factor. /---------------------------------------------------------------------*/ %adxsld(Grid,x1 x2 x3,2); data Candidates; set Grid; do a = 1 to 2; output; end; run; /* / Compute OPTEX efficiencies for the D-optimum and A-optimum designs, / and also for the three designs depicted in Fig. 16.6. /---------------------------------------------------------------------*/ ods listing close; proc optex data=Candidates coding=orthcan; class a; model a x1|x2 x1*x1 x1*x2 x2*x2; id x3; generate n=9 method=m_fedorov niter=1000 keep=1 criterion=d; ods output Efficiencies=EffDOpt; run; generate n=9 method=m_fedorov niter=1000 keep=1 criterion=a; ods output Efficiencies=EffAOpt; run; generate initdesign=fig1606a method=sequential; ods output Efficiencies=Effa; run; generate initdesign=fig1606b method=sequential; ods output Efficiencies=Effb; run; generate initdesign=fig1606c method=sequential; ods output Efficiencies=Effc; run; ods listing; /* / Collect efficiencies and round to get rid of numerical fuzz. /---------------------------------------------------------------------*/ data EffDOpt; set EffDOpt; Source = "OPTEX D"; data EffAOpt; set EffAOpt; Source = "OPTEX A"; data Effa; set Effa; Source = " (a) "; data Effb; set Effb; Source = " (b) "; data Effc; set Effc; Source = " (c) "; data Eff; set EffDOpt EffAOpt Effa Effb Effc; DCriterion = round(DCriterion,1e-8); ACriterion = round(ACriterion,1e-8); GCriterion = round(GCriterion,1e-8); proc sort data=Eff; by descending DCriterion descending ACriterion descending GCriterion descending AvePredStdErr descending Source; run; /* / All designs are apparently completly information-equivalent. /---------------------------------------------------------------------*/ proc print data=Eff noobs; var Source DCriterion ACriterion GCriterion AvePredStdErr; run; title1;