Skip to main content
v2026.11,610 entries · CC-BY 4.0

Split-Plot Designs: Whole-Plot and Sub-Plot Error Terms

A split-plot design nests an easy-to-change sub-plot factor inside a hard-to-change whole-plot factor, which creates two different randomization units and therefore two different error terms. This guide works through the layout, the correct two-error-term ANOVA, and exactly what happens to the significance tests when the two error terms get pooled into one.

Ask about Split-Plot Designs: Whole-Plot and Sub-Plot Error Terms

Answers are drawn from this guide and the rest of the CASRAI corpus, with a link to every source.

Answers are AI-generated from CASRAI’s own published pages and can be wrong, so check the linked sources before relying on one; your question is logged without personal data — never sold, never used to train a third-party model — to show us what CASRAI is missing, so please do not type personal or confidential details. How we use this

Written and maintained by CASRAI Editorial Board

Last updated

A split-plot design exists because not every factor in an experiment is equally easy to randomize. Some factors — an oven’s temperature setting, a field’s irrigation regime, the teaching method a whole classroom uses — are expensive, slow, or physically impossible to change unit by unit, so they get applied to a larger “whole plot” and randomized at that coarser level. Other factors are cheap to vary and get randomized again, independently, inside each whole plot, at the finer-grained “sub-plot” level. That two-stage randomization is not a shortcut or a compromise applied after the fact — it is the design, and it produces two structurally different sources of experimental error that an ordinary single-error-term ANOVA cannot represent correctly. This guide covers the whole-plot/sub-plot mechanics, works through a full layout and a two-error-term ANOVA on the same synthetic dataset, and shows concretely — with computed F-statistics and p-values, not just the general warning — what happens to the significance tests when a split-plot dataset gets analyzed as if it had only one error term.

What Makes a Design “Split-Plot”

A split-plot design has two treatment factors assigned at two different levels of experimental unit:

  • The whole-plot factor (also called the main-plot factor) is randomized to whole plots — the larger, coarser experimental unit. It is the factor that is hard, slow, or costly to change: an irrigation system that has to be plumbed to a whole field section, a furnace that can only hold one temperature setting per firing, a training program a whole clinic has to adopt at once.
  • The sub-plot factor (also called the split-plot factor) is randomized independently within each whole plot, to the smaller sub-plot units it’s divided into. It is the factor that’s cheap and easy to vary at a finer grain: which fertilizer blend goes on which strip of a field, which sample from a single furnace firing gets which coating, which of several materials a given clinic’s patients each receive.

The name comes directly from the mechanics: each whole plot is literally split into sub-plots, and the sub-plot treatments are assigned within that split. This is a genuinely different structure from an ordinary two-factor experimental design run as a completely randomized design (CRD), where every treatment combination of both factors is independently randomized across the entire population of experimental units with no nesting at all. In a split-plot design, sub-plot observations that share a whole plot are not independent replicates of the whole-plot factor — they all received the same whole-plot treatment, because that treatment was only randomized once per whole plot, not once per sub-plot.

Why the Whole-Plot Factor Gets Nested Instead of Fully Randomized

Split-plot designs are a practical response to a real constraint, not a design flaw. If irrigation regime could be switched independently for every three-foot patch of a field, there would be no reason to nest it — a fully randomized factorial would be the more efficient design and would give the whole-plot factor the same power as the sub-plot factor. Irrigation infrastructure doesn’t work that way: a given zone gets one regime, period, and every plot inside that zone inherits it. The same logic recurs across research areas that have nothing to do with agriculture — anywhere one factor is fixed at the level of a batch, a run, a site, a classroom, or a subject, while a second factor can still be varied inside that unit, the resulting design is structurally a split-plot, whether or not anyone involved calls it one.

A Worked Layout: Irrigation (Whole-Plot) × Fertilizer (Sub-Plot)

A concrete layout makes the two-stage randomization explicit. Take an experiment with two irrigation regimes (the whole-plot factor, A: low, high) and three fertilizer types (the sub-plot factor, B: F1, F2, F3), replicated across four blocks:

  1. Divide the field into 4 blocks (e.g. four sections chosen to be internally uniform on soil quality).
  2. Within each block, randomly assign the 2 irrigation regimes to the block’s 2 whole plots — this is the whole-plot randomization, and it happens once per block, not once per fertilizer type.
  3. Split each whole plot into 3 sub-plots.
  4. Within each whole plot independently, randomly assign the 3 fertilizer types to its 3 sub-plots — this is the sub-plot randomization, and it happens separately inside every one of the 8 whole plots.

