Split-Plot Designs

Part 1: Concepts, Randomization & Error Structure | Week 8 — AGST 50104

Dr. Samuel B Fernandes

2026-01-01

Learning Objectives

By the end of this lecture, you should be able to:

  • Recognize when experimental constraints require split-plot designs and distinguish whole-plot from subplot factors
  • Describe the two-stage randomization procedure and implement it in R
  • Write the split-plot statistical model as two nested sub-models and identify each error term
  • Construct the ANOVA table with correct degrees of freedom and F-test denominators

Part 1: Why Split-Plot?

From Factorial to Split-Plot: The Problem

Ideal Factorial (Fully Independent):

  • Irrigation: 2 levels (Drip, Furrow)
  • Nitrogen: 4 levels (0, 50, 100, 150 kg/ha)
  • Total combinations: 2 × 4 = 8
  • 3 reps × 8 combos = 24 experimental units

Each of the 24 units gets independently assigned one combination of irrigation AND nitrogen.

From Factorial to Split-Plot: The Reality

What the statistician wants:

  • 24 independently randomized plots
  • Each plot gets a unique irrigation + nitrogen combo
  • Complete randomization of all 8 treatments

Cost: 24 separate irrigation installations at ~$5,000 each = $120,000

What the field researcher can afford:

  • Installing/changing irrigation is hard & expensive
  • Setting nitrogen fertilizer is easy & cheap
  • Only budget for 6 irrigation setups (3 reps × 2 levels)
  • Within each irrigated area, subdivide for nitrogen

Cost: 6 irrigation setups + 24 fertilizer applications = $31,000

Split-plot design accommodates this practical reality without sacrificing the ability to estimate all main effects and interactions.

Cookie Example: Factorial vs Split-Plot

Response: Consistency of chocolate chip cookies

Factors: Temperature (3 levels) and amount of baking soda (4 levels)

Design 1 — Full Factorial:

12 combinations of temperature and baking soda are replicated three times. You mix up cookie dough and then cook it 36 times — one batch at a time.

  • 36 separate oven runs
  • Change temperature between every run
  • Each run uses one dough formulation

Design 2 — Split-Plot:

Four batches of dough are created, each with a different amount of baking soda. Oven is heated to a specific temperature and the four doughs are put in the oven at the same time. Repeat for the other temperatures.

  • 36 batches of dough, but only 9 cooking trials
  • WPF: Temperature (hard to change — oven takes time to heat/cool)
  • SPF: Baking soda (easy to change — just mix differently)

What Makes a Factor “Hard to Change”?

Not all experimental factors are equal. Some require:

  • Large equipment — tillage implements cover entire field sections
  • Expensive infrastructure — irrigation system installation ($5K–$10K per plot)
  • Time commitment — planting date or cover crop (planted months earlier)
  • Physical constraints — soil amendments that can’t be confined to small areas
  • Safety/regulatory — fumigation zones requiring buffer distances
  • Thermal inertia — oven temperature takes time to stabilize (cookie example!)

These factors cannot be randomly assigned to small individual plots (or batches).

Whole-Plot Factors: Definition

Whole-Plot Factor (WPF):

  • Applied to large areas of experimental material
  • Difficult or expensive to change during the experiment
  • Usually has fewer levels to avoid excessive cost

Agricultural WPF examples:

Factor Why it’s whole-plot
Tillage method Large equipment, full-field passes
Irrigation system Infrastructure installation
Planting date Entire field planted at once
Seeding rate Grain drill calibration
Cover crop species Seed bed prep months in advance

Subplot Factors: Definition

Subplot Factor (SPF):

  • Applied to smaller areas within each whole-plot
  • Easy and cheap to change
  • Can have more levels without excessive cost

Agricultural SPF examples:

Factor Why it’s subplot
Herbicide rate Plot sprayer, quick to change
Fertilizer timing Hand application or small spreader
Seed treatment Applied before planting
Fungicide product Spray different sections easily
POST weed control Backpack sprayer

The Key Distinction

The distinction between whole-plot and subplot is not about which factor is more important — it’s about practical randomization constraints.

Example 1 — Weed science:

  • Whole-plot: Tillage (expensive equipment, full-field operation)
  • Subplot: Herbicide rate (your primary research interest!)

Example 2 — Horticulture:

  • Whole-plot: Rootstock type (ordered and planted months in advance)
  • Subplot: Pruning method (done by hand on individual plants)

Example 3 — Food science:

  • Whole-plot: Oven temperature (takes time to change and stabilize)
  • Subplot: Coating type (applied to individual samples quickly)

Real Agricultural Example: Irrigated Wheat

