1. Fractional factorials and fold-over
(a). The design can be generated using

  library(FrF2)
  n <- 16
  k <- 9
  q1a.design <- FrF2(n, k, factor.names = paste0("x", 1:k), 
                  generators = list(c(1, 2, 3), c(1, 2, 4), c(1, 3, 4), 
                                    c(2, 3, 4), c(1, 2, 3, 4)),
                  randomize = F, alias.info = 3)

Each item in generators needs to specify the interaction column from the 16 run full factorial design (with four factors) to which the fifth, sixth, etc. factor will be assigned, eg the first generator specifies that factor \(x_5\) is assigned to the interaction column \(x_1x_2x_3\).

The alias scheme can be examined using either the design.info()$aliased or alias functions. Either way, notice that each main effect is completely aliased with at least one two-factor interaction.

    design.info(q1a.design)$aliased
## $legend
## [1] "A=x1" "B=x2" "C=x3" "D=x4" "E=x5" "F=x6" "G=x7" "H=x8" "J=x9"
## 
## $main
## [1] "A=HJ=BCE=BDF=BGH=CDG=CFH=DEH=EFG" "B=GJ=ACE=ADF=AGH=CDH=CFG=DEG=EFH"
## [3] "C=FJ=ABE=ADG=AFH=BDH=BFG=DEF=EGH" "D=EJ=ABF=ACG=AEH=BCH=BEG=CEF=FGH"
## [5] "E=DJ=ABC=ADH=AFG=BDG=BFH=CDF=CGH" "F=CJ=ABD=ACH=AEG=BCG=BEH=CDE=DGH"
## [7] "G=BJ=ABH=ACD=AEF=BCF=BDE=CEH=DFH" "H=AJ=ABG=ACF=ADE=BCD=BEF=CEG=DFG"
## [9] "J=AH=BG=CF=DE"                   
## 
## $fi2
## [1] "AB=CE=DF=GH=AGJ=BHJ=CDJ=EFJ" "AC=BE=DG=FH=AFJ=BDJ=CHJ=EGJ"
## [3] "AD=BF=CG=EH=AEJ=BCJ=DHJ=FGJ" "AE=BC=DH=FG=ADJ=BFJ=CGJ=EHJ"
## [5] "AF=BD=CH=EG=ACJ=BEJ=DGJ=FHJ" "AG=BH=CD=EF=ABJ=CEJ=DFJ=GHJ"
## 
## $fi3
## [1] "AHJ=BGJ=CFJ=DEJ"
    q1a.alias <- alias(y ~ (.)^2, data = data.frame(q1a.design, y = vector(length = 16)))
    q1a.alias
## Model :
## y ~ (x1 + x2 + x3 + x4 + x5 + x6 + x7 + x8 + x9)^2
## 
## Complete :
##         (Intercept) x11 x21 x31 x41 x51 x61 x71 x81 x91 x11:x21 x11:x31 x11:x41
## x11:x81 0           0   0   0   0   0   0   0   0   1   0       0       0      
## x11:x91 0           0   0   0   0   0   0   0   1   0   0       0       0      
## x21:x31 0           0   0   0   0   0   0   0   0   0   0       0       0      
## x21:x41 0           0   0   0   0   0   0   0   0   0   0       0       0      
## x21:x51 0           0   0   0   0   0   0   0   0   0   0       1       0      
## x21:x61 0           0   0   0   0   0   0   0   0   0   0       0       1      
## x21:x71 0           0   0   0   0   0   0   0   0   1   0       0       0      
## x21:x81 0           0   0   0   0   0   0   0   0   0   0       0       0      
## x21:x91 0           0   0   0   0   0   0   1   0   0   0       0       0      
## x31:x41 0           0   0   0   0   0   0   0   0   0   0       0       0      
## x31:x51 0           0   0   0   0   0   0   0   0   0   1       0       0      
## x31:x61 0           0   0   0   0   0   0   0   0   1   0       0       0      
## x31:x71 0           0   0   0   0   0   0   0   0   0   0       0       1      
## x31:x81 0           0   0   0   0   0   0   0   0   0   0       0       0      
## x31:x91 0           0   0   0   0   0   1   0   0   0   0       0       0      
## x41:x51 0           0   0   0   0   0   0   0   0   1   0       0       0      
## x41:x61 0           0   0   0   0   0   0   0   0   0   1       0       0      
## x41:x71 0           0   0   0   0   0   0   0   0   0   0       1       0      
## x41:x81 0           0   0   0   0   0   0   0   0   0   0       0       0      
## x41:x91 0           0   0   0   0   1   0   0   0   0   0       0       0      
## x51:x61 0           0   0   0   0   0   0   0   0   0   0       0       0      
## x51:x71 0           0   0   0   0   0   0   0   0   0   0       0       0      
## x51:x81 0           0   0   0   0   0   0   0   0   0   0       0       1      
## x51:x91 0           0   0   0   1   0   0   0   0   0   0       0       0      
## x61:x71 0           0   0   0   0   0   0   0   0   0   0       0       0      
## x61:x81 0           0   0   0   0   0   0   0   0   0   0       1       0      
## x61:x91 0           0   0   1   0   0   0   0   0   0   0       0       0      
## x71:x81 0           0   0   0   0   0   0   0   0   0   1       0       0      
## x71:x91 0           0   1   0   0   0   0   0   0   0   0       0       0      
## x81:x91 0           1   0   0   0   0   0   0   0   0   0       0       0      
##         x11:x51 x11:x61 x11:x71
## x11:x81 0       0       0      
## x11:x91 0       0       0      
## x21:x31 1       0       0      
## x21:x41 0       1       0      
## x21:x51 0       0       0      
## x21:x61 0       0       0      
## x21:x71 0       0       0      
## x21:x81 0       0       1      
## x21:x91 0       0       0      
## x31:x41 0       0       1      
## x31:x51 0       0       0      
## x31:x61 0       0       0      
## x31:x71 0       0       0      
## x31:x81 0       1       0      
## x31:x91 0       0       0      
## x41:x51 0       0       0      
## x41:x61 0       0       0      
## x41:x71 0       0       0      
## x41:x81 1       0       0      
## x41:x91 0       0       0      
## x51:x61 0       0       1      
## x51:x71 0       1       0      
## x51:x81 0       0       0      
## x51:x91 0       0       0      
## x61:x71 1       0       0      
## x61:x81 0       0       0      
## x61:x91 0       0       0      
## x71:x81 0       0       0      
## x71:x91 0       0       0      
## x81:x91 0       0       0

(b). To generate the foldover design, we can use:

    q1b.design <- fold.design(q1a.design)
    q1b.design