The result is 4 blocks × 2 whole plots × 3 sub-plots = 24 observations total, but only 4 × 2 = 8 independent whole-plot randomizations. That gap — 24 observations but only 8 independently-randomized units for the whole-plot factor — is the entire reason a split-plot design needs two error terms instead of one.

Block Whole plot 1 (irrigation) Sub-plots (fertilizer, randomized within) Whole plot 2 (irrigation) Sub-plots (fertilizer, randomized within)
1 Low F2, F1, F3 High F3, F1, F2
2 High F1, F3, F2 Low F2, F3, F1
3 Low F3, F2, F1 High F1, F2, F3
4 High F2, F1, F3 Low F1, F3, F2

Note which factor is randomized where: irrigation (A) is assigned once per whole plot, so its randomization order differs block to block but is fixed within a whole plot; fertilizer (B) is re-randomized separately inside every single whole plot, so its order varies even between the two whole plots in the same block.

Two Randomization Units, Two Error Terms — and the Degrees of Freedom That Go With Them

Because the whole-plot factor and the sub-plot factor are randomized to different-sized units, they each need to be tested against the variability that’s actually relevant to their own randomization — not a single blended residual. Standard split-plot theory (see Montgomery’s Design and Analysis of Experiments or Kuehl’s Design of Experiments for the full derivation) partitions total variation into six pieces for a design with r blocks, a whole-plot levels, and b sub-plot levels:

Source Degrees of freedom Tested against
Blocks r − 1
A (whole-plot factor) a − 1 Error(a) — whole-plot error
Error(a) — whole-plot error (r − 1)(a − 1)
B (sub-plot factor) b − 1 Error(b) — sub-plot error
A × B interaction (a − 1)(b − 1) Error(b) — sub-plot error
Error(b) — sub-plot error a(r − 1)(b − 1)

Error(a), the whole-plot error, is built from the variability among whole plots that received the same level of A within the same block — formally, the block × A interaction. That’s the correct denominator for A’s F-test because it’s the only source of variation that reflects how whole plots actually varied under repeated, independent whole-plot randomization. Error(b), the sub-plot error, is built from the variability among sub-plots within the same whole plot, and is the correct denominator for both the sub-plot factor B and the A×B interaction, because those are what was actually randomized at the sub-plot level.

In the worked layout above (r = 4, a = 2, b = 3): Error(a) has (4−1)(2−1) = 3 degrees of freedom, and Error(b) has 2(4−1)(3−1) = 12. That 3-versus-12 split is the source of a property every split-plot design shares: the whole-plot factor is almost always tested with far fewer degrees of freedom — and therefore far less power, for a given effect size — than the sub-plot factor, even though both factors have the same number of raw observations behind them. Adding more sub-plots per whole plot never fixes this: it grows Error(b)’s degrees of freedom, not Error(a)’s. The only way to gain power for the whole-plot factor is more whole plots — more blocks, in this layout.

Worked ANOVA: Computing Both Error Terms From the Same Data

The following is a fully synthetic, illustrative dataset (not a real trial or field study) built with a fixed, deterministic generator so every number below is directly reproducible: baseline 50, block effects, a true irrigation (A) effect of +3, a true fertilizer (B) effect pattern of +0/+4/+7 across F1/F2/F3, no true interaction, plus a whole-plot-level random component (shared by all 3 sub-plots in a given whole plot, standard deviation 3.0) and an independent sub-plot-level random component (standard deviation 1.0):

Block A level F1 F2 F3
1 Low (A1) 50.78 55.78 57.97
1 High (A2) 52.66 56.58 60.09
2 Low (A1) 48.87 50.70 53.59
2 High (A2) 57.36 60.87 61.67
3 Low (A1) 48.82 51.31 55.52
3 High (A2) 53.36 56.50 60.29
4 Low (A1) 48.92 56.69 57.64
4 High (A2) 56.63 60.08 63.52

Partitioning that data the correct, two-error-term way (all sums of squares computed directly from the standard split-plot formulas, not estimated):

Source SS df MS F p
Blocks 26.334 3 8.778
A (irrigation) 165.480 1 165.480 12.220 0.0396
Error(a) — whole-plot error 40.626 3 13.542
B (fertilizer) 176.648 2 88.324 66.577 <0.001
A × B 0.594 2 0.297 0.224 0.803
Error(b) — sub-plot error 15.920 12 1.327
Total 425.602 23