Research Question: How do irrigation method and nitrogen timing interact to affect wheat yield?

Why split-plot?

  • Irrigation system installation: $8,000/plot, takes 1 week
  • Nitrogen application: $50/plot, takes 30 minutes
  • Field has 6 available spaces for independent irrigation setups

Design:

  • Whole-plot factor: Irrigation (Drip vs Furrow)
    • 2 levels, 3 reps = 6 whole-plots
  • Subplot factor: N-timing (Pre-plant, Boot, Both)
    • 3 levels within each whole-plot
  • Total observations: 6 × 3 = 18

Real Example: Weed Science Palmer Amaranth Study

Research Question: Does tillage system interact with POST herbicide rate to suppress Palmer amaranth density?

Why whole-plot for tillage?

A single tillage pass covers an entire block section (~3 acres). You can’t till just one 3m × 6m plot.

Total plots: 4 × 2 × 3 = 24

Factor Type Levels
Tillage Whole-plot No-till, Conventional
Herbicide rate Subplot 0, 280, 560 g ai/ha
Blocks (reps) 4

Field Layout: Palmer Amaranth Study

One block of the split-plot design:

Block 1
┌───────────────────────────────────────┐
│  No-till  (whole-plot 1)              │
│  ┌──────────┬──────────┬──────────┐   │
│  │  0 g/ha  │ 280 g/ha │ 560 g/ha │   │
│  │ subplot 1│ subplot 2│ subplot 3│   │
│  └──────────┴──────────┴──────────┘   │
├───────────────────────────────────────┤
│  Conventional  (whole-plot 2)         │
│  ┌──────────┬──────────┬──────────┐   │
│  │ 280 g/ha │  0 g/ha  │ 560 g/ha │   │
│  │ subplot 1│ subplot 2│ subplot 3│   │
│  └──────────┴──────────┴──────────┘   │
└───────────────────────────────────────┘

Notice: herbicide order differs between whole-plots — each is randomized independently.

Four Blocks: Complete Layout

Block 1                          Block 2
┌─────────────────────┐          ┌─────────────────────┐
│ No-till              │          │ Conv                 │
│ [0] [280] [560]      │          │ [560] [0] [280]      │
├─────────────────────┤          ├─────────────────────┤
│ Conv                 │          │ No-till              │
│ [280] [0] [560]      │          │ [0] [560] [280]      │
└─────────────────────┘          └─────────────────────┘

Block 3                          Block 4
┌─────────────────────┐          ┌─────────────────────┐
│ No-till              │          │ Conv                 │
│ [560] [280] [0]      │          │ [280] [560] [0]      │
├─────────────────────┤          ├─────────────────────┤
│ Conv                 │          │ No-till              │
│ [0] [560] [280]      │          │ [560] [0] [280]      │
└─────────────────────┘          └─────────────────────┘
  • 4 blocks × 2 whole-plots × 3 subplots = 24 total observations
  • Tillage assignment to top/bottom varies randomly per block
  • Herbicide order varies randomly within each whole-plot

Yates Oats: A Classic Split-Plot Dataset

The yield of oats from a split-plot field trial conducted at Rothamsted in 1931.

  • Varieties were applied to the main plots (whole-plot factor)
  • Manurial (nitrogen) treatments were applied to the sub-plots (subplot factor)
  • 6 complete blocks
Code
data(yates.oats, package = "agridat")
head(yates.oats)
#>   row col yield nitro        gen block grain straw
#> 1  16   3    80     0 GoldenRain    B1 20.00 28.00
#> 2  12   4    60     0 GoldenRain    B2 15.00 25.00
#> 3   3   3    89     0 GoldenRain    B3 22.25 40.50
#> 4  14   1   117     0 GoldenRain    B4 29.25 28.75
#> 5   8   2    64     0 GoldenRain    B5 16.00 32.00
#> 6   5   2    70     0 GoldenRain    B6 17.50 27.25

Visualizing the Oats Design with desplot

Code
library(desplot)

desplot(yates.oats, block ~ col + row,
        col = nitro, text = gen, cex = 1, aspect = 511/176,
        out1 = block, out2 = gen,
        out2.gpar = list(col = "gray50", lwd = 1, lty = 1),
        main = "Yates Oats Split-Plot Design")

Figure 1: Split-plot layout of the Yates oats trial at Rothamsted (1931)

  • Colored regions + thick outlines = blocks (replicates)
  • Text codes + thin lines = whole-plots (variety)
  • Text colors = nitrogen sub-plot treatments

Visualizing the Oats Yield Response