##    x1 x2 x3 x4     fold x5 x6 x7 x8 x9
## 1  -1 -1 -1 -1 original -1 -1 -1 -1  1
## 2   1 -1 -1 -1 original  1  1  1 -1 -1
## 3  -1  1 -1 -1 original  1  1 -1  1 -1
## 4   1  1 -1 -1 original -1 -1  1  1  1
## 5  -1 -1  1 -1 original  1 -1  1  1 -1
## 6   1 -1  1 -1 original -1  1 -1  1  1
## 7  -1  1  1 -1 original -1  1  1 -1  1
## 8   1  1  1 -1 original  1 -1 -1 -1 -1
## 9  -1 -1 -1  1 original -1  1  1  1 -1
## 10  1 -1 -1  1 original  1 -1 -1  1  1
## 11 -1  1 -1  1 original  1 -1  1 -1  1
## 12  1  1 -1  1 original -1  1 -1 -1 -1
## 13 -1 -1  1  1 original  1  1 -1 -1  1
## 14  1 -1  1  1 original -1 -1  1 -1 -1
## 15 -1  1  1  1 original -1 -1 -1  1 -1
## 16  1  1  1  1 original  1  1  1  1  1
## 17  1  1  1  1   mirror  1  1  1  1 -1
## 18 -1  1  1  1   mirror -1 -1 -1  1  1
## 19  1 -1  1  1   mirror -1 -1  1 -1  1
## 20 -1 -1  1  1   mirror  1  1 -1 -1 -1
## 21  1  1 -1  1   mirror -1  1 -1 -1  1
## 22 -1  1 -1  1   mirror  1 -1  1 -1 -1
## 23  1 -1 -1  1   mirror  1 -1 -1  1 -1
## 24 -1 -1 -1  1   mirror -1  1  1  1  1
## 25  1  1  1 -1   mirror  1 -1 -1 -1  1
## 26 -1  1  1 -1   mirror -1  1  1 -1 -1
## 27  1 -1  1 -1   mirror -1  1 -1  1 -1
## 28 -1 -1  1 -1   mirror  1 -1  1  1  1
## 29  1  1 -1 -1   mirror -1 -1  1  1 -1
## 30 -1  1 -1 -1   mirror  1  1 -1  1  1
## 31  1 -1 -1 -1   mirror  1  1  1 -1  1
## 32 -1 -1 -1 -1   mirror -1 -1 -1 -1 -1
## class=design, type= FrF2.generators.folded

Previously, \(x_1 = x_8x_9\) (for example); now, for half the design \(x_1 = x_8x_9\), and for the other half \(x_1 = -x_8x_9\). Therefore, for the whole design the aliasing is broken (knowing the value of \(x_1\) no longer determines the value of \(x_8x_9\)). We can check this using design.info(q1b.design)$aliasedalias:

    design.info(q1b.design)$aliased
## $legend
##  [1] "A=x1"   "B=x2"   "C=x3"   "D=x4"   "E=fold" "F=x5"   "G=x6"   "H=x7"  
##  [9] "J=x8"   "K=x9"  
## 
## $main
##  [1] "A=BCF=BDG=BHJ=-EJK" "B=ACF=ADG=AHJ=-EHK" "C=GK=ABF=DFG=FHJ"  
##  [4] "D=FK=ABG=CFG=GHJ"   "E=-AJK=-BHK"        "F=DK=ABC=CDG=CHJ"  
##  [7] "G=CK=ABD=CDF=DHJ"   "H=ABJ=-BEK=CFJ=DGJ" "J=ABH=-AEK=CFH=DGH"
## [10] "K=CG=DF=-AEJ=-BEH" 
## 
## $fi2
##  [1] "AB=CF=DG=HJ=CDK=FGK"             "AC=BF=AGK=BDK=-DEH=-EGJ"        
##  [3] "AD=BG=AFK=BCK=-CEH=-EFJ"         "AE=-JK=-CDH=-CGJ=-DFJ=-FGH"     
##  [5] "AF=BC=ADK=BGK=-DEJ=-EGH"         "AG=BD=ACK=BFK=-CEJ=-EFH"        
##  [7] "AH=BJ=-CDE=-EFG"                 "AJ=BH=-EK=-CEG=-DEF"            
##  [9] "AK=-EJ=ACG=ADF=BCD=BFG"          "BE=-HK=-CDJ=-CGH=-DFH=-FGJ"     
## [11] "BK=-EH=ACD=AFG=BCG=BDF"          "CD=FG=ABK=-AEH=-BEJ=CFK=DGK=HJK"
## [13] "CE=-ADH=-AGJ=-BDJ=-BGH=EGK"      "CH=FJ=-ADE=-BEG=DJK=GHK"        
## [15] "CJ=FH=-AEG=-BDE=DHK=GJK"         "DE=-ACH=-AFJ=-BCJ=-BFH=EFK"     
## [17] "DH=GJ=-ACE=-BEF=CJK=FHK"         "DJ=GH=-AEF=-BCE=CHK=FJK"        
## [19] "EF=-ADJ=-AGH=-BDH=-BGJ=DEK"      "EG=-ACJ=-AFH=-BCH=-BFJ=CEK"     
## 
## $fi3
## [1] "ABE=-AHK=-BJK=CEF=DEG=EHJ" "CGK=DFK"
    q1b.alias <- alias(y ~ (.)^2, data = data.frame(q1b.design[, c(-5)], 
                                                    y = vector(length = 2 * n)))
    q1b.alias
## Model :
## y ~ (x1 + x2 + x3 + x4 + x5 + x6 + x7 + x8 + x9)^2
## 
## Complete :
##         (Intercept) x11 x21 x31 x41 x51 x61 x71 x81 x91 x11:x21 x11:x31 x11:x41
## x21:x31 0           0   0   0   0   0   0   0   0   0   0       0       0      
## x21:x41 0           0   0   0   0   0   0   0   0   0   0       0       0      
## x21:x51 0           0   0   0   0   0   0   0   0   0   0       1       0      
## x21:x61 0           0   0   0   0   0   0   0   0   0   0       0       1      
## x21:x71 0           0   0   0   0   0   0   0   0   0   0       0       0      
## x21:x81 0           0   0   0   0   0   0   0   0   0   0       0       0      
## x31:x41 0           0   0   0   0   0   0   0   0   0   0       0       0      
## x31:x51 0           0   0   0   0   0   0   0   0   0   1       0       0      
## x31:x61 0           0   0   0   0   0   0   0   0   0   0       0       0      
## x31:x71 0           0   0   0   0   0   0   0   0   0   0       0       1      
## x31:x81 0           0   0   0   0   0   0   0   0   0   0       0       0      
## x41:x51 0           0   0   0   0   0   0   0   0   0   0       0       0      
## x41:x61 0           0   0   0   0   0   0   0   0   0   1       0       0      
## x41:x71 0           0   0   0   0   0   0   0   0   0   0       1       0      
## x41:x81 0           0   0   0   0   0   0   0   0   0   0       0       0      
## x51:x61 0           0   0   0   0   0   0   0   0   0   0       0       0      
## x51:x71 0           0   0   0   0   0   0   0   0   0   0       0       0      
## x51:x81 0           0   0   0   0   0   0   0   0   0   0       0       1      
## x61:x71 0           0   0   0   0   0   0   0   0   0   0       0       0      
## x61:x81 0           0   0   0   0   0   0   0   0   0   0       1       0      
## x71:x81 0           0   0   0   0   0   0   0   0   0   1       0       0      
##         x11:x51 x11:x61 x11:x71 x11:x81 x11:x91 x21:x91 x31:x91 x41:x91 x51:x91
## x21:x31 1       0       0       0       0       0       0       0       0      
## x21:x41 0       1       0       0       0       0       0       0       0      
## x21:x51 0       0       0       0       0       0       0       0       0      
## x21:x61 0       0       0       0       0       0       0       0       0      
## x21:x71 0       0       0       1       0       0       0       0       0      
## x21:x81 0       0       1       0       0       0       0       0       0      
## x31:x41 0       0       1       0       0       0       0       0       0      
## x31:x51 0       0       0       0       0       0       0       0       0      
## x31:x61 0       0       0       1       0       0       0       0       0      
## x31:x71 0       0       0       0       0       0       0       0       0      
## x31:x81 0       1       0       0       0       0       0       0       0      
## x41:x51 0       0       0       1       0       0       0       0       0      
## x41:x61 0       0       0       0       0       0       0       0       0      
## x41:x71 0       0       0       0       0       0       0       0       0      
## x41:x81 1       0       0       0       0       0       0       0       0      
## x51:x61 0       0       1       0       0       0       0       0       0      
## x51:x71 0       1       0       0       0       0       0       0       0      
## x51:x81 0       0       0       0       0       0       0       0       0      
## x61:x71 1       0       0       0       0       0       0       0       0      
## x61:x81 0       0       0       0       0       0       0       0       0      
## x71:x81 0       0       0       0       0       0       0       0       0      
##         x61:x91 x71:x91 x81:x91
## x21:x31 0       0       0      
## x21:x41 0       0       0      
## x21:x51 0       0       0      
## x21:x61 0       0       0      
## x21:x71 0       0       0      
## x21:x81 0       0       0      
## x31:x41 0       0       0      
## x31:x51 0       0       0      
## x31:x61 0       0       0      
## x31:x71 0       0       0      
## x31:x81 0       0       0      
## x41:x51 0       0       0      
## x41:x61 0       0       0      
## x41:x71 0       0       0      
## x41:x81 0       0       0      
## x51:x61 0       0       0      
## x51:x71 0       0       0      
## x51:x81 0       0       0      
## x61:x71 0       0       0      
## x61:x81 0       0       0      
## x71:x81 0       0       0
    ## Notice I have removed column five from the design, which doesn't correspond to a factor but 
    ## instead splits the foldover design into the original and addition parts
    q1b.lm <- lm(y ~ (.)^9, data = data.frame(q1b.design[, c(-5)], 
                                                    y = vector(length = 2 * n)))
    aliases(q1b.lm)