A is significant against its correct error term, but only just — F(1,3) = 12.220, p = 0.0396 — which is exactly what should be expected: the true effect is real (built into the data at +3), but it’s being tested against only 3 degrees of freedom of whole-plot error, because there were only 8 independently-randomized whole plots behind it. B, by contrast, is tested against 12 degrees of freedom of the much smaller sub-plot error and comes back overwhelmingly significant (p < 0.001) for a similarly real effect. That asymmetry — same underlying data, very different statistical certainty — is the split-plot structure working as designed, not a problem with the analysis.

What Goes Wrong When You Pool the Two Error Terms Into One

The common mistake is analyzing this same dataset as if it were an ordinary factorial design with a single residual — treating all 24 plots as though they’d each been independently randomized to their irrigation level, rather than recognizing that only 8 whole plots actually were. Mechanically, that means pooling Error(a) and Error(b) into one combined residual (SS = 40.626 + 15.920 = 56.546, df = 3 + 12 = 15) and testing every effect against it:

Effect Correct test Naive pooled-error test
A (irrigation) F(1,3) = 12.220, p = 0.0396 F(1,15) = 43.897, p = 0.000008
B (fertilizer) F(2,12) = 66.577, p < 0.001 F(2,15) = 23.430, p = 0.000024
A × B F(2,12) = 0.224, p = 0.803 F(2,15) = 0.079, p = 0.925

For A, the distortion is dramatic: the naive test reports a p-value nearly five thousand times smaller than the correct one (0.000008 versus 0.0396), because it borrows the sub-plot error’s much smaller variance (MS = 1.327) to test an effect that was only randomized at the much noisier whole-plot level (MS = 13.542). That is not a more conservative or more powerful version of the same test — it is the wrong test, using a denominator that describes variability among sub-plots inside the same whole plot as if it described variability among independently-randomized whole plots. Every one of those 12 sub-plot-level “replicates” of a given irrigation level came from just 4 actual whole plots; treating them as though they added independent information about the irrigation effect is pseudo-replication baked directly into the significance test.

Notice the effect isn’t uniformly “more significant” in the naive version — B actually comes out less significant when pooled (p = 0.000024 versus p < 0.001), because pooling blends B’s genuinely small sub-plot error with A’s much larger whole-plot error, inflating B’s denominator too. That is the more general and more reliable way to state the failure: a single pooled error term tests every effect against a blended variance that corresponds to neither factor’s actual randomization unit, so no p-value from that analysis — for either factor — is trustworthy, in whichever direction it happens to move. The size and direction of the distortion depends on how the whole-plot and sub-plot error variances compare in a given dataset; the two-error-term structure is what makes each test correct regardless of that ratio.

Specifying a Split-Plot Model Correctly

The fix is to tell the analysis software which factor was randomized at which level, so it builds the right error strata rather than pooling everything by default:

  • R (base): aov(y ~ A * B + Error(block/A)) — the Error() term declares that A is nested inside block for randomization purposes, which produces the correct whole-plot and sub-plot error strata separately.
  • R (mixed-model formulation): lme4::lmer(y ~ A * B + (1 | block:A)), treating the whole plot (block × A) as a random-effect grouping factor, which is algebraically equivalent to the classical split-plot ANOVA for a balanced design and generalizes more easily to unbalanced ones.
  • SAS: PROC MIXED (or PROC GLM with a RANDOM block block*A; statement) declaring block and the whole-plot term as random effects, so A is tested against the block*A mean square rather than the residual.
  • SPSS: Analyze > Mixed Models > Linear, specifying the whole-plot unit (block × A, or the physical whole-plot identifier) as a random-effects grouping variable rather than running an ordinary univariate ANOVA on the sub-plot-level rows.

In every case, the underlying requirement is the same: the software has to be told explicitly which unit each factor was randomized to. Left to its defaults, most general linear model procedures will assume every row is an independent unit and silently produce the pooled, wrong analysis shown above.

