# ANOVA complete block design, more units per block than treatments

I would like to design a randomized complete block design experiment (RCBD). Let's say I have 3 treatments and 10 logical groupings of my experimental units (EUs) which are the blocks. If each of my 10 blocks has 3 EUs, I can easily use a RCBD by assigning the 3 treatments randomly within each block. However, each of my 10 blocks varies in size, and they won't necessarily be divisible by three. For example, block 1 could have 3 EUs, but block 2 could have 10 EUs. I could fall back on a completely randomized design by ignoring the blocks and randomly assigning all EUs to one of 3 treatments, but I'd like to make use of the natural blocking structure to reduce variance. I see two potential routes:

1. Completely randomized design - ignore blocks and assign EUs to the 3 treatment groups. The subsequent ANOVA could include a control variable for the blocks (I just won't have efficiently taken advantage of the groupings in my design)
2. CRBD - is it okay to just randomly assign EUs within the blocks? I.e., block 2 could end up with a 3/3/4 treatment1/treatment2/treatment3 split, or depending on how I randomize could even be something like 2/2/6

p.s. this isn't quite an incomplete block design - it's sort of the opposite, where I have more EUs per block than treatments, and it's not quite a repeated measures design because all of the EUs are unique subjects.

The choice of a completely randomized design will lose efficiency. You also may not be able to identify some effects which would be very disappointing.

Your second choice, the CRBD, is better. While you want randomization, you are sort of ending up in a fractional factorial design situation. You may want to consider randomly assigning treatments without replacement for the first three units in a block and then assigning randomly for the remaining units. Alternately, you could use a quasi-random number generator for your randomization; that would be fully random yet tend toward equal coverage of all treatments. If you have any blocks with less that 3 units, I would also recommend reading up on aliasing/confounding and uniform designs (which can reduce aliasing).

• Thank you! I have well over 3 units per block, so I can avoid aliasing/confounding (phew). Would the quasi-random number generator accomplish the same thing as randomly sorting the subjects, then assigning the first third to group 1, second third to group 2, then remaining to group 3?
– Alex
Commented Jul 23, 2020 at 17:36
• Quasi-random numbers would give you something different but /tending/ to be similar. It would still be possible to have variation in units/treatment -- and by more than just 1 unit. You could even end up with no units assigned to a treatment. Your idea of sorting is good and (IIRC) hews closer to uniform designs. Commented Jul 23, 2020 at 17:39

The choice of a completely randomized design will lose efficiency. You also may not be able to identify some effects which would be very disappointing.

Your second choice, the CRBD, is better. While you want randomization, you are sort of ending up in a fractional factorial design situation. You may want to consider randomly assigning treatments without replacement for the first three units in a block and then assigning randomly for the remaining units. Alternately, you could use a quasi-random number generator for your randomization; that would be fully random yet tend toward equal coverage of all treatments. If you have any blocks with less that 3 units, I would also recommend reading up on aliasing/confounding and uniform designs (which can reduce aliasing).

You could use algorithmic design such as D-optimality to assign treatments to blocks. This will be similar to the CRBD solution, in fact, the algorithm would choose one CRBD for you.

One example for using package AlgDesign in R for blocking is at DOE for evaluating a factor with more than 2 levels

Let us try your case:

library(AlgDesign)
cand <- data.frame(T= factor(c(rep("T1", 13), rep("T2", 13),
rep("T3", 13))) )

des <- optFederov(~ ., cand, nTrials=31)

des.blocked <- optBlock(~., des$design, blocksizes=c(3, 10, 3, 3, 7, 5)) des.blocked$$Blocks$$Blocks$B1
T
5  T1
21 T2
34 T3

$$Blocks$$B2
T
1  T1
7  T1
8  T1
10 T1
14 T2
18 T2
19 T2
27 T3
33 T3
39 T3

$$Blocks$$B3
T
13 T1
16 T2
35 T3

$$Blocks$$B4
T
2  T1
26 T2
30 T3

$$Blocks$$B5
T
4  T1
11 T1
12 T1
20 T2
24 T2
28 T3
38 T3

$$Blocks$$B6
T
6  T1
15 T2
25 T2
29 T3
36 T3


Unsurprisingly, this gives just what we should have expected: in each of the blocks, the three treatments are represented as equally as possible. Then randomization should be done within each block.