##                                                                                                                                                                                                                                                                               
##  x1 = x2:x3:x5 = x2:x4:x6 = x2:x7:x8 = x3:x4:x7 = x3:x6:x8 = x4:x5:x8 = x5:x6:x7 = x1:x2:x3:x4:x8 = x1:x2:x3:x6:x7 = x1:x2:x4:x5:x7 = x1:x2:x5:x6:x8 = x1:x3:x4:x5:x6 = x1:x3:x5:x7:x8 = x1:x4:x6:x7:x8 = x2:x3:x4:x5:x6:x7:x8                                                
##  x2 = x3:x4:x8 = x3:x6:x7 = x4:x5:x7 = x5:x6:x8 = x1:x2:x3:x4:x7 = x1:x2:x3:x6:x8 = x1:x2:x4:x5:x8 = x1:x2:x5:x6:x7 = x2:x3:x4:x5:x6 = x2:x3:x5:x7:x8 = x2:x4:x6:x7:x8 = x1:x3:x4:x5:x6:x7:x8 = x1:x3:x5 = x1:x4:x6 = x1:x7:x8                                                
##  x3 = x2:x4:x8 = x2:x6:x7 = x4:x5:x6 = x5:x7:x8 = x1:x2:x3:x4:x6 = x1:x2:x3:x7:x8 = x1:x3:x4:x5:x8 = x1:x3:x5:x6:x7 = x2:x3:x4:x5:x7 = x2:x3:x5:x6:x8 = x3:x4:x6:x7:x8 = x1:x2:x4:x5:x6:x7:x8 = x1:x2:x5 = x1:x4:x7 = x1:x6:x8                                                
##  x4 = x2:x3:x8 = x2:x5:x7 = x3:x5:x6 = x6:x7:x8 = x1:x2:x3:x4:x5 = x1:x2:x4:x7:x8 = x1:x3:x4:x6:x8 = x1:x4:x5:x6:x7 = x2:x3:x4:x6:x7 = x2:x4:x5:x6:x8 = x3:x4:x5:x7:x8 = x1:x2:x3:x5:x6:x7:x8 = x1:x2:x6 = x1:x3:x7 = x1:x5:x8                                                
##  x5 = x2:x4:x7 = x2:x6:x8 = x3:x4:x6 = x3:x7:x8 = x1:x2:x4:x5:x6 = x1:x2:x5:x7:x8 = x1:x3:x4:x5:x7 = x1:x3:x5:x6:x8 = x2:x3:x4:x5:x8 = x2:x3:x5:x6:x7 = x4:x5:x6:x7:x8 = x1:x2:x3:x4:x6:x7:x8 = x1:x2:x3 = x1:x4:x8 = x1:x6:x7                                                
##  x6 = x2:x3:x7 = x2:x5:x8 = x3:x4:x5 = x4:x7:x8 = x1:x2:x3:x5:x6 = x1:x2:x6:x7:x8 = x1:x3:x4:x6:x7 = x1:x4:x5:x6:x8 = x2:x3:x4:x6:x8 = x2:x4:x5:x6:x7 = x3:x5:x6:x7:x8 = x1:x2:x3:x4:x5:x7:x8 = x1:x2:x4 = x1:x3:x8 = x1:x5:x7                                                
##  x7 = x2:x3:x6 = x2:x4:x5 = x3:x5:x8 = x4:x6:x8 = x1:x2:x3:x5:x7 = x1:x2:x4:x6:x7 = x1:x3:x6:x7:x8 = x1:x4:x5:x7:x8 = x2:x3:x4:x7:x8 = x2:x5:x6:x7:x8 = x3:x4:x5:x6:x7 = x1:x2:x3:x4:x5:x6:x8 = x1:x2:x8 = x1:x3:x4 = x1:x5:x6                                                
##  x8 = x2:x3:x4 = x2:x5:x6 = x3:x5:x7 = x4:x6:x7 = x1:x2:x3:x5:x8 = x1:x2:x4:x6:x8 = x1:x3:x4:x7:x8 = x1:x5:x6:x7:x8 = x2:x3:x6:x7:x8 = x2:x4:x5:x7:x8 = x3:x4:x5:x6:x8 = x1:x2:x3:x4:x5:x6:x7 = x1:x2:x7 = x1:x3:x6 = x1:x4:x5                                                
##  x9 = x1:x2:x3:x5:x9 = x1:x2:x4:x6:x9 = x1:x2:x7:x8:x9 = x1:x3:x4:x7:x9 = x1:x3:x6:x8:x9 = x1:x4:x5:x8:x9 = x1:x5:x6:x7:x9 = x2:x3:x4:x8:x9 = x2:x3:x6:x7:x9 = x2:x4:x5:x7:x9 = x2:x5:x6:x8:x9 = x3:x4:x5:x6:x9 = x3:x5:x7:x8:x9 = x4:x6:x7:x8:x9 = x1:x2:x3:x4:x5:x6:x7:x8:x9
##  x1:x2 = x1:x3:x4:x8 = x1:x3:x6:x7 = x1:x4:x5:x7 = x1:x5:x6:x8 = x2:x3:x4:x7 = x2:x3:x6:x8 = x2:x4:x5:x8 = x2:x5:x6:x7 = x1:x2:x3:x4:x5:x6 = x1:x2:x3:x5:x7:x8 = x1:x2:x4:x6:x7:x8 = x3:x4:x5:x6:x7:x8 = x3:x5 = x4:x6 = x7:x8                                                
##  x1:x3 = x1:x2:x4:x8 = x1:x2:x6:x7 = x1:x4:x5:x6 = x1:x5:x7:x8 = x2:x3:x4:x6 = x2:x3:x7:x8 = x3:x4:x5:x8 = x3:x5:x6:x7 = x1:x2:x3:x4:x5:x7 = x1:x2:x3:x5:x6:x8 = x1:x3:x4:x6:x7:x8 = x2:x4:x5:x6:x7:x8 = x2:x5 = x4:x7 = x6:x8                                                
##  x1:x4 = x1:x2:x3:x8 = x1:x2:x5:x7 = x1:x3:x5:x6 = x1:x6:x7:x8 = x2:x3:x4:x5 = x2:x4:x7:x8 = x3:x4:x6:x8 = x4:x5:x6:x7 = x1:x2:x3:x4:x6:x7 = x1:x2:x4:x5:x6:x8 = x1:x3:x4:x5:x7:x8 = x2:x3:x5:x6:x7:x8 = x2:x6 = x3:x7 = x5:x8                                                
##  x1:x5 = x1:x2:x4:x7 = x1:x2:x6:x8 = x1:x3:x4:x6 = x1:x3:x7:x8 = x2:x4:x5:x6 = x2:x5:x7:x8 = x3:x4:x5:x7 = x3:x5:x6:x8 = x1:x2:x3:x4:x5:x8 = x1:x2:x3:x5:x6:x7 = x1:x4:x5:x6:x7:x8 = x2:x3:x4:x6:x7:x8 = x2:x3 = x4:x8 = x6:x7                                                
##  x1:x6 = x1:x2:x3:x7 = x1:x2:x5:x8 = x1:x3:x4:x5 = x1:x4:x7:x8 = x2:x3:x5:x6 = x2:x6:x7:x8 = x3:x4:x6:x7 = x4:x5:x6:x8 = x1:x2:x3:x4:x6:x8 = x1:x2:x4:x5:x6:x7 = x1:x3:x5:x6:x7:x8 = x2:x3:x4:x5:x7:x8 = x2:x4 = x3:x8 = x5:x7                                                
##  x1:x7 = x1:x2:x3:x6 = x1:x2:x4:x5 = x1:x3:x5:x8 = x1:x4:x6:x8 = x2:x3:x5:x7 = x2:x4:x6:x7 = x3:x6:x7:x8 = x4:x5:x7:x8 = x1:x2:x3:x4:x7:x8 = x1:x2:x5:x6:x7:x8 = x1:x3:x4:x5:x6:x7 = x2:x3:x4:x5:x6:x8 = x2:x8 = x3:x4 = x5:x6                                                
##  x1:x8 = x1:x2:x3:x4 = x1:x2:x5:x6 = x1:x3:x5:x7 = x1:x4:x6:x7 = x2:x3:x5:x8 = x2:x4:x6:x8 = x3:x4:x7:x8 = x5:x6:x7:x8 = x1:x2:x3:x6:x7:x8 = x1:x2:x4:x5:x7:x8 = x1:x3:x4:x5:x6:x8 = x2:x3:x4:x5:x6:x7 = x2:x7 = x3:x6 = x4:x5                                                
##  x1:x9 = x2:x3:x5:x9 = x2:x4:x6:x9 = x2:x7:x8:x9 = x3:x4:x7:x9 = x3:x6:x8:x9 = x4:x5:x8:x9 = x5:x6:x7:x9 = x1:x2:x3:x4:x8:x9 = x1:x2:x3:x6:x7:x9 = x1:x2:x4:x5:x7:x9 = x1:x2:x5:x6:x8:x9 = x1:x3:x4:x5:x6:x9 = x1:x3:x5:x7:x8:x9 = x1:x4:x6:x7:x8:x9 = x2:x3:x4:x5:x6:x7:x8:x9
##  x2:x9 = x1:x3:x5:x9 = x1:x4:x6:x9 = x1:x7:x8:x9 = x3:x4:x8:x9 = x3:x6:x7:x9 = x4:x5:x7:x9 = x5:x6:x8:x9 = x1:x2:x3:x4:x7:x9 = x1:x2:x3:x6:x8:x9 = x1:x2:x4:x5:x8:x9 = x1:x2:x5:x6:x7:x9 = x2:x3:x4:x5:x6:x9 = x2:x3:x5:x7:x8:x9 = x2:x4:x6:x7:x8:x9 = x1:x3:x4:x5:x6:x7:x8:x9
##  x3:x9 = x1:x2:x5:x9 = x1:x4:x7:x9 = x1:x6:x8:x9 = x2:x4:x8:x9 = x2:x6:x7:x9 = x4:x5:x6:x9 = x5:x7:x8:x9 = x1:x2:x3:x4:x6:x9 = x1:x2:x3:x7:x8:x9 = x1:x3:x4:x5:x8:x9 = x1:x3:x5:x6:x7:x9 = x2:x3:x4:x5:x7:x9 = x2:x3:x5:x6:x8:x9 = x3:x4:x6:x7:x8:x9 = x1:x2:x4:x5:x6:x7:x8:x9
##  x4:x9 = x1:x2:x6:x9 = x1:x3:x7:x9 = x1:x5:x8:x9 = x2:x3:x8:x9 = x2:x5:x7:x9 = x3:x5:x6:x9 = x6:x7:x8:x9 = x1:x2:x3:x4:x5:x9 = x1:x2:x4:x7:x8:x9 = x1:x3:x4:x6:x8:x9 = x1:x4:x5:x6:x7:x9 = x2:x3:x4:x6:x7:x9 = x2:x4:x5:x6:x8:x9 = x3:x4:x5:x7:x8:x9 = x1:x2:x3:x5:x6:x7:x8:x9
##  x5:x9 = x1:x2:x3:x9 = x1:x4:x8:x9 = x1:x6:x7:x9 = x2:x4:x7:x9 = x2:x6:x8:x9 = x3:x4:x6:x9 = x3:x7:x8:x9 = x1:x2:x4:x5:x6:x9 = x1:x2:x5:x7:x8:x9 = x1:x3:x4:x5:x7:x9 = x1:x3:x5:x6:x8:x9 = x2:x3:x4:x5:x8:x9 = x2:x3:x5:x6:x7:x9 = x4:x5:x6:x7:x8:x9 = x1:x2:x3:x4:x6:x7:x8:x9
##  x6:x9 = x1:x2:x4:x9 = x1:x3:x8:x9 = x1:x5:x7:x9 = x2:x3:x7:x9 = x2:x5:x8:x9 = x3:x4:x5:x9 = x4:x7:x8:x9 = x1:x2:x3:x5:x6:x9 = x1:x2:x6:x7:x8:x9 = x1:x3:x4:x6:x7:x9 = x1:x4:x5:x6:x8:x9 = x2:x3:x4:x6:x8:x9 = x2:x4:x5:x6:x7:x9 = x3:x5:x6:x7:x8:x9 = x1:x2:x3:x4:x5:x7:x8:x9
##  x7:x9 = x1:x2:x8:x9 = x1:x3:x4:x9 = x1:x5:x6:x9 = x2:x3:x6:x9 = x2:x4:x5:x9 = x3:x5:x8:x9 = x4:x6:x8:x9 = x1:x2:x3:x5:x7:x9 = x1:x2:x4:x6:x7:x9 = x1:x3:x6:x7:x8:x9 = x1:x4:x5:x7:x8:x9 = x2:x3:x4:x7:x8:x9 = x2:x5:x6:x7:x8:x9 = x3:x4:x5:x6:x7:x9 = x1:x2:x3:x4:x5:x6:x8:x9
##  x8:x9 = x1:x2:x7:x9 = x1:x3:x6:x9 = x1:x4:x5:x9 = x2:x3:x4:x9 = x2:x5:x6:x9 = x3:x5:x7:x9 = x4:x6:x7:x9 = x1:x2:x3:x5:x8:x9 = x1:x2:x4:x6:x8:x9 = x1:x3:x4:x7:x8:x9 = x1:x5:x6:x7:x8:x9 = x2:x3:x6:x7:x8:x9 = x2:x4:x5:x7:x8:x9 = x3:x4:x5:x6:x8:x9 = x1:x2:x3:x4:x5:x6:x7:x9
##  x1:x2:x9 = x3:x5:x9 = x4:x6:x9 = x7:x8:x9 = x1:x3:x4:x8:x9 = x1:x3:x6:x7:x9 = x1:x4:x5:x7:x9 = x1:x5:x6:x8:x9 = x2:x3:x4:x7:x9 = x2:x3:x6:x8:x9 = x2:x4:x5:x8:x9 = x2:x5:x6:x7:x9 = x1:x2:x3:x4:x5:x6:x9 = x1:x2:x3:x5:x7:x8:x9 = x1:x2:x4:x6:x7:x8:x9 = x3:x4:x5:x6:x7:x8:x9
##  x1:x3:x9 = x2:x5:x9 = x4:x7:x9 = x6:x8:x9 = x1:x2:x4:x8:x9 = x1:x2:x6:x7:x9 = x1:x4:x5:x6:x9 = x1:x5:x7:x8:x9 = x2:x3:x4:x6:x9 = x2:x3:x7:x8:x9 = x3:x4:x5:x8:x9 = x3:x5:x6:x7:x9 = x1:x2:x3:x4:x5:x7:x9 = x1:x2:x3:x5:x6:x8:x9 = x1:x3:x4:x6:x7:x8:x9 = x2:x4:x5:x6:x7:x8:x9
##  x1:x4:x9 = x2:x6:x9 = x3:x7:x9 = x5:x8:x9 = x1:x2:x3:x8:x9 = x1:x2:x5:x7:x9 = x1:x3:x5:x6:x9 = x1:x6:x7:x8:x9 = x2:x3:x4:x5:x9 = x2:x4:x7:x8:x9 = x3:x4:x6:x8:x9 = x4:x5:x6:x7:x9 = x1:x2:x3:x4:x6:x7:x9 = x1:x2:x4:x5:x6:x8:x9 = x1:x3:x4:x5:x7:x8:x9 = x2:x3:x5:x6:x7:x8:x9
##  x1:x5:x9 = x2:x3:x9 = x4:x8:x9 = x6:x7:x9 = x1:x2:x4:x7:x9 = x1:x2:x6:x8:x9 = x1:x3:x4:x6:x9 = x1:x3:x7:x8:x9 = x2:x4:x5:x6:x9 = x2:x5:x7:x8:x9 = x3:x4:x5:x7:x9 = x3:x5:x6:x8:x9 = x1:x2:x3:x4:x5:x8:x9 = x1:x2:x3:x5:x6:x7:x9 = x1:x4:x5:x6:x7:x8:x9 = x2:x3:x4:x6:x7:x8:x9
##  x1:x6:x9 = x2:x4:x9 = x3:x8:x9 = x5:x7:x9 = x1:x2:x3:x7:x9 = x1:x2:x5:x8:x9 = x1:x3:x4:x5:x9 = x1:x4:x7:x8:x9 = x2:x3:x5:x6:x9 = x2:x6:x7:x8:x9 = x3:x4:x6:x7:x9 = x4:x5:x6:x8:x9 = x1:x2:x3:x4:x6:x8:x9 = x1:x2:x4:x5:x6:x7:x9 = x1:x3:x5:x6:x7:x8:x9 = x2:x3:x4:x5:x7:x8:x9
##  x1:x7:x9 = x2:x8:x9 = x3:x4:x9 = x5:x6:x9 = x1:x2:x3:x6:x9 = x1:x2:x4:x5:x9 = x1:x3:x5:x8:x9 = x1:x4:x6:x8:x9 = x2:x3:x5:x7:x9 = x2:x4:x6:x7:x9 = x3:x6:x7:x8:x9 = x4:x5:x7:x8:x9 = x1:x2:x3:x4:x7:x8:x9 = x1:x2:x5:x6:x7:x8:x9 = x1:x3:x4:x5:x6:x7:x9 = x2:x3:x4:x5:x6:x8:x9
##  x1:x8:x9 = x2:x7:x9 = x3:x6:x9 = x4:x5:x9 = x1:x2:x3:x4:x9 = x1:x2:x5:x6:x9 = x1:x3:x5:x7:x9 = x1:x4:x6:x7:x9 = x2:x3:x5:x8:x9 = x2:x4:x6:x8:x9 = x3:x4:x7:x8:x9 = x5:x6:x7:x8:x9 = x1:x2:x3:x6:x7:x8:x9 = x1:x2:x4:x5:x7:x8:x9 = x1:x3:x4:x5:x6:x8:x9 = x2:x3:x4:x5:x6:x7:x9

