Two-level designs are sufficient for evaluating many production
processes. Factor levels of ±`1`

can indicate
categorical factors, normalized factor extremes, or simply “up”
and “down” from current factor settings. Experimenters
evaluating process *changes* are interested primarily
in the factor directions that lead to process improvement.

For experiments with many factors, two-level full factorial
designs can lead to large amounts of data. For example, a two-level
full factorial design with 10 factors requires 2^{10} =
1024 runs. Often, however, individual factors or their interactions
have no distinguishable effects on a response. This is especially
true of higher order interactions. As a result, a well-designed experiment
can use fewer runs for estimating model parameters.

Fractional factorial designs use a fraction of the runs required
by full factorial designs. A subset of experimental treatments is
selected based on an evaluation (or assumption) of which factors and
interactions have the most significant effects. Once this selection
is made, the experimental design must separate these effects. In particular,
significant effects should not be *confounded*,
that is, the measurement of one should not depend on the measurement
of another.

*Plackett-Burman designs* are
used when only main effects are considered significant. Two-level
Plackett-Burman designs require a number of experimental runs that
are a multiple of 4 rather than a power of 2. The MATLAB^{®} function `hadamard`

generates these designs:

dPB = hadamard(8) dPB = 1 1 1 1 1 1 1 1 1 -1 1 -1 1 -1 1 -1 1 1 -1 -1 1 1 -1 -1 1 -1 -1 1 1 -1 -1 1 1 1 1 1 -1 -1 -1 -1 1 -1 1 -1 -1 1 -1 1 1 1 -1 -1 -1 -1 1 1 1 -1 -1 1 -1 1 1 -1

Binary factor levels are indicated by ±`1`

.
The design is for eight runs (the rows of `dPB`

)
manipulating seven two-level factors (the last seven columns of `dPB`

).
The number of runs is a fraction 8/2^{7} =
0.0625 of the runs required by a full factorial design. Economy is
achieved at the expense of confounding main effects with any two-way
interactions.

At the cost of a larger fractional design, you can specify which
interactions you wish to consider significant. A design of *resolution* *R* is
one in which no *n*-factor interaction is confounded
with any other effect containing less than *R* – *n* factors.
Thus, a resolution III design does not confound main effects with
one another but may confound them with two-way interactions (as in Plackett-Burman Designs), while a resolution
IV design does not confound either main effects or two-way interactions
but may confound two-way interactions with each other.

Specify general fractional factorial designs using a full factorial
design for a selected subset of *basic factors* and *generators* for the remaining factors.
Generators are products of the basic factors, giving the levels for
the remaining factors. Use the Statistics and Machine
Learning Toolbox™ function `fracfact`

to generate these designs:

dfF = fracfact('a b c d bcd acd') dfF = -1 -1 -1 -1 -1 -1 -1 -1 -1 1 1 1 -1 -1 1 -1 1 1 -1 -1 1 1 -1 -1 -1 1 -1 -1 1 -1 -1 1 -1 1 -1 1 -1 1 1 -1 -1 1 -1 1 1 1 1 -1 1 -1 -1 -1 -1 1 1 -1 -1 1 1 -1 1 -1 1 -1 1 -1 1 -1 1 1 -1 1 1 1 -1 -1 1 1 1 1 -1 1 -1 -1 1 1 1 -1 -1 -1 1 1 1 1 1 1

This is a six-factor design in which four two-level basic factors
(`a`

, `b`

, `c`

,
and `d`

in the first four columns of `dfF`

)
are measured in every combination of levels, while the two remaining
factors (in the last three columns of `dfF`

) are
measured only at levels defined by the generators `bcd`

and `acd`

,
respectively. Levels in the generated columns are products of corresponding
levels in the columns that make up the generator.

The challenge of creating a fractional factorial design is to
choose basic factors and generators so that the design achieves a
specified resolution in a specified number of runs. Use the Statistics and Machine
Learning Toolbox function `fracfactgen`

to find appropriate generators:

generators = fracfactgen('a b c d e f',4,4) generators = 'a' 'b' 'c' 'd' 'bcd' 'acd'

`a`

through `f`

, using 2`fracfactgen`

function
uses an efficient search algorithm to find generators that meet the
requirements.An optional output from `fracfact`

displays
the *confounding
pattern* of the design:

[dfF,confounding] = fracfact(generators); confounding confounding = 'Term' 'Generator' 'Confounding' 'X1' 'a' 'X1' 'X2' 'b' 'X2' 'X3' 'c' 'X3' 'X4' 'd' 'X4' 'X5' 'bcd' 'X5' 'X6' 'acd' 'X6' 'X1*X2' 'ab' 'X1*X2 + X5*X6' 'X1*X3' 'ac' 'X1*X3 + X4*X6' 'X1*X4' 'ad' 'X1*X4 + X3*X6' 'X1*X5' 'abcd' 'X1*X5 + X2*X6' 'X1*X6' 'cd' 'X1*X6 + X2*X5 + X3*X4' 'X2*X3' 'bc' 'X2*X3 + X4*X5' 'X2*X4' 'bd' 'X2*X4 + X3*X5' 'X2*X5' 'cd' 'X1*X6 + X2*X5 + X3*X4' 'X2*X6' 'abcd' 'X1*X5 + X2*X6' 'X3*X4' 'cd' 'X1*X6 + X2*X5 + X3*X4' 'X3*X5' 'bd' 'X2*X4 + X3*X5' 'X3*X6' 'ad' 'X1*X4 + X3*X6' 'X4*X5' 'bc' 'X2*X3 + X4*X5' 'X4*X6' 'ac' 'X1*X3 + X4*X6' 'X5*X6' 'ab' 'X1*X2 + X5*X6'

The confounding pattern shows that main effects are effectively separated by the design, but two-way interactions are confounded with various other two-way interactions.