## ======================================
# Obtención de la estructura de alias
# Diseño Factorial Fraccionado
# Dr. Carlos Téllez Martínez
# Tecnológico de Monterrey, Guadalajara
# Febrero de 2020
## ======================================

## Este video explica la obtención de la
# estructura de alias en los diseño factoriales
# fraccionados a 2 niveles en el lenguaje R, así
# como la obtención de la resolución de los mismos.



## ===========================================
# RESOLUCIÓN DEL DISEÑO: Es la mínima longitud 
# en la relación de definición del diseño.

# * DISEÑOS DE RESOLUCIÓN III: 
# Los efectos principales están aliados con interacciones
# dobles y las interacciones dobles pueden estar alineadas 
# con otras interacciones dobles.

# * DISEÑOS DE RESOLUCIÓN IV:
# Los efectos principales no están aliados con otro  
# efecto principal ni con interacciones dobles pero las 
# interacciones dobles si pueden estar aliadas con otras 
# interacciones dobles.

# * DISEÑOS DE RESOLUCIÓN V:
# Los efectos principales no están aliados con otro efecto 
# principal ni con interacción doble y las interacciones dobles 
# no están alineadas con otra interacción doble.
## ===========================================



# Ejemplo 1: Diseño 2^3-1
# ==========================
# Generador: C=AB

library(FrF2)
## Loading required package: DoE.base
## Loading required package: grid
## Loading required package: conf.design
## Registered S3 method overwritten by 'DoE.base':
##   method           from       
##   factorize.factor conf.design
## 
## Attaching package: 'DoE.base'
## The following objects are masked from 'package:stats':
## 
##     aov, lm
## The following object is masked from 'package:graphics':
## 
##     plot.design
## The following object is masked from 'package:base':
## 
##     lengths
Tabla_1 <- FrF2(nruns = 4, 
                nfactors = 3,
                generators = "AB", 
                replications = 1, 
                randomize = F)
Tabla_1
##    A  B  C
## 1 -1 -1  1
## 2  1 -1 -1
## 3 -1  1 -1
## 4  1  1  1
## class=design, type= FrF2.generators
## Estructura de alias hasta interacciones dobles
aliasprint(Tabla_1)
## $legend
## [1] A=A B=B C=C
## 
## $main
## [1] A=BC B=AC C=AB
## 
## $fi2
## character(0)
## Diseño de Resolución III


# Ejemplo 2: Diseño 2^5-2
# ==========================
# Generadores:
# D=ABC
# E=BC

Tabla_2 <- FrF2(nruns = 8, 
                nfactors = 5,
                generators = c("ABC", "BC"), 
                replications = 1, 
                randomize = F)
Tabla_2
##    A  B  C  D  E
## 1 -1 -1 -1 -1  1
## 2  1 -1 -1  1  1
## 3 -1  1 -1  1 -1
## 4  1  1 -1 -1 -1
## 5 -1 -1  1  1 -1
## 6  1 -1  1 -1 -1
## 7 -1  1  1 -1  1
## 8  1  1  1  1  1
## class=design, type= FrF2.generators
## Estructura de alias hasta interacciones dobles
aliasprint(Tabla_2)
## $legend
## [1] A=A B=B C=C D=D E=E
## 
## $main
## [1] A=DE    B=CE    C=BE    D=AE    E=AD=BC
## 
## $fi2
## [1] AB=CD AC=BD
## Diseño de Resolución III

# Estructura de alias completa:
Respuesta <- c(1,2,3,4,5,6,7,8)
Tabla_2 <- add.response(design = Tabla_2, response = Respuesta)
Tabla_2
##    A  B  C  D  E Respuesta
## 1 -1 -1 -1 -1  1         1
## 2  1 -1 -1  1  1         2
## 3 -1  1 -1  1 -1         3
## 4  1  1 -1 -1 -1         4
## 5 -1 -1  1  1 -1         5
## 6  1 -1  1 -1 -1         6
## 7 -1  1  1 -1  1         7
## 8  1  1  1  1  1         8
## class=design, type= FrF2.generators
aliases(lm(Respuesta~(.)^5, data= Tabla_2), code = T)
## $legend
##                     
## A=A B=B C=C D=D E=E 
## 
## $aliases
##                           
##  A = D:E = B:C:D = A:B:C:E
##  B = C:E = A:C:D = A:B:D:E
##  C = B:E = A:B:D = A:C:D:E
##  D = A:E = A:B:C = B:C:D:E
##  E = A:D = B:C = A:B:C:D:E
##  A:B = C:D = A:C:E = B:D:E
##  A:C = B:D = A:B:E = C:D:E
# Ejemplo 3: Diseño 2^7-4
# ==========================
# Generadores:
# D=AB
# E=AC
# F=BC
# G=ABC

