Split-Plot Designs

A short description of the post.

Kris Sankaran true
12-16-2021

Readings 14.4, Rmarkdown

display(readImage("https://uwmadison.box.com/shared/static/qtxsckab5vcxffrhbpepj9peq28m7zwn.png"))
A single field from a true factorial design in the irrigation example.

Figure 1: A single field from a true factorial design in the irrigation example.

display(readImage("https://uwmadison.box.com/shared/static/9s2cmkmgc45po62yzm8eltry8cy7rv42.png"))
An alternative split plot structure. The irrigation strategies are now rows, and each cell is a subplot.

Figure 2: An alternative split plot structure. The irrigation strategies are now rows, and each cell is a subplot.

There are times when we would like to perform a two-factor factorial experiment across blocks, but one of the factors is much more difficult to vary than the other. For example,

This makes a true \(2^{2}\) factorial experiment impractical, because it would require randomizing over all combinations of \(A\) and \(B\) for every sample that we collect.

Effectively, practical considerations impose a restriction on randomization.

Model

The model for a split-plot design is

\[\begin{align*} y_{ijk} &= \mu + \tau_{k} + \alpha_{i} + \beta_{j} + \left(\tau\alpha\right)_{ki} + \left(\alpha\beta\right)_{ij} + \epsilon_{ijk} \end{align*}\]

where \(\epsilon \sim N\left(0, \sigma^2\right)\) independently.

The terms can be interpreted as,

We will typically not care about individual block effects, though we will care about the two different treatments. Therefore, it is common to

The expected mean squares associated with each of the terms above can be derived in closed form. Here, we will simply illustrate their use through the lme4 package. The data are from the papermill experiment described above.

pulp <- read_csv("https://uwmadison.box.com/shared/static/843r3mda46is46nbb5b6393u7caz8orq.csv") %>%
  mutate_at(vars(Day, Method, Temperature), as.factor)
ggplot(pulp) +
  geom_point(
    aes(x = Temperature, y = Strength, col = Day),
    size = 3
  ) +
  scale_color_brewer(palette = "Set2") +
  facet_grid(Method ~ .)
Data from the papermill experiment.

Figure 3: Data from the papermill experiment.

fit <- aov(Strength ~ Method * Temperature + Error(Day / Method), data = pulp)
summary(fit)

Error: Day
          Df Sum Sq Mean Sq F value Pr(>F)
Residuals  2  77.56   38.78               

Error: Day:Method
          Df Sum Sq Mean Sq F value Pr(>F)  
Method     2 128.39   64.19   7.078 0.0485 *
Residuals  4  36.28    9.07                 
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Error: Within
                   Df Sum Sq Mean Sq F value   Pr(>F)    
Temperature         3  434.1  144.69  36.427 7.45e-08 ***
Method:Temperature  6   75.2   12.53   3.154   0.0271 *  
Residuals          18   71.5    3.97                     
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Split-Plot is not \(2^{2}\) factorial

Fitting a \(2^{2}\) factorial model when the data were collected with restrictions on randomization can lead to misleading results. The code below fits an ordinary \(2^{2}\) factorial model to the papermill data. Note the overconfidence about an effect of Method.

fit <- aov(Strength ~ Method * Temperature, data = pulp)
summary(fit)
                   Df Sum Sq Mean Sq F value   Pr(>F)    
Method              2  128.4   64.19   8.313  0.00181 ** 
Temperature         3  434.1  144.69  18.737 1.76e-06 ***
Method:Temperature  6   75.2   12.53   1.622  0.18426    
Residuals          24  185.3    7.72                     
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1