Learn R Programming

FrF2 (version 2.1)

splitplot: Statistical and algorithmic aspects of split-plot designs in FrF2

Description

This help page documents the statistical and algorithmic details of split-plot designs in FrF2

Arguments

Details

A split-plot design is similar to a blocked design, with the difference that there are also factors of interest that can be only changed on block level (so-called whole plot factors). The blocks are called “plots” in the context of split-plot designs. The factors that can (and should!) be varied within a plot are called split-plot factors. Note that the experiment provides more information on split-plot factors than on whole-plot factors.

Warning: In terms of analysis, split-plot designs would have to be treated by advanced random effects models, but often are not. At the very least, the user must be aware that all whole-plot effects (i.e. effects on columns that only change between plots) are (likely to be) more variable than split-plot effects so that e.g. it does not necessarily mean anything if they stick out in a normal or half-normal effects plot.

Designs for hard-to-change factors are also treated by the split-plot approach in function FrF2, although they are not quite split-plot designs: The are non-randomized split-plot designs arranged in an order such that the first whole-plot factors have as few as possible changes. This gives very poor information on these first whole-plot factors (which in the extreme are only changed once or twice), if there is variability involved with setting the factor levels. If hard-to-change factors can be implemented as true whole-plot factors with randomization, this is by far preferrable from a statistical point of view (but may nevertheless be rejected from a feasibility point of view, as the necessary changes may seem unaffordable).

For design generation, there are two principal ways to handle split-plot designs, manual definition (i.e. the user specifies exactly which columns are to be used for which purpose) and automatic definition. Each situation has its specifics. These are detailed below. For users with not so much mathematical/statistical background, it will often be best to use the automatic way, specifying the treatement factors of interest via nfactors or factor.names and a single number for WPs. Users with more mathematical background may want to use the manual definitions, perhaps in conjunction with published catalogues of good split-plot designs, or after inspecting possibilities with function splitpick.

Manual definition of split-plot designs

The user can specify a design with the design or the generators option and specify manually with the WPfacs option, which factors are whole plot factors (i.e. factors that do not change within a plot). The other factors become split-plot factors (i.e. factors that do change within a plot). If the user chooses this route, WPfacs must be character vectors of factor names, factor letters, factor numbers preceded by capital F, or a vector or list of factor position numbers (NOT: Yates column numbers). Caution: It is the users responsibility to ensure a good choice of split-plot design (e.g. by using a catalogued design from Huang, Chen and Voelkel 1998, Bingham and Sitter 2003, or Bingham Schoen and Sitter 2004). In case of a user-mistake such that the resulting design is not a split-plot design with the alleged number of whole plots, an error is thrown.

Automatic definition of split-plot designs

As mentioned above, split-plot designs differ from block designs by the fact that the block main effects are purely nuisance parameters which are assumed (based on prior knowledge) to be relevant but are not of interest, while the plots are structured by nfac.WP whole plot factors, which are of interest. The user has to decide on a number of whole plots (WPs) as well as the number of whole plot factors nfac.WP. If log2(WPs) <= nfac.WP <= WPs-1, it is obviously in principle possible to accomodate the desired number of whole plot factors in the desired number of whole plots. If nfac.WP > WPs/2, the base design for the split-plot structure has to be of resolution III. Sometimes, subject matter considerations limit whole plot sizes, and there are only few interesting whole plot factors, i.e. nfac.WP < log2(WPs). In this case, it is of course nevertheless necessary to have a total of log2(WPs) whole plot construction factors; the missing log2(WPs) - nfac.WP factors are added to the design (names starting with WP), and nfactors is increased accordingly.

In all cases, the first nfac.WPs user-specified factors are treated as whole plot factors, the remaining factors as split-plot factors.

From there, function FrF2 proceeds like in the blocked situation by starting with the best design and working its way down to worse designs, if the best design cannot accomodate the desired split-plot structure. For each design, function FrF2 calls function splitpick, which permutes base factors until the requested whole plot / split-plot structure is achieved, or until impossibility for this design with these base factors has been ascertained. In the latter case, function FrF2 proceeds to the next best design and so forth.

If several competing split-plot designs based on the same base design are found, the best possible resolution among the first check.WPs such designs is chosen. No further criteria are automatically implemented, and no more than check.WPs designs are checked. If not satisfied with the structure of the whole plot portion of the experiment, increasing check.WPs vs. the default 10 may help. Expert users may want to inspect possibilities, using function splitpick directly.

