Optimal Design Scenarios

The following examples briefly describe some additional common situations that call for optimal designs. These examples show how you can

  • use a variety of SAS software tools to generate an appropriate set of candidate runs

  • use the OPTEX procedure to search the candidate set for an optimal design

The emphasis here is on the programming techniques; output is omitted.

Constructing a Saturated Second-Order Design

Suppose you want a design for seven 2-level factors that is as small as possible but still permits estimation of all main effects and two-factor interactions—that is, a saturated design. Among standard orthogonal arrays, the smallest appropriate $2^ k$ design has 64 runs, far more than the 29 parameters you want to estimate. To generate a D-efficient nonorthogonal design, first use the FACTEX procedure to create the full set of $2^7=128$ candidate runs. Then invoke the OPTEX procedure with a full second-order model, asking for a saturated design.

proc factex;                   
   factors x1-x7;          
   output out=Candidate1;             
run;
proc optex data=Candidate1 seed=12345;
   model x1|x2|x3|x4|x5|x6|x7@2;
   generate n=saturated;          
   output out=Design1a;
run;

The default search procedure quickly finds a design with a D-efficiency of 82.3%. If search time is not an issue, you can try a more powerful search technique. For example, you can specify 500 tries with the Fedorov method.

proc optex data=Candidate1 seed=12345;
   model x1|x2|x3|x4|x5|x6|x7@2;
   generate n=saturated         
            method=fedorov     
            iter=500;             
   output out=Design1b;
run;

This takes much longer to run, and the resulting design is only slightly more D-efficient.

Augmenting a Resolution 4 Design

In a situation similar to the previous example, suppose you have performed an experiment for seven two-level factors with a 16-run, fractional factorial design of resolution 4. You can estimate all main effects with this design, but some two-factor interactions will be confounded with each other. You now want to add enough runs to estimate all two-factor interactions as well. You can use the FACTEX procedure to create the original design as well as the candidate set.

proc factex;                    
   factors x1-x7;               
   output out=Candidate2;              
run;
   model resolution=4;   
   size design=min;           
   output out=Augment2;               
run;

Now specify Augment2 (the data set containing the design to be augmented) with the AUGMENT= option in the GENERATE statement.

proc optex data=Candidate2 seed=12345;
   model x1|x2|x3|x4|x5|x6|x7@2;
   generate n=30 augment=Augment2;    
   output out=Design2;
run;
Handling Many Variables

When you have many factors, the set of all possible factor level combinations might be too large to work with as a candidate set. Suppose you want a main-effects design for 15 three-level factors. The complete set of $3^{15}=14,348,907$ candidates is too large to use with the OPTEX procedure; in fact, it will probably be too large to store in your computer. One solution is to find a subset of the full factorial set to use as candidates. For example, an alternative candidate set is the 81-run orthogonal design of resolution 3, which can easily be constructed by the FACTEX procedure.

proc factex;                    
   factors x1-x15 / nlev=3;      
   model resolution=3;    
   size design=81;
   output out=Candidate3;
run;
proc optex data=can3 seed=12345;
   class x1-x15;                
   model x1-x15;
   generate n=saturated;
   output out=Design3;
run;
Constructing an Incomplete Block Design

An incomplete block design is a design for v (qualitative) treatments in b blocks of size k, where $k < v$ so that not all treatments can occur in each block. To construct an incomplete block design with the OPTEX procedure, simply create a candidate data set containing a treatment variable with t values and then use the BLOCKS statement. For example, the following statements construct a design for seven treatments in seven blocks of size three:

data Candidate4;                       
   do Treatment = 1 to 7;           
      output;
   end;
proc optex data=Candidate4 seed=12345;
   class Treatment;                
   model Treatment;
   blocks structure=(7)3;       
run;

The resulting design is equireplicated in the sense that each treatment occurs the same number of times and balanced in the sense that each pair of treatments occur together in the same number of blocks. Balanced designs, when they exist, are known to be optimal, and the OPTEX procedure usually succeeds at finding them for small to moderately sized problems.

Constructing a Mixture-Process Design

Suppose you want to design an experiment with three mixture factors X1, X2, and X3 (continuous factors that represent proportions of the components of a mixture) and one process factor A (a classification factor with five levels). Furthermore, suppose that X1 can account for no more than 50% of the mixture. The following statements create a data set containing the vertices and generalized edge centroids of the region defined by the mixture factor constraints and then use the FACTEX procedure (see Introduction to the FACTEX Procedure) to create a candidate set that includes the process factor.

data XVert;
   input x1 x2 x3 @@;
datalines;
0.50 0.000 0.500
0.50 0.500 0.000
0.00 1.000 0.000
0.00 0.000 1.000
0.00 0.500 0.500
0.50 0.250 0.250
0.25 0.000 0.750
0.25 0.750 0.000
0.25 0.375 0.375
;
proc factex;
   factors a / nlev=5;           
   output out=Candidate5 pointrep=XVert;   
run;

Analyzing mixture designs with linear models can be problematic because of the constraint that the mixture factors sum to one; however, to generate an optimal design, you can simply drop one of the mixture factors. The following statements use the preceding candidate set to find an optimal design for fitting the main effect of A and a second-order model in the mixture factors:

proc optex data=Candidate5 seed=12345;
   class a;                     
   model a x1|x2 x1*x1 x2*x2;      
run;                           

See Example 14.10 for a more detailed example of a mixture experiment.