Code
desplot(yates.oats, yield ~ col * row,
        col = gen, num = nitro, cex = 1,
        out1 = block, aspect = 511/176,
        main = "Yates Oats: Yield by Field Position")

Figure 2: Spatial distribution of oat yield across the field trial

Coloring by a continuous response variable (yield) reveals spatial patterns in the field — exactly the kind of variation that blocking accounts for.

Part 2: Randomization

Two-Stage Randomization Process

Stage 1: Assign whole-plot factor to large areas

  • Within each block, randomly assign tillage levels to whole-plot positions
  • This is like a simple RCBD for the whole-plot factor

Stage 2: Within each whole-plot, assign subplot factor

  • Subdivide each whole-plot into smaller subplots
  • Randomly assign herbicide rates to subplots
  • Independently for each whole-plot

Two-stage means two independent randomizations — one at the whole-plot level, one at the subplot level. This hierarchy is what defines the split-plot design.

Using FielDHub for Production Designs

Code
library(FielDHub)

# Generate split-plot design with field layout
sp_design <- FielDHub::split_plot(
  wp = c("No-till", "Conv"),     # Whole-plot levels
  sp = c("0", "280", "560"),     # Subplot levels
  reps = 4,                       # Number of blocks
  seed = 2026
)

# Print the field book
sp_design$fieldBook

# Plot the field layout
plot(sp_design)

FielDHub advantages over manual randomization:

  • Generates physical plot numbers for field maps
  • Creates randomization plan documents
  • Produces visual field layouts for field crews
  • Handles more complex designs (split-split-plot, strip-plot)

Part 3: Statistical Model

Building the Model: Step 1 — The Whole-Plot Level

Think of the split-plot as two experiments nested inside each other.

At the whole-plot level, ignore subplots entirely. You have an RCBD of the WPF across blocks:

\[y_{ik\cdot} = \mu + \underbrace{\alpha_i}_{\text{WPF (tillage)}} + \underbrace{\rho_k}_{\text{block}} + \underbrace{\gamma_{ik}}_{\text{WP error}}\]

Symbol Meaning
\(y_{ik\cdot}\) Mean response of whole-plot \(ik\) (averaged across subplots)
\(\alpha_i\) Fixed effect of whole-plot factor level \(i\)
\(\rho_k\) Fixed block effect
\(\gamma_{ik}\) Random whole-plot error, \(\gamma_{ik} \sim N(0, \sigma^2_{WP})\)

This is just a standard RCBD — nothing new here.

Building the Model: Step 2 — The Subplot Level

Within each whole-plot, you run a second experiment on the subplot factor:

\[y_{ijk} = y_{ik\cdot} + \underbrace{\beta_j}_{\text{SPF (herbicide)}} + \underbrace{(\alpha\beta)_{ij}}_{\text{interaction}} + \underbrace{\epsilon_{ijk}}_{\text{SP error}}\]

Symbol Meaning
\(y_{ijk}\) Individual subplot observation
\(\beta_j\) Fixed effect of subplot factor level \(j\)
\((\alpha\beta)_{ij}\) Interaction between WPF and SPF
\(\epsilon_{ijk}\) Random subplot error, \(\epsilon_{ijk} \sim N(0, \sigma^2_{SP})\)

Each whole-plot is subdivided — so this second experiment is nested within the first.

The Complete Split-Plot Model

Substituting Step 1 into Step 2 gives the full model:

\[\boxed{y_{ijk} = \mu + \rho_k + \alpha_i + \gamma_{ik} + \beta_j + (\alpha\beta)_{ij} + \epsilon_{ijk}}\]

Whole-plot level terms:

  • \(\mu\) — overall mean
  • \(\rho_k\) — block effect
  • \(\alpha_i\) — WPF effect (tillage)
  • \(\gamma_{ik} \sim N(0, \sigma^2_{WP})\)WP error

Subplot level terms:

  • \(\beta_j\) — SPF effect (herbicide)
  • \((\alpha\beta)_{ij}\) — interaction
  • \(\epsilon_{ijk} \sim N(0, \sigma^2_{SP})\)SP error

Two random components → two error terms → two separate F-tests.

Two Random Components

The model has two independent random terms:

\[\gamma_{ik} \sim N(0,\; \sigma^2_{WP}) \qquad \text{(whole-plot error)}\]

\[\epsilon_{ijk} \sim N(0,\; \sigma^2_{SP}) \qquad \text{(subplot error)}\]

Why two? Because the experiment has two levels of randomization:

  • Between whole-plots → captured by \(\gamma_{ik}\)
  • Within whole-plots → captured by \(\epsilon_{ijk}\)