(c). To fold over on a single column, we specify that column number in the fold.design function:

q1c.design <- fold.design(q1a.design, columns = 5)
q1c.alias <- alias(y ~ (.)^2, data = data.frame(q1c.design[, c(-5)], y = vector(length = 2 * n)))
q1c.lm <- lm(y ~ (.)^9, data = data.frame(q1c.design[, c(-5)], 
                                                    y = vector(length = 2 * n)))
aliases(q1c.lm)
##                                                                                                                                                                                                                                                                               
##  x1 = x1:x2:x7:x9 = x1:x3:x6:x9 = x2:x3:x4:x9 = x4:x6:x7:x9 = x1:x2:x3:x4:x8 = x1:x2:x3:x6:x7 = x1:x4:x6:x7:x8 = x1:x2:x4:x6:x8:x9 = x1:x3:x4:x7:x8:x9 = x2:x3:x6:x7:x8:x9 = x8:x9 = x2:x4:x6 = x2:x7:x8 = x3:x4:x7 = x3:x6:x8                                                
##  x2 = x1:x2:x8:x9 = x1:x3:x4:x9 = x2:x3:x6:x9 = x4:x6:x8:x9 = x1:x2:x3:x4:x7 = x1:x2:x3:x6:x8 = x2:x4:x6:x7:x8 = x1:x2:x4:x6:x7:x9 = x1:x3:x6:x7:x8:x9 = x2:x3:x4:x7:x8:x9 = x7:x9 = x1:x4:x6 = x1:x7:x8 = x3:x4:x8 = x3:x6:x7                                                
##  x3 = x1:x2:x4:x9 = x1:x3:x8:x9 = x2:x3:x7:x9 = x4:x7:x8:x9 = x1:x2:x3:x4:x6 = x1:x2:x3:x7:x8 = x3:x4:x6:x7:x8 = x1:x2:x6:x7:x8:x9 = x1:x3:x4:x6:x7:x9 = x2:x3:x4:x6:x8:x9 = x6:x9 = x1:x4:x7 = x1:x6:x8 = x2:x4:x8 = x2:x6:x7                                                
##  x4 = x6:x7:x8 = x1:x2:x3:x9 = x1:x4:x8:x9 = x1:x6:x7:x9 = x2:x4:x7:x9 = x2:x6:x8:x9 = x3:x4:x6:x9 = x3:x7:x8:x9 = x1:x2:x4:x7:x8 = x1:x3:x4:x6:x8 = x2:x3:x4:x6:x7 = x1:x2:x3:x4:x6:x7:x8:x9 = x1:x2:x6 = x1:x3:x7 = x2:x3:x8                                                
##  x5 = x1:x5:x8:x9 = x2:x5:x7:x9 = x3:x5:x6:x9 = x1:x2:x4:x5:x6 = x1:x2:x5:x7:x8 = x1:x3:x4:x5:x7 = x1:x3:x5:x6:x8 = x2:x3:x4:x5:x8 = x2:x3:x5:x6:x7 = x4:x5:x6:x7:x8 = x1:x2:x3:x4:x5:x9 = x1:x4:x5:x6:x7:x9 = x2:x4:x5:x6:x8:x9 = x3:x4:x5:x7:x8:x9 = x1:x2:x3:x5:x6:x7:x8:x9
##  x6 = x4:x7:x8 = x1:x4:x7:x9 = x1:x6:x8:x9 = x2:x4:x8:x9 = x2:x6:x7:x9 = x1:x2:x6:x7:x8 = x1:x3:x4:x6:x7 = x2:x3:x4:x6:x8 = x1:x2:x3:x4:x6:x9 = x1:x2:x3:x7:x8:x9 = x3:x4:x6:x7:x8:x9 = x3:x9 = x1:x2:x4 = x1:x3:x8 = x2:x3:x7                                                
##  x7 = x4:x6:x8 = x1:x4:x6:x9 = x1:x7:x8:x9 = x3:x4:x8:x9 = x3:x6:x7:x9 = x1:x2:x4:x6:x7 = x1:x3:x6:x7:x8 = x2:x3:x4:x7:x8 = x1:x2:x3:x4:x7:x9 = x1:x2:x3:x6:x8:x9 = x2:x4:x6:x7:x8:x9 = x2:x9 = x1:x2:x8 = x1:x3:x4 = x2:x3:x6                                                
##  x8 = x4:x6:x7 = x2:x4:x6:x9 = x2:x7:x8:x9 = x3:x4:x7:x9 = x3:x6:x8:x9 = x1:x2:x4:x6:x8 = x1:x3:x4:x7:x8 = x2:x3:x6:x7:x8 = x1:x2:x3:x4:x8:x9 = x1:x2:x3:x6:x7:x9 = x1:x4:x6:x7:x8:x9 = x1:x9 = x1:x2:x7 = x1:x3:x6 = x2:x3:x4                                                
##  x9 = x1:x2:x3:x4 = x1:x4:x6:x7 = x2:x4:x6:x8 = x3:x4:x7:x8 = x1:x2:x4:x6:x9 = x1:x2:x7:x8:x9 = x1:x3:x4:x7:x9 = x1:x3:x6:x8:x9 = x2:x3:x4:x8:x9 = x2:x3:x6:x7:x9 = x4:x6:x7:x8:x9 = x1:x2:x3:x6:x7:x8 = x1:x8 = x2:x7 = x3:x6                                                
##  x1:x2 = x1:x3:x4:x8 = x1:x3:x6:x7 = x2:x3:x4:x7 = x2:x3:x6:x8 = x1:x2:x3:x6:x9 = x1:x4:x6:x8:x9 = x2:x4:x6:x7:x9 = x3:x6:x7:x8:x9 = x1:x2:x4:x6:x7:x8 = x1:x2:x3:x4:x7:x8:x9 = x4:x6 = x7:x8 = x1:x7:x9 = x2:x8:x9 = x3:x4:x9                                                
##  x1:x3 = x1:x2:x4:x8 = x1:x2:x6:x7 = x2:x3:x4:x6 = x2:x3:x7:x8 = x1:x2:x3:x7:x9 = x1:x4:x7:x8:x9 = x2:x6:x7:x8:x9 = x3:x4:x6:x7:x9 = x1:x3:x4:x6:x7:x8 = x1:x2:x3:x4:x6:x8:x9 = x4:x7 = x6:x8 = x1:x6:x9 = x2:x4:x9 = x3:x8:x9                                                
##  x1:x4 = x4:x8:x9 = x6:x7:x9 = x1:x2:x3:x8 = x1:x6:x7:x8 = x2:x4:x7:x8 = x3:x4:x6:x8 = x1:x2:x4:x7:x9 = x1:x2:x6:x8:x9 = x1:x3:x4:x6:x9 = x1:x3:x7:x8:x9 = x1:x2:x3:x4:x6:x7 = x2:x3:x4:x6:x7:x8:x9 = x2:x6 = x3:x7 = x2:x3:x9                                                
##  x1:x5 = x5:x8:x9 = x2:x4:x5:x6 = x2:x5:x7:x8 = x3:x4:x5:x7 = x3:x5:x6:x8 = x1:x2:x5:x7:x9 = x1:x3:x5:x6:x9 = x2:x3:x4:x5:x9 = x4:x5:x6:x7:x9 = x1:x2:x3:x4:x5:x8 = x1:x2:x3:x5:x6:x7 = x1:x4:x5:x6:x7:x8 = x1:x2:x4:x5:x6:x8:x9 = x1:x3:x4:x5:x7:x8:x9 = x2:x3:x5:x6:x7:x8:x9
##  x1:x6 = x4:x7:x9 = x6:x8:x9 = x1:x2:x3:x7 = x1:x4:x7:x8 = x2:x6:x7:x8 = x3:x4:x6:x7 = x1:x2:x4:x8:x9 = x1:x2:x6:x7:x9 = x2:x3:x4:x6:x9 = x2:x3:x7:x8:x9 = x1:x2:x3:x4:x6:x8 = x1:x3:x4:x6:x7:x8:x9 = x2:x4 = x3:x8 = x1:x3:x9                                                
##  x1:x7 = x4:x6:x9 = x7:x8:x9 = x1:x2:x3:x6 = x1:x4:x6:x8 = x2:x4:x6:x7 = x3:x6:x7:x8 = x1:x3:x4:x8:x9 = x1:x3:x6:x7:x9 = x2:x3:x4:x7:x9 = x2:x3:x6:x8:x9 = x1:x2:x3:x4:x7:x8 = x1:x2:x4:x6:x7:x8:x9 = x2:x8 = x3:x4 = x1:x2:x9                                                
##  x2:x3 = x1:x2:x4:x7 = x1:x2:x6:x8 = x1:x3:x4:x6 = x1:x3:x7:x8 = x1:x2:x3:x8:x9 = x1:x6:x7:x8:x9 = x2:x4:x7:x8:x9 = x3:x4:x6:x8:x9 = x2:x3:x4:x6:x7:x8 = x1:x2:x3:x4:x6:x7:x9 = x4:x8 = x6:x7 = x1:x4:x9 = x2:x6:x9 = x3:x7:x9                                                
##  x2:x5 = x5:x7:x9 = x1:x4:x5:x6 = x1:x5:x7:x8 = x3:x4:x5:x8 = x3:x5:x6:x7 = x1:x2:x5:x8:x9 = x1:x3:x4:x5:x9 = x2:x3:x5:x6:x9 = x4:x5:x6:x8:x9 = x1:x2:x3:x4:x5:x7 = x1:x2:x3:x5:x6:x8 = x2:x4:x5:x6:x7:x8 = x1:x2:x4:x5:x6:x7:x9 = x1:x3:x5:x6:x7:x8:x9 = x2:x3:x4:x5:x7:x8:x9
##  x3:x5 = x5:x6:x9 = x1:x4:x5:x7 = x1:x5:x6:x8 = x2:x4:x5:x8 = x2:x5:x6:x7 = x1:x2:x4:x5:x9 = x1:x3:x5:x8:x9 = x2:x3:x5:x7:x9 = x4:x5:x7:x8:x9 = x1:x2:x3:x4:x5:x6 = x1:x2:x3:x5:x7:x8 = x3:x4:x5:x6:x7:x8 = x1:x2:x5:x6:x7:x8:x9 = x1:x3:x4:x5:x6:x7:x9 = x2:x3:x4:x5:x6:x8:x9
##  x4:x5 = x1:x2:x5:x6 = x1:x3:x5:x7 = x2:x3:x5:x8 = x5:x6:x7:x8 = x1:x2:x3:x5:x9 = x1:x4:x5:x8:x9 = x1:x5:x6:x7:x9 = x2:x4:x5:x7:x9 = x2:x5:x6:x8:x9 = x3:x4:x5:x6:x9 = x3:x5:x7:x8:x9 = x1:x2:x4:x5:x7:x8 = x1:x3:x4:x5:x6:x8 = x2:x3:x4:x5:x6:x7 = x1:x2:x3:x4:x5:x6:x7:x8:x9
##  x4:x9 = x1:x2:x6:x9 = x1:x3:x7:x9 = x2:x3:x8:x9 = x6:x7:x8:x9 = x1:x2:x4:x7:x8:x9 = x1:x3:x4:x6:x8:x9 = x2:x3:x4:x6:x7:x9 = x1:x2:x3:x4:x6:x7:x8 = x1:x2:x3 = x1:x4:x8 = x1:x6:x7 = x2:x4:x7 = x2:x6:x8 = x3:x4:x6 = x3:x7:x8                                                
##  x5:x6 = x1:x2:x4:x5 = x1:x3:x5:x8 = x2:x3:x5:x7 = x4:x5:x7:x8 = x1:x4:x5:x7:x9 = x1:x5:x6:x8:x9 = x2:x4:x5:x8:x9 = x2:x5:x6:x7:x9 = x1:x2:x5:x6:x7:x8 = x1:x3:x4:x5:x6:x7 = x2:x3:x4:x5:x6:x8 = x1:x2:x3:x4:x5:x6:x9 = x1:x2:x3:x5:x7:x8:x9 = x3:x4:x5:x6:x7:x8:x9 = x3:x5:x9
##  x5:x7 = x1:x2:x5:x8 = x1:x3:x4:x5 = x2:x3:x5:x6 = x4:x5:x6:x8 = x1:x4:x5:x6:x9 = x1:x5:x7:x8:x9 = x3:x4:x5:x8:x9 = x3:x5:x6:x7:x9 = x1:x2:x4:x5:x6:x7 = x1:x3:x5:x6:x7:x8 = x2:x3:x4:x5:x7:x8 = x1:x2:x3:x4:x5:x7:x9 = x1:x2:x3:x5:x6:x8:x9 = x2:x4:x5:x6:x7:x8:x9 = x2:x5:x9
##  x5:x8 = x1:x2:x5:x7 = x1:x3:x5:x6 = x2:x3:x4:x5 = x4:x5:x6:x7 = x2:x4:x5:x6:x9 = x2:x5:x7:x8:x9 = x3:x4:x5:x7:x9 = x3:x5:x6:x8:x9 = x1:x2:x4:x5:x6:x8 = x1:x3:x4:x5:x7:x8 = x2:x3:x5:x6:x7:x8 = x1:x2:x3:x4:x5:x8:x9 = x1:x2:x3:x5:x6:x7:x9 = x1:x4:x5:x6:x7:x8:x9 = x1:x5:x9
##  x5:x9 = x1:x2:x3:x4:x5 = x1:x4:x5:x6:x7 = x2:x4:x5:x6:x8 = x3:x4:x5:x7:x8 = x1:x2:x4:x5:x6:x9 = x1:x2:x5:x7:x8:x9 = x1:x3:x4:x5:x7:x9 = x1:x3:x5:x6:x8:x9 = x2:x3:x4:x5:x8:x9 = x2:x3:x5:x6:x7:x9 = x4:x5:x6:x7:x8:x9 = x1:x2:x3:x5:x6:x7:x8 = x1:x5:x8 = x2:x5:x7 = x3:x5:x6
##  x1:x2:x5 = x5:x7:x8 = x1:x5:x7:x9 = x2:x5:x8:x9 = x3:x4:x5:x9 = x1:x3:x4:x5:x8 = x1:x3:x5:x6:x7 = x2:x3:x4:x5:x7 = x2:x3:x5:x6:x8 = x1:x2:x3:x5:x6:x9 = x1:x4:x5:x6:x8:x9 = x2:x4:x5:x6:x7:x9 = x3:x5:x6:x7:x8:x9 = x1:x2:x4:x5:x6:x7:x8 = x1:x2:x3:x4:x5:x7:x8:x9 = x4:x5:x6
##  x1:x3:x5 = x5:x6:x8 = x1:x5:x6:x9 = x2:x4:x5:x9 = x3:x5:x8:x9 = x1:x2:x4:x5:x8 = x1:x2:x5:x6:x7 = x2:x3:x4:x5:x6 = x2:x3:x5:x7:x8 = x1:x2:x3:x5:x7:x9 = x1:x4:x5:x7:x8:x9 = x2:x5:x6:x7:x8:x9 = x3:x4:x5:x6:x7:x9 = x1:x3:x4:x5:x6:x7:x8 = x1:x2:x3:x4:x5:x6:x8:x9 = x4:x5:x7
##  x1:x4:x5 = x2:x3:x5:x9 = x4:x5:x8:x9 = x5:x6:x7:x9 = x1:x2:x3:x5:x8 = x1:x5:x6:x7:x8 = x2:x4:x5:x7:x8 = x3:x4:x5:x6:x8 = x1:x2:x4:x5:x7:x9 = x1:x2:x5:x6:x8:x9 = x1:x3:x4:x5:x6:x9 = x1:x3:x5:x7:x8:x9 = x1:x2:x3:x4:x5:x6:x7 = x2:x3:x4:x5:x6:x7:x8:x9 = x2:x5:x6 = x3:x5:x7
##  x1:x5:x6 = x1:x3:x5:x9 = x4:x5:x7:x9 = x5:x6:x8:x9 = x1:x2:x3:x5:x7 = x1:x4:x5:x7:x8 = x2:x5:x6:x7:x8 = x3:x4:x5:x6:x7 = x1:x2:x4:x5:x8:x9 = x1:x2:x5:x6:x7:x9 = x2:x3:x4:x5:x6:x9 = x2:x3:x5:x7:x8:x9 = x1:x2:x3:x4:x5:x6:x8 = x1:x3:x4:x5:x6:x7:x8:x9 = x2:x4:x5 = x3:x5:x8
##  x1:x5:x7 = x1:x2:x5:x9 = x4:x5:x6:x9 = x5:x7:x8:x9 = x1:x2:x3:x5:x6 = x1:x4:x5:x6:x8 = x2:x4:x5:x6:x7 = x3:x5:x6:x7:x8 = x1:x3:x4:x5:x8:x9 = x1:x3:x5:x6:x7:x9 = x2:x3:x4:x5:x7:x9 = x2:x3:x5:x6:x8:x9 = x1:x2:x3:x4:x5:x7:x8 = x1:x2:x4:x5:x6:x7:x8:x9 = x2:x5:x8 = x3:x4:x5
##  x2:x3:x5 = x5:x6:x7 = x1:x4:x5:x9 = x2:x5:x6:x9 = x3:x5:x7:x9 = x1:x2:x4:x5:x7 = x1:x2:x5:x6:x8 = x1:x3:x4:x5:x6 = x1:x3:x5:x7:x8 = x1:x2:x3:x5:x8:x9 = x1:x5:x6:x7:x8:x9 = x2:x4:x5:x7:x8:x9 = x3:x4:x5:x6:x8:x9 = x2:x3:x4:x5:x6:x7:x8 = x1:x2:x3:x4:x5:x6:x7:x9 = x4:x5:x8
##  x4:x5:x9 = x1:x2:x3:x5 = x1:x4:x5:x8 = x1:x5:x6:x7 = x2:x4:x5:x7 = x2:x5:x6:x8 = x3:x4:x5:x6 = x3:x5:x7:x8 = x1:x2:x5:x6:x9 = x1:x3:x5:x7:x9 = x2:x3:x5:x8:x9 = x5:x6:x7:x8:x9 = x1:x2:x4:x5:x7:x8:x9 = x1:x3:x4:x5:x6:x8:x9 = x2:x3:x4:x5:x6:x7:x9 = x1:x2:x3:x4:x5:x6:x7:x8

