Skip to main content

What are the statistics behind full factorial designs?

Updated over a year ago

Full factorial designs (often just referred to as “factorial designs” outside of a DOE context) are the simple design type where the design contains all possible combinations of the levels of the constituent factors.

As an example, for a 2-level, 2-factor factorial design with high and low levels encoded as +1 and -1 respectively, the full design matrix is

Hopefully it’s easy to see that every combination of the two levels (+/-1), for the two factors X1 & X2, appears exactly once.

Designs of this type can be useful directly, but have the big disadvantage that they require a lot of runs once the number of factors and levels becomes large. It is also important to understand them, because they are the basis from which fractional factorial designs are derived.

Characteristics of Full Factorial Designs

Probably the biggest advantage of full factorials is that they are simple. Since every possible combination of levels is represented in the design, they have a lot of symmetry. In the two-level case you can take any run, invert all the levels and you will find that complementary run will appear in the design as well.

This can be useful at multiple stages in the process: when implementing the design it’s possible, in the case of smaller full factorials, to just remember all the runs you need to do, making things a lot easier to keep track of. When analysing the design it’s possible to find a way to compare runs on any basis you like: differing by exactly one factor for example. This means that essentially any effect you want to example is free from interference from other effects.

Of course this comes at a cost, and the biggest disadvantage of full factorials is that they require a lot of runs. Considering only the case where all factors are examined at 2 levels the number of runs is then 2^f, where f is the number of factors.

So for only 6 factors you would require 64 runs to do a full factorial design, while 9 factors would require 512. That’s a lot of effort!

When are they useful? And when aren’t they useful?

Full factorial designs are very useful for investigating systems where you expect there to be very high-order interactions. This is because in general, for a design with f factors, you can reliably distinguish between interactions up to order f-1. So with 8 factors you would be able to estimate 7-factor interactions using a full factorial design!

Experimenters often find this a comfortable situation: it’s hard to say for sure what order of interaction you would expect a priori. Especially given the complexity of biology it seems like we shouldn’t rule these out. However this limits the number of factors you can explore with a reasonable number of runs. As well as being complex, biology is also subject to a lot of possible influences so being limited to (say) 6 factors is often very restrictive.

To get over this, the usual trick is to assume that interactions become increasingly rare as the order increases, essentially becoming extremely unlikely once you are considering more than 4-factor interactions. By creating the design in the right way, you can sacrifice the ability to detect (say) 5th or higher order interactions, while keeping the ability to distinguish main effects, 2-factor interactions etc. This allows you to extend the number of factors significantly without using anywhere near the same number of runs - it’s possible to get comfortably into double-digit numbers of factors this way. There are several ways to do this: a conventional route is to take some fraction of the runs away from a full factorial but keeping things symmetrical. This leads to the related class of designs known as fractional factorials. Another approach is to create an optimal design with the required model.

Full Factorials and Power

So far we’ve talked a lot about distinguishing different effects of different orders - the ability of a design to do this is a matter of its resolution. However there’s a second characteristic we need to consider: the power of the design. This describes the statistical ability to distinguish signal from chance variation due to noise.

It’s often assumed that full factorial designs are very high-powered for main effects and low-order interactions (power always tends to decrease as the order of interactions increases) but this is not always true. It’s actually a side-effect of the way full factorials need a lot of runs as you increase the number of factors.

Power is essentially a function of the number of runs in the design. For a main effect, the number of runs used to test if the effect is real is half the runs in the design. Clearly this is plenty once you have several factors in the design (5 or more, say) but for small numbers of factors the number of runs is also quite small - only 4 runs for 2 factors, for example. This gives you relatively low power and means it will be hard to distinguish signal from noise in most real systems.

The moral of this story: full factorial designs can be underpowered in cases where the number of factors is small. To rectify this it’s a good idea to replicate the design until the power is acceptable.

Reference Information

Full factorial designs are calculated directly by Synthace as the Cartesian product of the factors levels specified by the user. This is implemented using the Pandas dataframe.product operator.

To learn how to calculate a full factorial design in Synthace, click here.

To learn about other design types, click here.

Did this answer your question?