Note that the algorithm does not necessarily find an existing split-plot design. It has been checked out which catalogued designs it can find: designs for all catalogued situations from Bingham and Sitter (2003) have been found, as well as for most catalogued situations from Huang, Chen and Voelkel (1998). Occasionally, a better design than catalogued has been found, e.g. for 4 whole plot and 10 split plot factors in 32 runs with 16 whole plots, the design found by the algorithm is resolution IV, while Huang, Chen and Voelkel propose a resolution III design. The algorithm has the largest difficulties with extreme designs in the sense that a large number of whole plots with a small number of whole plot factors are to be accomodated; thus it does not find designs for the more extreme situations in Bingham, Schoen and Sitter (2004).

Please contact me with any suggestions for improvements.

References

Bingham, D.R., Schoen, E.D. and Sitter, R.R. (2004). Designing Fractional Factorial Split-Plot Experiments with Few Whole-Plot Factors. Applied Statistics 53, 325-339.

Bingham, D. and Sitter, R.R. (2003). Fractional Factorial Split-Plot Designs for Robust Parameter Experiments. Technometrics 45, 80-89.

Chen, J., Sun, D.X. and Wu, C.F.J. (1993) A catalogue of 2-level and 3-level orthogonal arrays. International Statistical Review 61, 131-145.

Cheng, C.-S. and Tsai, P.-W. (2009). Optimal two-level regular fractional factorial block and split-plot designs. Biometrika 96, 83-93.

Huang, P., Chen, D. and Voelkel, J.O. (1998). Minimum-Aberration Two-Level Split-Plot Designs. Technometrics 40, 314-326.

See Also

See Also FrF2 for regular fractional factorials, catlg for the Chen, Sun, Wu catalogue of designs and some accessor functions, and block for the statistical aspects of blocked designs.

Examples

Run this code
# NOT RUN {
########## hard to change factors ####################
## example from Bingham and Sitter Technometrics 19999
## MotorSpeed, FeedMode,FeedSizing,MaterialType are hard to change
BS.ex <- FrF2(16,7,hard=4,
     factor.names=c("MotorSpeed", "FeedMode","FeedSizing","MaterialType",
                  "Gain","ScreenAngle","ScreenVibLevel"), 
     default.levels=c("-","+"))
design.info(BS.ex)
BS.ex
## NOTE: the design has 8 whole plots.
## The first hard-to-change factors have very few changes only 
## between whole plots. 
## A conscious and honest decision is required whether it is 
##    acceptable for the situation at hand not to reset them!
## A proper split-plot design with resetting all whole plot factors 
## for each whole plot would be strongly preferred from a 
## statistical point of view. 

########## automatic generation for split plot ##########
## 3 control factors, 5 noise factors, control factors are whole plot factors
## 8 plots desired in a total of 32 runs
## Bingham Sitter 2003
BS.ex2a <- FrF2(32, 8, WPs=8, nfac.WP=3, 
      factor.names=c(paste("C",1:3,sep=""), paste("N",1:5,sep="")),randomize=TRUE)

## manual generation of this same design
BS.ex2m <- FrF2(32, 8, generators=c("ABD","ACD","BCDE"),WPs=8, WPfacs=c("C1","C2","C3"), nfac.WP=3, 
      factor.names=c(paste("C",1:3,sep=""),paste("N",1:5,sep="")),randomize=TRUE)

## design with few whole plot factors
## 2 whole plot factors, 7 split plot factors
## 8 whole plots, i.e. one extra WP factor needed
BSS.cheese.exa <- FrF2(32, 9, WPs=8, nfac.WP=2, 
      factor.names=c("A","B","p","q","r","s","t","u","v"))
design.info(BSS.cheese.exa)
## manual generation of the design used by Bingham, Schoen and Sitter
## note that the generators include a generator for the 10th spplitting factor
    ## s= ABq, t = Apq, u = ABpr and v = Aqr, splitting factor rho=Apqr
BSS.cheese.exm <- FrF2(32, gen=list(c(1,2,4),c(1,3,4),c(1,2,3,5),c(1,4,5),c(1,3,4,5)), 
      WPs=8, nfac.WP=3, WPfacs=c(1,2,10),
      factor.names=c("A","B","p","q","r","s","t","u","v","rho"))
design.info(BSS.cheese.exm)
# }

Run the code above in your browser using DataLab