Common Mistakes

  • Running an ordinary two-way ANOVA on the sub-plot-level data without declaring the whole-plot error stratum — the default single-residual mistake worked through above.
  • Confusing sub-sampling with sub-plot replication. Measuring the same whole plot several times (repeated readings from one field section, several aliquots from one reagent batch) is sub-sampling, not independent replication of the whole-plot factor, and doesn’t add real whole-plot-level degrees of freedom no matter how many extra measurements are taken.
  • Forgetting that the interaction term belongs to the sub-plot error stratum, not the whole-plot stratum — A×B is tested against Error(b), not Error(a), because the interaction can only be estimated using the sub-plot-level randomization.
  • Trying to buy whole-plot power with more sub-plots. Only more whole plots — more blocks, or more levels of replication at the whole-plot level — increase Error(a)’s degrees of freedom. Adding sub-plots grows Error(b) instead and does nothing for the whole-plot factor’s power.

Split-Plot Structure Outside Agriculture

The whole-plot/sub-plot pattern shows up anywhere one factor is fixed at a coarser unit than another, regardless of field:

  • Industrial and manufacturing experiments: a furnace or oven temperature setting that’s hard to change run to run (whole-plot factor) with several material or process variants baked in the same firing (sub-plot factor) — the classical industrial split-plot case discussed in Box, Hunter & Hunter’s Statistics for Experimenters.
  • Repeated-measures and longitudinal designs: subject is the whole-plot unit (assigned once, e.g. to a treatment arm) and time or repeated condition is the sub-plot factor, measured multiple times within the same subject — a structural special case of split-plot; see CASRAI’s repeated-measures ANOVA guide for the within-subject error-term mechanics that follow the same logic.
  • Multi-site or cluster-based studies: a site, clinic, or classroom assigned one policy or condition (whole-plot factor) with individual-level treatments varied within it (sub-plot factor) — the same nested-randomization structure, whatever the sample size at either level.

Frequently Asked Questions

What is the difference between a split-plot design and a randomized block design?

A randomized complete block design (RCBD) has one randomization unit: within each block, every treatment is independently randomized to a unit, and one error term covers the whole analysis. A split-plot design has two randomization units nested inside each other — a whole-plot factor randomized to whole plots (often within blocks), and a sub-plot factor re-randomized independently inside each whole plot — which is why it needs two separate error terms instead of one. See CASRAI’s blocking and RCBD guide for the single-error-term case this design extends.

Is a repeated-measures design a split-plot design?

Structurally, yes, in the common case: subject plays the role of the whole plot (assigned once to a between-subjects condition, if there is one), and the repeated within-subject measurements play the role of the sub-plot factor. The within-subject error term in a repeated-measures ANOVA is doing the same job as the sub-plot error term here.

How many blocks or whole plots does a split-plot design need?

Enough to give the whole-plot error term usable degrees of freedom, since that’s almost always the tighter constraint. With a whole-plot levels, Error(a) has (r−1)(a−1) degrees of freedom, so very few blocks leaves the whole-plot factor’s test badly underpowered even with a large true effect — as the worked example above shows even with a genuine +3 effect and only 4 blocks. Formal power analysis for the whole-plot stratum specifically, not just total sample size, is the right way to plan this; see CASRAI’s power analysis and sample size guide.

Can a split-plot design have more than two factors?

Yes — split-split-plot designs extend the same logic to a third factor nested even further inside the sub-plot (a “sub-sub-plot” factor), producing a third error term. The core principle doesn’t change: each factor is tested against the error term built from its own actual randomization unit.

Related CASRAI Resources

Follow CASRAI

Research-administration guidance, standards updates and independent tool reviews.

Referenced across the research world

University of Cambridge logoColumbia University logoCrossref logoUniversity of Edinburgh logoHarvard University logoUniversity of Oxford logoPrinceton University logoStanford School of Medicine logoUniversity College London logoORCID logoUniversity of Cambridge logoColumbia University logoCrossref logoUniversity of Edinburgh logoHarvard University logoUniversity of Oxford logoPrinceton University logoStanford School of Medicine logoUniversity College London logoORCID logo
  • University of Cambridge logo
  • Columbia University logo
  • Crossref logo
  • University of Edinburgh logo
  • Harvard University logo
  • University of Oxford logo
  • Princeton University logo
  • Stanford School of Medicine logo
  • University College London logo
  • ORCID logo

View CASRAI adoption →

Regulatory Radar

Stop finding out after the fact

$29/month, cancel anytime. Daily digest updates from our analysis, a dashboard holding the same items, and a cited assistant for everything they raise.

  • Federal Register, Federal Register+, Grants.gov, Regulations.gov, NSF News, UKRI, plus CASRAI’s own published content.
  • 44,322 indexed passages, and every answer cites the ones it drew on.