CovaSyn
All Articles
Explainer8 min readJuly 15, 2026

Split-Plot Designs for Hard-to-Change Factors

A split plot design DoE worked through with real CovaDOE output: whole-plot vs sub-plot structure, why full randomisation fails in a reactor, and the.

OK

Oliver Kraft

CovaSyn

Split-Plot Designs for Hard-to-Change Factors

Your DoE software hands you a 16-run randomised design and the first three rows tell you to run 70 C, then 110 C, then 70 C again. On paper that is one column of numbers. In the lab it is three thermal cycles on a jacketed reactor, each an hour of ramp and equilibration, and by run 6 the chemist has quietly sorted the sheet by temperature. That reordering is not sloppiness. It is a split-plot design, and if you analyse the data as if it were still fully randomised your p-values are wrong.

Every number below is output from the CovaDOE MCP tools (covadoe_create_design and covadoe_analyze), generated on 2026-07-15.

What makes a factor hard to change

A factor is hard to change when resetting it costs materially more than running the experiment itself. In practice:

  • Reactor or oven temperature - ramp, soak, re-equilibrate.
  • Batch of raw material or catalyst lot - you get one drum, you use it up.
  • Column or instrument configuration - swapping an HPLC column and re-equilibrating.
  • Operator, shift or day - you cannot randomise Tuesday.

Everything else - catalyst loading, base equivalents, reaction time, dilution - is easy to change at no real cost per run.

Complete randomisation assumes every run is an independent reset of the whole system. When temperature is hard to change, that assumption is false, and pretending otherwise is the most common silent error in industrial DoE.

The whole-plot / sub-plot structure

Declare the hard-to-change factor and the design reorganises itself. Here is covadoe_create_design with design_type="full_factorial_2k", four factors, and hard_to_change=["Temperature"]:

FactorTypeLowHigh
Temperature (C)hard to change70110
Catalyst (mol%)easy0.52.5
Base (equiv)easy1.03.0
Time (h)easy212

The tool returns 16 runs and a new column, WholePlot. Its design_info field reads verbatim:

"split_plot": {"hard_to_change": ["Temperature"],
               "n_whole_plots": 2,
               "whole_plot_sizes": [8, 8]}

Runs 1 to 8 sit at 70 C, runs 9 to 16 at 110 C. Two thermal setups instead of an expected eight or nine under full randomisation. The vocabulary:

  • Whole plot - one setting of the hard-to-change factor, held while several runs are executed. Here, one temperature campaign.
  • Sub plot - the individual runs inside a whole plot, where the easy factors are randomised freely.
  • Restricted randomisation - you randomise the order of whole plots, and independently the order of runs within each whole plot. You do not randomise across them.

One trap worth knowing

Setting n_replicates=2 on a two-level hard-to-change factor does not buy you more whole plots. Re-running the same design with three factors and two replicates still returned "n_whole_plots": 2, "whole_plot_sizes": [8, 8]. The tool groups by distinct hard-to-change setting, so replicate runs land inside the existing plots. If you want independent whole-plot replication - and for a proper whole-plot error term you do - you have to physically tear the setup down and rebuild it, and assign the WholePlot labels yourself.

The analysis consequence, with real numbers

This is where it matters. A split-plot experiment has two error terms, not one:

  • Whole-plot error - variation between reactor setups. Reactor cleaning, thermocouple placement, a slightly different ramp profile.
  • Sub-plot error - variation between runs inside one setup. Usually much smaller, because the big sources of variation are held fixed.

The hard-to-change factor is tested against the whole-plot error. The easy factors and their interactions are tested against the sub-plot error.

Worked example: the same reactor system, four whole plots (two at 70 C, two at 110 C, each torn down and rebuilt), four sub-plot runs each. covadoe_analyze picks up the WholePlot column automatically and returns both fits side by side. Per-run yields here were simulated from a known model with a whole-plot offset, standing in for lab measurements; every statistic below is a genuine tool computation on that data.

Standard OLS (the `WholePlot` column ignored):

TermCoefficientStd errorp
Temperature7.8310.90161.14e-05
Catalyst4.8810.90164.26e-04
Time4.0080.90161.61e-03
Catalyst x Time2.0060.90160.0532

R-squared 0.9350, residual MS 13.006 on 9 df. Every term gets the same standard error, because OLS assumes one pooled error. The Catalyst x Time interaction lands at p = 0.0532 and you write it off.

Split-plot fit (`WholePlot` as a random intercept, REML):

TermCoefficientStd errorp
Temperature7.8311.90814.06e-05
Catalyst4.8810.0697< 1e-100
Time4.0080.0697< 1e-100
Catalyst x Time2.0060.0697< 1e-100

Variance components from the tool: whole-plot variance 14.544, residual (sub-plot) variance 0.0778, ICC 0.995, 4 whole plots.

Dumbbell chart of split-plot design standard errors: OLS gives every term 0.9016, while the split-plot REML fit gives temperature 1.9081 and the easy factors 0.0697.
Ignoring the whole-plot structure overstates confidence in the hard-to-change factor (0.9016 vs 1.9081) and understates precision for the easy factors (0.9016 vs 0.0697). Source: Computed with covadoe_analyze on the 16-run split-plot dataset described in this article (4 whole plots, 4 sub-plot runs each, 2026-07-15).

Read the two tables against each other:

