See OPTEX8 in the SAS/QC Sample LibraryThis example uses the BLOCKS statement to construct an incomplete block design. An incomplete block design is a design for v (qualitative) treatments in b blocks of k runs each, where so that not all treatments can occur in each block. An incomplete block design is said to be balanced when all pairs of treatments occur equally often in the same block. A balanced design is always optimal for any criterion based on the information matrix, although there are many values of for which no balanced design exists.
One way to construct an incomplete block design with the OPTEX procedure is to include the blocking factor in the candidate set and in the model. For example, the following statements search for a BIBD for seven treatments in seven blocks of size three—that is, —using the full set of 49 treatment-by-block combinations for candidates:
data Candidates; do Treatment = 1 to 7; do Block = 1 to 7; output; end; end; run;
proc optex data=Candidates seed=8327 coding=orth; class Treatment Block; model Treatment Block; generate n=21; run;
By default, the OPTEX procedure performs the search 10 times from different random starting designs. The various efficiencies for each design are listed in Output 14.7.1.
Output 14.7.1: Efficiency Factors for , k = 3 Designs
Design Number | D-Efficiency | A-Efficiency | G-Efficiency | Average Prediction Standard Error |
---|---|---|---|---|
1 | 89.0483 | 79.1304 | 82.7170 | 0.8845 |
2 | 89.0483 | 79.1304 | 82.7170 | 0.8845 |
3 | 88.4669 | 76.9882 | 78.6796 | 0.8967 |
4 | 88.4669 | 76.9882 | 78.6796 | 0.8967 |
5 | 88.4669 | 76.9882 | 78.6796 | 0.8967 |
6 | 88.4669 | 76.9882 | 78.6796 | 0.8967 |
7 | 88.4669 | 76.9882 | 78.6796 | 0.8967 |
8 | 88.4669 | 76.9882 | 78.6796 | 0.8967 |
9 | 88.1870 | 76.0262 | 78.7612 | 0.9024 |
10 | 87.7681 | 74.2459 | 73.9544 | 0.9131 |
Since the efficiency factors compare the designs to a (hypothetical) orthogonal design, values of 100% are not possible in this case. The OPTEX procedure includes facilities for examining the information matrix for the design; you can use these to verify that the best design found here is, in fact, balanced.
Searching for an optimal design for both treatments and blocks simultaneously has its limitations. Note that the balanced design was found on only two of the ten tries. A more serious limitation is that this approach sometimes fails to find a design with equal-sized blocks. A more efficient and flexible way to construct a block design with the OPTEX procedure is to use the BLOCKS statement.
The following statements use the BLOCKS statement to solve the preceding incomplete block design problem. In this case, the candidate set simply consists of the seven treatment levels.
data Candidates; do Treatment = 1 to 7; output; end; run;
proc optex data=Candidates seed=73462 coding=orth; class Treatment; model Treatment; blocks structure=(7)3; run;
The output again consists of efficiency factors for 10 different tries, but this time the factors are computed from the information matrix for only the treatment effects. In this special case (a single classification effect in the treatment model together with the BLOCKS STRUCTURE= specification), the efficiency of each design as an incomplete block design is also listed (Output 14.7.2).
Output 14.7.2: Efficiency Factors for , k = 3 Optimal Blocking Designs
Design Number | Treatment D-Efficiency |
Treatment A-Efficiency |
Block Design D-Efficiency |
---|---|---|---|
1 | 77.7778 | 77.7778 | 100.0000 |
2 | 77.7778 | 77.7778 | 100.0000 |
3 | 77.7778 | 77.7778 | 100.0000 |
4 | 77.7778 | 77.7778 | 100.0000 |
5 | 77.7778 | 77.7778 | 100.0000 |
6 | 77.7778 | 77.7778 | 100.0000 |
7 | 77.7778 | 77.7778 | 100.0000 |
8 | 77.7778 | 77.7778 | 100.0000 |
9 | 77.7778 | 77.7778 | 100.0000 |
10 | 77.7778 | 77.7778 | 100.0000 |
The 100% efficiency in the fourth column of the output shows that the balanced design was found on all 10 tries.
Since the OPTEX procedure is interactive, you can save the final design in a data set by submitting the OUTPUT statement immediately after the preceding statements. The following statements use the BLOCKNAME= option to rename the block variable:
output out=BIBD blockname=Block; proc print data=BIBD; run;
The final design is shown in Output 14.7.3.
Output 14.7.3: Balanced Incomplete Block Design for , k = 3
Obs | BLOCK | Treatment |
---|---|---|
1 | 1 | 1 |
2 | 1 | 4 |
3 | 1 | 7 |
4 | 2 | 6 |
5 | 2 | 3 |
6 | 2 | 1 |
7 | 3 | 2 |
8 | 3 | 5 |
9 | 3 | 1 |
10 | 4 | 6 |
11 | 4 | 2 |
12 | 4 | 7 |
13 | 5 | 5 |
14 | 5 | 4 |
15 | 5 | 6 |
16 | 6 | 5 |
17 | 6 | 7 |
18 | 6 | 3 |
19 | 7 | 4 |
20 | 7 | 3 |
21 | 7 | 2 |
Although there is no guarantee that the OPTEX procedure will find the globally optimal block design by this method, it usually does find small to medium-sized balanced designs, and it always finds a very efficient design. For example, for the designs given in Table 9.5 of Cochran and Cox (1957), the OPTEX procedure consistently finds the theoretically optimal BIBD in all cases with 10 or fewer treatments. Furthermore, in no case is the D-efficiency relative to the balanced design less than 99%.