Notice now that the main effect of \(x_5\) and all the two-factor interactions involving this factor are not aliased with any other two-factor interactions. For example, in the original design \(x_3x_5 = x_1x_2\); now, in the folded-over half of the design, \(x_3x_5 = -x_1x_2,\) and so this alias is broken (similarly for all two-factor interactions involving \(x_5\)).

2. Blocking and split-plot designs

(a). With the blocks argument set to a number, FrF2 will automatically try to find higher-order factorial effects to confound with blocks. If it cannot find effects to confound that are higher than two-factor interactions, it will produce an error.

q2a <- FrF2(32, 5, factor.names = paste0("x", 1:5), blocks = 4, alias.info = 3, randomize = F)
design.info(q2a)$aliased.with.blocks
## [1] "ABC" "ADE"

Here, two three-factor interactions have been confound with blocks. Donโ€™t forget that the product of these two interactions will also be confounded (a four-factor interaction).

(b). If we confound \(x_2x_3x_4x_5\) and \(x_1x_2x_3x_4\) with blocks, we also confound the product: \(x_2x_3x_4x_5 \times x_1x_2x_3x_4 = x_1x_5\).

q2b <- FrF2(32, 5, factor.names = paste0("x", 1:5), blocks = list(c(2, 3, 4, 5), c(1, 2, 3, 4)), randomize = F, alias.block.2fis = TRUE)
design.info(q2b)$aliased.with.blocks
## [1] "AE"