1. The coefficients are identical. Split-plot analysis does not change your effect estimates here. It changes what you are allowed to say about them. 2. The hard-to-change factor gets a bigger standard error. Temperature goes from 0.9016 to 1.9081, a factor of 2.1. You have four thermal setups, not sixteen independent runs, so the temperature effect rests on far less information than the run count suggests. OLS was overstating your confidence in the one factor you probably care about most. 3. The easy factors get a much smaller standard error. Catalyst goes from 0.9016 to 0.0697. Holding temperature fixed inside a plot removes the setup-to-setup noise from the within-plot comparisons, and the sub-plot effects are measured far more sharply. The interaction that OLS called borderline at p = 0.0532 is real. 4. ICC 0.995 says almost all the variance is between plots. That is the diagnostic. If ICC is near zero, restricted randomisation cost you nothing. Near one, and the OLS analysis is badly misleading.

Table of a split-plot design DoE fit: coefficients are identical under OLS and REML, the Catalyst x Time term moves from OLS p = 0.0532 to significant, and ICC is 0.995.
The effect estimates do not change, only the error structure does. ICC 0.995 says nearly all variance sits between reactor setups, so the OLS interaction p of 0.0532 is the wrong test. Source: Computed with covadoe_analyze on the 16-run split-plot dataset described in this article (2026-07-15).

There is a fourth number worth flagging. The OLS lack-of-fit test reported ss_pure_error = 117.057 on 8 df with a lack-of-fit p of 1.0 - a clean bill of health. That "pure error" is largely whole-plot variation misfiled as replicate noise. A split-plot design analysed as a CRD can look like a well-fitting model while the error structure is wrong.

Practical rules

  • Declare hard-to-change factors before you generate the design, not after the data is in. hard_to_change changes the run layout, not just the analysis.
  • Aim for at least four whole plots, more if the hard-to-change factor is your main question. Two whole plots leaves zero degrees of freedom for whole-plot error and no honest test of the hard-to-change effect.
  • Whole-plot replication means a genuine teardown and rebuild. Two runs in the same reactor charge are sub-plot replicates, whatever the sheet says.
  • Keep the WholePlot column all the way to analysis. covadoe_analyze looks for it by name; drop it and you silently get the OLS answer.
  • If your chemist re-sorted an existing randomised sheet by temperature, you already ran a split-plot experiment. Reconstruct the whole-plot labels from the lab notebook and re-analyse.

What this does not tell you

  • It does not recover power for the hard-to-change factor. The split-plot analysis reports your temperature effect honestly; it does not make it better. If temperature is the primary question, buy more whole plots, not more sub-plot runs.
  • The sub-plot p-values in the example are extreme by construction. The simulated sub-plot noise was small (residual variance 0.0778), so the REML standard errors are correspondingly tiny. Take the direction of the shift as the lesson, not the magnitude. Real assay noise will be larger.
  • Four whole plots is a thin basis for a variance component. The 14.544 whole-plot variance is estimated from four setups. Treat it as an order of magnitude, not a validated number.
  • A split-plot layout does not fix a bad factor range. If your temperature window is narrower than your process noise, no error structure rescues the experiment. And this is design and analysis support, not a filing: any design space or NOR you derive still needs confirmation runs on the real equipment.

Frequently asked questions

What is a split-plot design in DoE?

A split-plot design is an experiment with restricted randomisation, used when one or more factors are hard or expensive to change. The hard-to-change factor is set once and held while several runs are executed at that setting (the whole plot); the easy factors are randomised within it (the sub plots). It has two error terms instead of one: whole-plot error between setups and sub-plot error within them.

Why can I not just fully randomise my design?

Because full randomisation assumes each run is an independent reset of the system. If a temperature change costs an hour of ramp and equilibration, a 16-run randomised design demands roughly 15 resets. Teams almost always reorder the sheet by temperature instead, which converts the design into a split plot whether or not anyone records it. Declaring it up front is cheaper than discovering it afterwards.

What happens if I analyse a split-plot experiment as if it were completely randomised?

Your effect estimates stay the same, but the standard errors are wrong in both directions. In the CovaDOE example, ordinary least squares gave the hard-to-change factor a standard error of 0.9016 while the split-plot fit gave 1.9081 - so OLS overstated confidence in temperature. For the easy factors OLS gave 0.9016 against 0.0697, understating precision and hiding a real Catalyst x Time interaction at p = 0.0532.

How many whole plots do I need?

At least four if you want to say anything about the hard-to-change factor. Two whole plots (the minimum a two-level factor produces) leaves no degrees of freedom for whole-plot error. Adding more runs inside an existing plot does not help: they are sub-plot replicates. Whole-plot replication requires a genuine teardown and rebuild of the setup.

What is the ICC telling me?

The intraclass correlation is the share of total variance sitting between whole plots rather than within them. In the worked example covadoe_analyze returned ICC 0.995, meaning almost all variation came from setup-to-setup differences. A high ICC means the split-plot analysis is essential; an ICC near zero means restricted randomisation cost you very little and the two analyses will broadly agree.

Can I use a split-plot structure with a response surface design?

Yes. The structure is independent of the design family - factorial, central composite or optimal designs can all be laid out in whole plots. The practical constraint is that a rotatable CCD wants several levels of every factor, including the hard-to-change one, which means more setups. Budget the whole plots first, then choose the design that fits.

Related reading

You can generate a split-plot layout and run the two-error-term analysis yourself on the CovaSyn free tier.

Tools for this topic

Use these in your AI agent right away.

  • CovadoeDesign of Experiments, RSM, templates.
Split-Plot Designs for Hard-to-Change Factors | CovaSyn