Tabla_3 <- FrF2(nruns = 8, 
                nfactors = 7,
                generators = c("AB", 
                               "AC",
                               "BC",
                               "ABC"), 
                replications = 1, 
                randomize = F)
Tabla_3
##    A  B  C  D  E  F  G
## 1 -1 -1 -1  1  1  1 -1
## 2  1 -1 -1 -1 -1  1  1
## 3 -1  1 -1 -1  1 -1  1
## 4  1  1 -1  1 -1 -1 -1
## 5 -1 -1  1  1 -1 -1  1
## 6  1 -1  1 -1  1 -1 -1
## 7 -1  1  1 -1 -1  1 -1
## 8  1  1  1  1  1  1  1
## class=design, type= FrF2.generators
## Estructura de alias hasta interacciones dobles
aliasprint(Tabla_3)
## $legend
## [1] A=A B=B C=C D=D E=E F=F G=G
## 
## $main
## [1] A=BD=CE=FG B=AD=CF=EG C=AE=BF=DG D=AB=CG=EF E=AC=BG=DF F=AG=BC=DE G=AF=BE=CD
## 
## $fi2
## character(0)
## Diseño de Resolución III

# Estructura de alias completa:
Respuesta <- c(1,2,3,4,5,6,7,8)
Tabla_3 <- add.response(design = Tabla_3, response = Respuesta)
Tabla_3
##    A  B  C  D  E  F  G Respuesta
## 1 -1 -1 -1  1  1  1 -1         1
## 2  1 -1 -1 -1 -1  1  1         2
## 3 -1  1 -1 -1  1 -1  1         3
## 4  1  1 -1  1 -1 -1 -1         4
## 5 -1 -1  1  1 -1 -1  1         5
## 6  1 -1  1 -1  1 -1 -1         6
## 7 -1  1  1 -1 -1  1 -1         7
## 8  1  1  1  1  1  1  1         8
## class=design, type= FrF2.generators
aliases(lm(Respuesta~(.)^7, data= Tabla_3), code = T)
## $legend
##                             
## A=A B=B C=C D=D E=E F=F G=G 
## 
## $aliases
##                                                                                                                                               
##  A = B:D = C:E = F:G = B:C:G = B:E:F = C:D:F = D:E:G = A:B:C:F = A:B:E:G = A:C:D:G = A:D:E:F = A:B:C:D:E = A:B:D:F:G = A:C:E:F:G = B:C:D:E:F:G
##  B = A:D = C:F = E:G = A:C:G = A:E:F = C:D:E = D:F:G = A:B:C:E = A:B:F:G = B:C:D:G = B:D:E:F = A:B:C:D:F = A:B:D:E:G = B:C:E:F:G = A:C:D:E:F:G
##  C = A:E = B:F = D:G = A:B:G = A:D:F = B:D:E = E:F:G = A:B:C:D = A:C:F:G = B:C:E:G = C:D:E:F = A:B:C:E:F = A:C:D:E:G = B:C:D:F:G = A:B:D:E:F:G
##  D = A:B = C:G = E:F = A:C:F = A:E:G = B:C:E = B:F:G = A:C:D:E = A:D:F:G = B:C:D:F = B:D:E:G = A:B:C:D:G = A:B:D:E:F = C:D:E:F:G = A:B:C:E:F:G
##  E = A:C = B:G = D:F = A:B:F = A:D:G = B:C:D = C:F:G = A:B:D:E = A:E:F:G = B:C:E:F = C:D:E:G = A:B:C:E:G = A:C:D:E:F = B:D:E:F:G = A:B:C:D:F:G
##  F = A:G = B:C = D:E = A:B:E = A:C:D = B:D:G = C:E:G = A:B:D:F = A:C:E:F = B:E:F:G = C:D:F:G = A:B:C:F:G = A:D:E:F:G = B:C:D:E:F = A:B:C:D:E:G
##  G = A:F = B:E = C:D = A:B:C = A:D:E = B:D:F = C:E:F = A:B:D:G = A:C:E:G = B:C:F:G = D:E:F:G = A:B:E:F:G = A:C:D:F:G = B:C:D:E:G = A:B:C:D:E:F