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.