Skip to content

Home / DOE / Additional Information / Blocking

Blocking

A block is a group of runs that share something the experiment is not studying: a day, a batch of raw material, a machine. Blocking puts that grouping into the model so its effect is estimated and removed rather than left in the error.

Setting it up

Blocking is chosen on the page headed Enter number of replicates and number of blocks, during the build or afterwards from QXL DOE New > Modify Design > Change Blocking/Folding. The Design Wizard's version of the same step is headed Enter number of replicates and blocks (optional) instead.

The list starts with No blocking. Every other entry is a number of blocks with one of two labels:

Entry What it means
n (block in design) the blocks come from the design's own structure, and the block effect is confounded with one or more terms
n (block with replicate) the replicates are divided among the blocks, replicate count divided by block count in each

Block with replicate does not mean one block per replicate, unless the two counts happen to match. With 6 replicates the list offers 2, 3 and 6 blocks, since only counts that divide the replicate count are offered; choosing 2 puts 3 replicates in each block.

The two are genuinely different mechanisms, not two ways of saying the same thing. Blocking on replicates skips the block generator machinery completely: no block generators are used and no blocking lines are produced. Blocking in the design uses generators and produces the lines described below.

Which block counts are offered

The list holds only the counts the design can support. The strictest case is Box-Behnken, which has a fixed set per factor count:

Factors Blocks offered
3 none
4 3
5, 6, 7, 10 2
9 5 or 10

The list is the only way in, so an unsupported count cannot normally be reached. Invalid number of blocks for the Box-Behnken Design. is raised in one case: a 9-factor design whose block count is neither 5 nor 10.

Once the replicate count is above 1, block-with-replicate entries are added to the list on top of the counts above, for every design type.

A CCD splits differently: one block takes the axial portion and the remaining blocks divide the factorial portion, which is why with two blocks the factorial part is one block and the axial part is the other.

The blocking lines

With b block generators there are 2^b - 1 blocking lines, each naming the terms the block effect is confounded with. They are not a separate table. They are written as the first lines of the Alias Table on the design sheet, above the factor and interaction lines, and the terms they name are left out of those lines, so a term confounded with a block is listed once and not twice. What blocking does add of its own is the Blocked Resolution heading and its line.

A blocked design also reports its own resolution for the blocks, as Resolution n. Blocks are aliased with terms. A full factorial has no aliasing of its own but can still have a blocked resolution.

Blocking in the design uses block generators, which are words in exactly the sense above and come from the same fixed table, indexed by factor count, run count and block count. They are not design generators and they do not add factors. They choose which runs go in which block.

With \(b\) block generators the block column is built one run at a time. Each generator word is evaluated on the run, giving \(+1\) or \(-1\); each result becomes a bit, \(1\) for a positive product and \(0\) for a result of zero or less; the \(b\) bits are read as a binary number, and the run's block is that number plus one. That gives \(2^b\) blocks.

Quantum XL does also carry the block generators through the defining relation symbolically. It takes each generator word, and each product of two or more of them, which is

\[ 2^b - 1 \]

words, and multiplies each of them through the relation, giving one line per word. That construction never reaches the design sheet. Its only use is internal: the terms those lines name are struck out of the list of interactions the model is allowed to carry, so that a term the blocks have taken is not offered as a model term as well.

The blocking lines the sheet prints are found by scanning the design's columns, exactly as the Identity line is. A term is confounded with a block when its column takes one value throughout each block level, so that its pattern of signs follows the blocks; every term matching a given block pattern is collected onto that pattern's line. The lines are written as the first lines of the alias table, each beginning with the label block and its number, for example block1=CF=EG. There is one line per block column, which is one fewer than the number of blocks. For a design blocked this way that count is also \(2^b - 1\), so the two routes produce the same number of lines by arriving at it separately.

The blocked resolution is

\[ R_b = 1 + \min \{\, n : \text{an } n \text{-factor term is confounded with a block} \,\} \]

reported as Resolution n. Blocks are aliased with terms., where the terms are named as main factors when the smallest confounded term is a main effect and as n-ways otherwise.

Blocking does not change the resolution. The reason is the order the two searches run in. A term found confounded with a block is set aside at that moment, before any term to term pairing is attempted for it, and the record \(R\) is later read from is written only when two terms are matched against each other. A block finding therefore cannot enter the resolution's search at all. Neither can it break a pairing in half: terms on one line share a column exactly, so if one of them holds a single value throughout every block then all of them do, and an alias group leaves the table whole or stays whole. What is left for the resolution search to read is the same set of pairings the design would give with no blocks, so \(R\) is the same number and the blocks report their own number beside it. A design with no aliasing of its own can still report a blocked resolution.

Blocking on replicates is a different mechanism and uses none of this. No block generators are read, no blocking lines are produced and no blocked resolution is reported.

Full details: Aliasing and Resolution.

What blocking does to the ANOVA table

This is the part worth knowing before you read the numbers.

When the model contains a block term, the block is not part of the effect of the factors, so its sum of squares is taken out of the regression sum of squares at the end:

\[ SSR_{\text{reported}} = SSR_{\text{fitted}} - SS_{\text{seq}}(\text{block}) \]

and the regression degrees of freedom drop by one for each blocking column, after which the mean square is recomputed as \(MSR = SSR_{\text{reported}} / df_{\text{reg}}\).

The order matters. The per-term sequential and adjusted sums of squares are computed from the fitted regression sum of squares, the one that still includes the block. Only the reported total has the block removed.

Full details: Sums of Squares.

So on a blocked design the SS Regression printed on the sheet has had the block term taken out of it, while the per-term sums of squares were computed before it was taken out.

R squared and Adj Rsq do NOT follow that removal, and this is the one thing to know before reading a blocked design's sheet. Both come straight out of the fitted regression, which still includes the block, and neither is recomputed from the adjusted SS Regression. So on a blocked design the R squared printed on the sheet does not correspond to the SS Regression printed above it. Only SS Regression, its degrees of freedom and MSR have the block taken out.

The block column on the sheet

The design sheet carries a block column, and the levels are read from it rather than declared: every distinct block value found in a valid row becomes a level, and the list is sorted.

Two consequences:

  • The reference block is the last one, which is the highest block value. That is the block whose coefficient is absent from the regression table.
  • A design has blocks only when more than one distinct block value is present. A column of all 1s is not a blocked design.

A block cell that is not a number stops the run with Invalid block value for run #n.

See Also