# Design of Experiments – Full Factorial Designs

December 1, 2009
By

(This article was first published on Software for Exploratory Data Analysis and Statistical Modelling, and kindly contributed to R-bloggers)

In designs where there are multiple factors, all with a discrete group of level settings, the full enumeration of all combinations of factor levels is referred to as a full factorial design. As the number of factors increases, potentially along with the settings for the factors, the total number of experimental units increases rapidly.

In many cases each factor takes only two levels, often referred to as the low and high levels, the design is known as a 2^k experiment. Given a three factor setup where each factor takes two levels we can create the full factorial design using the expand.grid function:

expand.grid(Factor1 = c("Low", "High"), Factor2 = c("Low", "High"), Factor3 = c("Low", "High"))

which creates the following design:

 Factor1 Factor2 Factor3 1 Low Low Low 2 High Low Low 3 Low High Low 4 High High Low 5 Low Low High 6 High Low High 7 Low High High 8 High High High

We could also make use of the gen.factorial function from the AlgDesign package. In this function we use a vector to specify the number of levels for each of the variables, the number of variables and possibly the names of the variables.

To create the full factorial design for an experiment with three factors with 3, 2, and 3 levels respectively the following code would be used:

gen.factorial(c(3,2,3), 3, center=TRUE, varNames=c("F1", "F2", "F3"))

The center option makes the level settings symmetric which is a common way of representing the design. The full design is:

 F1 F2 F3 1 -1 -1 -1 2 0 -1 -1 3 1 -1 -1 4 -1 1 -1 5 0 1 -1 6 1 1 -1 7 -1 -1 0 8 0 -1 0 9 1 -1 0 10 -1 1 0 11 0 1 0 12 1 1 0 13 -1 -1 1 14 0 -1 1 15 1 -1 1 16 -1 1 1 17 0 1 1 18 1 1 1

R-bloggers.com offers daily e-mail updates about R news and tutorials on topics such as: visualization (ggplot2, Boxplots, maps, animation), programming (RStudio, Sweave, LaTeX, SQL, Eclipse, git, hadoop, Web Scraping) statistics (regression, PCA, time series, trading) and more...