All subplots within the same whole-plot share the same \(\gamma_{ik}\) value. This makes them correlated — not independent.

Whole-Plot Error (\(\sigma^2_{WP}\)): In Detail

What it captures:

  • Variation between whole-plots that received the same treatment
  • Example: Drip plot 1 vs Drip plot 2 vs Drip plot 3

Sources of whole-plot error:

  • Soil heterogeneity across large field areas
  • Field position effects (slope, drainage)
  • Equipment calibration differences between passes

Consequence: This error is typically large because whole-plots are big and variable.

→ Fewer effective replicates for the WP factor
Lower power for testing whole-plot effects

Subplot Error (\(\sigma^2_{SP}\)): In Detail

What it captures:

  • Variation within a whole-plot, after accounting for subplot treatment effects
  • Example: Differences among the 3 herbicide subplots within Drip plot 1

Sources of subplot error:

  • Local micro-environment variation within a whole-plot
  • Measurement and sampling error
  • Plant-to-plant variability
  • Residual unexplained differences

Consequence: This error is typically small because subplots are close together and share a common environment.

→ More effective replicates for the SPF
Higher power for testing subplot effects

Precision Asymmetry: A Feature, Not a Bug

Whole-Plot Factor (Tillage):

  • Only 4 data points per level (one per block)
  • Tested against larger error (\(\sigma^2_{WP}\))
  • Less precision
  • Harder to declare significant

Subplot Factor (Herbicide):

  • 8 data points per level (4 blocks × 2 tillage levels)
  • Tested against smaller error (\(\sigma^2_{SP}\))
  • More precision
  • Easier to declare significant

This is by design. The split-plot intentionally trades precision on the expensive factor (WPF) for high precision on the cheap factor (SPF). This is an efficient use of limited research budgets.

Part 4: ANOVA Structure

ANOVA Table: General Structure

For a split-plot with \(a\) WPF levels, \(b\) SPF levels, and \(r\) blocks:

Source df MS F denominator
Blocks \(r - 1\) \(MS_{blk}\)
WPF \(a - 1\) \(MS_W\) WP Error
WP Error \((r-1)(a-1)\) \(MS_{WP\,err}\)
SPF \(b - 1\) \(MS_S\) SP Error
WPF × SPF \((a-1)(b-1)\) \(MS_{WS}\) SP Error
SP Error \(a(r-1)(b-1)\) \(MS_{SP\,err}\)
Total \(abr - 1\)

The F-ratios:

\[F_{WPF} = \frac{MS_W}{MS_{WP\,err}} \qquad F_{SPF} = \frac{MS_S}{MS_{SP\,err}} \qquad F_{int} = \frac{MS_{WS}}{MS_{SP\,err}}\]

ANOVA: Palmer Amaranth Worked Example

Design: \(a = 2\) (tillage), \(b = 3\) (herbicide), \(r = 4\) (blocks)

Source df formula df value
Blocks \(r - 1\) \(4 - 1 = 3\)
Tillage (WPF) \(a - 1\) \(2 - 1 = 1\)
WP Error \((r-1)(a-1)\) \(3 \times 1 = 3\)
Herbicide (SPF) \(b - 1\) \(3 - 1 = 2\)
Till × Herb \((a-1)(b-1)\) \(1 \times 2 = 2\)
SP Error \(a(r-1)(b-1)\) \(2 \times 3 \times 2 = 12\)
Total \(abr - 1\) \(24 - 1 = 23\)

Verification: \(3 + 1 + 3 + 2 + 2 + 12 = 23\)

Power Consequences of df

From the Palmer amaranth example:

Tillage test:

  • Numerator df: 1
  • Denominator df: 3 (WP Error)
  • Critical F at α = 0.05: 10.13
  • Requires a LARGE effect to be significant

Herbicide test:

  • Numerator df: 2
  • Denominator df: 12 (SP Error)
  • Critical F at α = 0.05: 3.89
  • Moderate effects will be detectable

Translation: Tillage needs ~2.5× stronger signal than herbicide to reach significance. This is the built-in trade-off of the split-plot design.

References

  • Oehlert, G. W. (2010). A First Course in Design and Analysis of Experiments. Chapter 7: Split-Plot, Strip-Plot, and Related Designs. Available: http://users.stat.umn.edu/~gary/book.html

  • Dean, A. M., Voss, D., & Draguljić, D. (2017). Design and Analysis of Experiments (2nd ed.). Chapter 9.

  • Montgomery, D. C. (2019). Design and Analysis of Experiments (9th ed.). Chapter 14.

  • R packages: dplyr, tidyr, FielDHub (design generation), desplot (field layout visualization), agridat (agricultural datasets)