# What is a Randomized Complete Block Design. How do we create one and analyze it?

I have been reading about experimental design, and Randomized Complete Block designs (RCBD) in particular and I have a few queries. What exactly is a randomized complete block design ? Is there a standard definition? When should we use this kind of design ? How do we create one, and how do we analyze it (in SAS ideally please, or R). I sometimes see "repeated measures" and "split plots" when I read about this topic, but I'm not sure how (or if) these are used in RCBDs.

• Commented Nov 15, 2023 at 18:42

There are a number of different designs that use the term "Randomised Complete Block Design", but they are all based on a very basic idea, that of blocking. A block is just another factor (a blocking factor) in the model and we use it with the aim of reducing unexplained variation of a design, which may result from experimental units not being homogeneous, compared to a non-blocked design. Thus the blocking factor is a nuisance variable which we are not really interested in itself.

For example, suppose we are interested in an experiment we we wish to understand the effect of different treatments on a response variable. A typical application is in agriculture, agronomy and ecology among others.

Suppose a researcher is interested in the effects of 5 different treatments (perhaps different fertilisers), A,B,C,D and E on a crop. The researcher could just divide an area into 5 equally sized plots, and apply one treatment to each plot. This would result in 5 observations such as these:

  Treatment Response
A    171.8
B    168.2
C    140.0
D    141.3
E    171.1


Now, it should be obvious that there isn't much we can do to analyze these data, apart from something graphically. If we tried to fit a linear regression model, the model would be completely saturated. So what should we do ? Well, hopefully the obvious thing to do is to run the experiment with further similarly sized areas divided into the same sized plots. If this were done with 5 areas in total, then we would have 5 blocks. Now, if all the experimental units (plots) are identical (homogeneous), that would be great. However that rarely happens in practice. Suppose the field in which the experiment is to be run slopes downwards. This means the top of the field will be dryer on average than the lower part and the crop might naturally grow better or worse in different parts of the field depending on its affinity for wet conditions, and this could lead to a heterogeneous treatment effects. Plots at the top of the hill are expected to respond differently to those further down. Consider this arrangement of plots:

    Uphill  -----------------
| A |   |   |   |
-----------------
| B |   |   |   |
-----------------
| C |   |   |   |
-----------------
| D |   |   |   |
-----------------
Downhill  | E |   |   |   |
-----------------


Here we can see the treatments that we discussed above that resulted in the 5-row dataset. Each column is a block. We could just go ahead and do the same thing for the next column/block:

    Uphill  -----------------
| A | A |   |   |
-----------------
| B | B |   |   |
-----------------
| C | C |   |   |
-----------------
| D | D |   |   |
-----------------
Downhill  | E | E |   |   |
-----------------


So treatment A gets applied to the unit at the top of the field in both blocks. This is a pseudo-replicate because it is not independent of the first replication. Treatment A is applied to both of the plots with the driest conditions (that we know can affect growth of the crop). This is where randomisation comes in. The treatments are randomised such that each block receives each treatment once, but in a (pre-specified) random order. That is, the sample is stratified into the blocks and then randomised within each block to levels of the treatment factor, such as this:

                  Block
A   B   C   D
-----------------
| E | D | B | E |
-----------------
| A | A | E | C |
-----------------
Treatment | B | C | C | B |
-----------------
| D | B | D | A |
-----------------
| C | E | A | D |
-----------------



And after running the experiment we would have a dataset such as this:

   Block Treatment Response
1      A         E    171.1
2      A         A    171.8
3      A         B    168.2
4      A         D    141.3
5      A         C    140.0
6      B         D    117.6
7      B         A    154.6
8      B         C    111.5
9      B         B    161.7
10     B         E    161.4
11     C         B    170.9
12     C         E    171.8
13     C         C    119.8
14     C         D    149.0
15     C         A    148.2
16     D         E    158.9
17     D         C    119.4
18     D         B    170.9
19     D         A    165.1
20     D         D    141.4


To analyse such data, we can specify the following model:

$$y_{ij} = \mu + t_i + b_j + \epsilon_{ij}$$

where
$$y_{ij}$$ is the response from the experimental unit receiving treatment $$i$$ in block $$j$$,
$$\mu$$ is the overall mean response, taken over all treatments and all blocks,
$$t_i$$ is the difference between $$\mu$$ and the mean response for treatment $$i$$ ie, the treatment effect (which we are interested in),
$$b_j$$ is the difference between $$\mu$$ and the mean response for block $$j$$, ie the blocking effect (which we are not interested in), and
$$\epsilon_{ij}$$ is the residual error for the $$i$$th treatment in the $$j$$th block.

To fit such a model, we have at least two choices:

- a linear regression model:

• In R we would fit this with:
    lm(Response ~ Treatment + Block, data = dt)


where the coefficients for Treatment are the primary interest.

• in SAS we would use
PROC GLM data=your_data_set;
CLASS BLOCK TREATMENT;
MODEL RESPONSE = BLOCK TREATMENT;
RUN;


In both cases, we are interested in the model coefficients for Treatment.

• A Mixed Effect Model:

In this case, we treat the blocking factor as a random variable and fit random intercepts for it.

• in R (using the lme4 package) we would use:
lmer(Response ~ Treatment + (1|Block), data = dt)

• in SAS we would use:
PROC MIXED data=your_data_set;
CLASS BLOCK TREATMENT;
MODEL RESPONSE = TREATMENT;
RANDOM BLOCK;
RUN;


Again in both cases, we are interested in the model coefficients for Treatment.

- Should Block be a fixed effect or a random effect ?:

There are several things to consider when deciding whether a factor should be fixed or random. These are just a couple of general guidelines. First, when there are very few levels of it, treat it as fixed, and where there are many treat it as random. Second, if it is a nuisance variable, or when the levels of it can be thought of as being drawn from a bigger population of similar things, fit it as random. These are some good threads on this particular topic:
What is the difference between fixed effect, random effect and mixed effect models?
Fixed effect vs random effect when all possibilities are included in a mixed effects model
Should "City" be a fixed or a random effect variable?

As to the question about "repeated measures" and "split plots", these terms arise in more complex designs that are based on the standard RCBD described here. I would suggest asking a separate question about that.