This example demonstrates a common issue with blocked (and fractional) factorial designs; often, choosing too high-order effects to confound or alias will result in also confounding a lower-order effect. Notice how in part (a), FrF2 chose two three-factor interactions to confound, not two four-factor interactions.

(c). To define the fraction, we will choose \(I = x_1x_2x_3x_4x_5\). We need to consider the aliasing scheme when we choose the effects to confound with blocks. Choosing any four-factor interaction will also result in confounding a main effect with blocks. Confounding a three-factor interaction will also confound a two-factor interaction but this is the best we can do here. We will choose to confound \(x_1x_2 = x_3x_4x_5\) and \(x_1x_3 = x_2x_4x_5\) with blocks, which will also confound their product \(x_2x_3 = x_1x_4x_5\).

q2c <- FrF2(16, 5, factor.names = paste0("x", 1:5), generator = list(c(1, 2, 3, 4)), blocks = list(c(1, 2), c(1, 3)), 
            alias.info = 3, randomize = F, alias.block.2fis = TRUE)
design.info(q2c)$aliased
## $legend
## [1] "A=x1" "B=x2" "C=x3" "D=x4" "E=x5"
## 
## $main
## character(0)
## 
## $fi2
## [1] "AD=BCE" "AE=BCD" "BD=ACE" "BE=ACD" "CD=ABE" "CE=ABD" "DE=ABC"
## 
## $fi3
## character(0)
design.info(q2c)$aliased.with.blocks
## [1] "AB"  "AC"  "BC"  "ADE" "BDE" "CDE"

(d). To find this split-plot design, we can use

q2d <- FrF2(32, 5, WPs = 4, nfac.WP = 2, factor.names = paste0("x", 1:5), randomize = F)
q2d
##   run.no run.no.std.rp x1 x2 x3 x4 x5
## 1      1         1.1.1 -1 -1 -1 -1 -1
## 2      2         2.1.2 -1 -1 -1 -1  1
## 3      3         3.1.3 -1 -1 -1  1 -1
## 4      4         4.1.4 -1 -1 -1  1  1
## 5      5         5.1.5 -1 -1  1 -1 -1
## 6      6         6.1.6 -1 -1  1 -1  1
## 7      7         7.1.7 -1 -1  1  1 -1
## 8      8         8.1.8 -1 -1  1  1  1
##    run.no run.no.std.rp x1 x2 x3 x4 x5
## 9       9         9.2.1 -1  1 -1 -1 -1
## 10     10        10.2.2 -1  1 -1 -1  1
## 11     11        11.2.3 -1  1 -1  1 -1
## 12     12        12.2.4 -1  1 -1  1  1
## 13     13        13.2.5 -1  1  1 -1 -1
## 14     14        14.2.6 -1  1  1 -1  1
## 15     15        15.2.7 -1  1  1  1 -1
## 16     16        16.2.8 -1  1  1  1  1
##    run.no run.no.std.rp x1 x2 x3 x4 x5
## 17     17        17.3.1  1 -1 -1 -1 -1
## 18     18        18.3.2  1 -1 -1 -1  1
## 19     19        19.3.3  1 -1 -1  1 -1
## 20     20        20.3.4  1 -1 -1  1  1
## 21     21        21.3.5  1 -1  1 -1 -1
## 22     22        22.3.6  1 -1  1 -1  1
## 23     23        23.3.7  1 -1  1  1 -1
## 24     24        24.3.8  1 -1  1  1  1
##    run.no run.no.std.rp x1 x2 x3 x4 x5
## 25     25        25.4.1  1  1 -1 -1 -1
## 26     26        26.4.2  1  1 -1 -1  1
## 27     27        27.4.3  1  1 -1  1 -1
## 28     28        28.4.4  1  1 -1  1  1
## 29     29        29.4.5  1  1  1 -1 -1
## 30     30        30.4.6  1  1  1 -1  1
## 31     31        31.4.7  1  1  1  1 -1
## 32     32        32.4.8  1  1  1  1  1
## class=design, type= FrF2.splitplot 
## NOTE: columns run.no and run.no.std.rp  are annotation, 
##  not part of the data frame

The design is split into four whole plots, within each of which the two whole-plot factors are constant. The other factors form a \(2^3\) full factorial in each whole plot.

We will use lmer to fit the model. To define the whole plots, we will add a variable wp, with values 1, 2, 3, 4, to define the whole plots.

library(lme4)
q2d.lm <- lmer(y ~ (x1 + x2 + x3 + x4 + x5)^2 + (1| wp), 
               data = data.frame(q2d, wp = rep(1:4, rep(8, 4)), y = runif(32)))
summary(q2d.lm)
## Linear mixed model fit by REML ['lmerMod']
## Formula: y ~ (x1 + x2 + x3 + x4 + x5)^2 + (1 | wp)
##    Data: data.frame(q2d, wp = rep(1:4, rep(8, 4)), y = runif(32))
## 
## REML criterion at convergence: 58.2
## 
## Scaled residuals: 
##      Min       1Q   Median       3Q      Max 
## -1.62434 -0.65895  0.04585  0.64076  0.96988 
## 
## Random effects:
##  Groups   Name        Variance Std.Dev.
##  wp       (Intercept) 0.002529 0.05029 
##  Residual             0.069684 0.26398 
## Number of obs: 32, groups:  wp, 4
## 
## Fixed effects:
##             Estimate Std. Error t value
## (Intercept)  0.51109    0.05301   9.642
## x11         -0.04118    0.05301  -0.777
## x21          0.02174    0.05301   0.410
## x31         -0.09186    0.04666  -1.968
## x41         -0.02130    0.04666  -0.457
## x51         -0.05545    0.04666  -1.188
## x11:x21     -0.00394    0.05301  -0.074
## x11:x31     -0.02168    0.04666  -0.465
## x11:x41     -0.02745    0.04666  -0.588
## x11:x51      0.01675    0.04666   0.359
## x21:x31      0.03622    0.04666   0.776
## x21:x41     -0.04942    0.04666  -1.059
## x21:x51      0.02489    0.04666   0.533
## x31:x41     -0.07329    0.04666  -1.571
## x31:x51     -0.01928    0.04666  -0.413
## x41:x51      0.04190    0.04666   0.898
## optimizer (nloptwrap) convergence code: 0 (OK)
## unable to evaluate scaled gradient
##  Hessian is numerically singular: parameters are not uniquely determined

Notice that the coefficients corresponding to the whole-plot effects (two main effects and an interaction) are estimated with larger standard errors. Essentially, this is because these comparisons are made between whole plots, which should be subject to larger errors.