Capítulo 5 Delineamento em quadrado greco-latino

5.1 Motivação

Ilustração de um experimento em delineamento quadrado greco-latino 4 \(\times\) 4 para estudar o efeito de 2 tipos de materiais usandos para construção das hélices (plástico e fibra de carbono) combinado com o número de pás (2 e 3 pás) em relação ao tempo de vôo. O delineamento está blocando o efeito de piloto (linhas, e.g. experiência), das condições de vôo (colunas, e.g. vento, visibilidade) e de condições do drone (e.g. bateria, desgaste).

Figura 5.1: Ilustração de um experimento em delineamento quadrado greco-latino 4 \(\times\) 4 para estudar o efeito de 2 tipos de materiais usandos para construção das hélices (plástico e fibra de carbono) combinado com o número de pás (2 e 3 pás) em relação ao tempo de vôo. O delineamento está blocando o efeito de piloto (linhas, e.g. experiência), das condições de vôo (colunas, e.g. vento, visibilidade) e de condições do drone (e.g. bateria, desgaste).

5.2 Producação de um processo químico

# Exerício 4-22, página 168, Montgomery 5th ed.

5.3 Gerar o delineamento

Quadrados greco latinos existem para \(p \geq 3\) exceto para \(p = 6\). Eles acomodam 4 fontes de variação com \(p\) níveis cada usando \(p^2\) unidades experimentais. Em geral, 3 das fontes de variação são termos de blocagem e 1 é o fator de interesse. Um delineamento greco latino são dois delineamentos de quadrado latino ortogonais sobrepostos.

Essa leitura parece ser muito interessante: https://apps.dtic.mil/dtic/tr/fulltext/u2/728444.pdf.

http://math.ucdenver.edu/~wcherowi/courses/m6406/csln3.html

http://buzzard.ups.edu/squares.html.

https://www.sciencedirect.com/topics/mathematics/orthogonal-latin-square.

https://pdfs.semanticscholar.org/6c5d/a59a399c50d28ebfce36d28cac31ad7a8e3e.pdf.

Ver também conteúdo no “Planning, Construction, and Statistical Analysis of Comparative Experiments” de Francis G. Giesbrecht, Marcia L. Gumpertz, página 134.

# ATTENTION: por enquanto, funciona apenas para n ímpar.
# Número de tratamentos.

# O procedimento a seguir considera o caso `n = 2 * k + 1`, para `k > 0`,
# ou seja, situações de `n` ímpar.

n_trat <- 9

# Joga para o ímpar logo acima se for par.
# n <- ifelse(n_trat %% 2 == 0, n_trat + 1, n_trat)
n <- n_trat
s <- seq(n)

# Diagonais com orientação 45°.
P <- outer(s, s, FUN = "+") %% n + 1
P
##       [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9]
##  [1,]    3    4    5    6    7    8    9    1    2
##  [2,]    4    5    6    7    8    9    1    2    3
##  [3,]    5    6    7    8    9    1    2    3    4
##  [4,]    6    7    8    9    1    2    3    4    5
##  [5,]    7    8    9    1    2    3    4    5    6
##  [6,]    8    9    1    2    3    4    5    6    7
##  [7,]    9    1    2    3    4    5    6    7    8
##  [8,]    1    2    3    4    5    6    7    8    9
##  [9,]    2    3    4    5    6    7    8    9    1
# Diagonais com orientação -45°.
Q <- (outer(s, s, FUN = "-") %% n) + 1
Q
##       [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9]
##  [1,]    1    9    8    7    6    5    4    3    2
##  [2,]    2    1    9    8    7    6    5    4    3
##  [3,]    3    2    1    9    8    7    6    5    4
##  [4,]    4    3    2    1    9    8    7    6    5
##  [5,]    5    4    3    2    1    9    8    7    6
##  [6,]    6    5    4    3    2    1    9    8    7
##  [7,]    7    6    5    4    3    2    1    9    8
##  [8,]    8    7    6    5    4    3    2    1    9
##  [9,]    9    8    7    6    5    4    3    2    1
# Verifica se cada combinação ocorre uma vez.
u <- apply(cbind(c(P), c(Q)),
           MARGIN = 1,
           FUN = paste, collapse = "")
table(u)
## u
## 11 12 13 14 15 16 17 18 19 21 22 23 24 25 26 27 28 29 31 32 33 34 
##  1  1  1  1  1  1  1  1  1  1  1  1  1  1  1  1  1  1  1  1  1  1 
## 35 36 37 38 39 41 42 43 44 45 46 47 48 49 51 52 53 54 55 56 57 58 
##  1  1  1  1  1  1  1  1  1  1  1  1  1  1  1  1  1  1  1  1  1  1 
## 59 61 62 63 64 65 66 67 68 69 71 72 73 74 75 76 77 78 79 81 82 83 
##  1  1  1  1  1  1  1  1  1  1  1  1  1  1  1  1  1  1  1  1  1  1 
## 84 85 86 87 88 89 91 92 93 94 95 96 97 98 99 
##  1  1  1  1  1  1  1  1  1  1  1  1  1  1  1
# Para aleatorizar linhas e colunas.
s <- seq(n_trat)
lin <- sample(s)
col <- sample(s)
P <- P[lin, col]
Q <- Q[lin, col]

design <- expand.grid(lin = gl(n_trat, 1),
                      col = gl(n_trat, 1),
                      KEEP.OUT.ATTRS = FALSE)
design$blc <- factor(c(Q))
design$trt <- LETTERS[c(P)]
attr(design, "dql_1") <- P
attr(design, "dql_2") <- Q
design
##    lin col blc trt
## 1    1   1   1   G
## 2    2   1   9   F
## 3    3   1   8   E
## 4    4   1   2   H
## 5    5   1   6   C
## 6    6   1   3   I
## 7    7   1   4   A
## 8    8   1   7   D
## 9    9   1   5   B
## 10   1   2   9   H
## 11   2   2   8   G
## 12   3   2   7   F
## 13   4   2   1   I
## 14   5   2   5   D
## 15   6   2   2   A
## 16   7   2   3   B
## 17   8   2   6   E
## 18   9   2   4   C
## 19   1   3   3   E
## 20   2   3   2   D
## 21   3   3   1   C
## 22   4   3   4   F
## 23   5   3   8   A
## 24   6   3   5   G
## 25   7   3   6   H
## 26   8   3   9   B
## 27   9   3   7   I
## 28   1   4   8   I
## 29   2   4   7   H
## 30   3   4   6   G
## 31   4   4   9   A
## 32   5   4   4   E
## 33   6   4   1   B
## 34   7   4   2   C
## 35   8   4   5   F
## 36   9   4   3   D
## 37   1   5   4   D
## 38   2   5   3   C
## 39   3   5   2   B
## 40   4   5   5   E
## 41   5   5   9   I
## 42   6   5   6   F
## 43   7   5   7   G
## 44   8   5   1   A
## 45   9   5   8   H
## 46   1   6   6   B
## 47   2   6   5   A
## 48   3   6   4   I
## 49   4   6   7   C
## 50   5   6   2   G
## 51   6   6   8   D
## 52   7   6   9   E
## 53   8   6   3   H
## 54   9   6   1   F
## 55   1   7   5   C
## 56   2   7   4   B
## 57   3   7   3   A
## 58   4   7   6   D
## 59   5   7   1   H
## 60   6   7   7   E
## 61   7   7   8   F
## 62   8   7   2   I
## 63   9   7   9   G
## 64   1   8   7   A
## 65   2   8   6   I
## 66   3   8   5   H
## 67   4   8   8   B
## 68   5   8   3   F
## 69   6   8   9   C
## 70   7   8   1   D
## 71   8   8   4   G
## 72   9   8   2   E
## 73   1   9   2   F
## 74   2   9   1   E
## 75   3   9   9   D
## 76   4   9   3   G
## 77   5   9   7   B
## 78   6   9   4   H
## 79   7   9   5   I
## 80   8   9   8   C
## 81   9   9   6   A
xtabs(~lin + trt, data = design)
##    trt
## lin A B C D E F G H I
##   1 1 1 1 1 1 1 1 1 1
##   2 1 1 1 1 1 1 1 1 1
##   3 1 1 1 1 1 1 1 1 1
##   4 1 1 1 1 1 1 1 1 1
##   5 1 1 1 1 1 1 1 1 1
##   6 1 1 1 1 1 1 1 1 1
##   7 1 1 1 1 1 1 1 1 1
##   8 1 1 1 1 1 1 1 1 1
##   9 1 1 1 1 1 1 1 1 1
xtabs(~col + trt, data = design)
##    trt
## col A B C D E F G H I
##   1 1 1 1 1 1 1 1 1 1
##   2 1 1 1 1 1 1 1 1 1
##   3 1 1 1 1 1 1 1 1 1
##   4 1 1 1 1 1 1 1 1 1
##   5 1 1 1 1 1 1 1 1 1
##   6 1 1 1 1 1 1 1 1 1
##   7 1 1 1 1 1 1 1 1 1
##   8 1 1 1 1 1 1 1 1 1
##   9 1 1 1 1 1 1 1 1 1
xtabs(~blc + trt, data = design)
##    trt
## blc A B C D E F G H I
##   1 1 1 1 1 1 1 1 1 1
##   2 1 1 1 1 1 1 1 1 1
##   3 1 1 1 1 1 1 1 1 1
##   4 1 1 1 1 1 1 1 1 1
##   5 1 1 1 1 1 1 1 1 1
##   6 1 1 1 1 1 1 1 1 1
##   7 1 1 1 1 1 1 1 1 1
##   8 1 1 1 1 1 1 1 1 1
##   9 1 1 1 1 1 1 1 1 1
# TODO: caso par. ------------------------------------------------------
n_trat <- 4
n <- n_trat
s <- seq(n)

P <- outer(s, s, FUN = "+") %% n + 1
P
##      [,1] [,2] [,3] [,4]
## [1,]    3    4    1    2
## [2,]    4    1    2    3
## [3,]    1    2    3    4
## [4,]    2    3    4    1
Q <- (outer(s, s, FUN = "-") %% n) + 1
Q
##      [,1] [,2] [,3] [,4]
## [1,]    1    4    3    2
## [2,]    2    1    4    3
## [3,]    3    2    1    4
## [4,]    4    3    2    1
# TODO: consultar a literatura. A teoria por baixo disso não é tão
# facilmente adivinhável.

#-----------------------------------------------------------------------
# E se for para construir 3 delineamentos em quadrado latino que sejam
# ortogonais entre si? Quantos podem ser construídos para um fator de
# `p` níveis? Seriam `p - 1`?

# QUESTION: Fatias de um cubo latino são quadrados latinos ortogonais?

n <- 3
s <- seq(n)
P <- outer(s, s, FUN = "+") %% n + 1
P
##      [,1] [,2] [,3]
## [1,]    3    1    2
## [2,]    1    2    3
## [3,]    2    3    1
A <- array(c((P + 0) %% n,
             (P + 1) %% n,
             (P + 2) %% n),
           dim = rep(n, n, n))

# Toda e qualquer face é um quadrado latino.
A[1, ,]
##      [,1] [,2] [,3]
## [1,]    0    1    2
## [2,]    1    2    0
## [3,]    2    0    1
A[2, ,]
##      [,1] [,2] [,3]
## [1,]    1    2    0
## [2,]    2    0    1
## [3,]    0    1    2
A[3, ,]
##      [,1] [,2] [,3]
## [1,]    2    0    1
## [2,]    0    1    2
## [3,]    1    2    0
A[, 1,]
##      [,1] [,2] [,3]
## [1,]    0    1    2
## [2,]    1    2    0
## [3,]    2    0    1
A[, 2,]
##      [,1] [,2] [,3]
## [1,]    1    2    0
## [2,]    2    0    1
## [3,]    0    1    2
A[, 3,]
##      [,1] [,2] [,3]
## [1,]    2    0    1
## [2,]    0    1    2
## [3,]    1    2    0
A[,, 1]
##      [,1] [,2] [,3]
## [1,]    0    1    2
## [2,]    1    2    0
## [3,]    2    0    1
A[,, 2]
##      [,1] [,2] [,3]
## [1,]    1    2    0
## [2,]    2    0    1
## [3,]    0    1    2
A[,, 3]
##      [,1] [,2] [,3]
## [1,]    2    0    1
## [2,]    0    1    2
## [3,]    1    2    0
des <- expand.grid(gl(3, 1), gl(3, 1), gl(3, 1), KEEP.OUT.ATTRS = FALSE)
des$trt <- c(A)

xtabs(~trt, data = des)
## trt
## 0 1 2 
## 9 9 9
xtabs(~Var1 + trt, data = des)
##     trt
## Var1 0 1 2
##    1 3 3 3
##    2 3 3 3
##    3 3 3 3
xtabs(~Var2 + trt, data = des)
##     trt
## Var2 0 1 2
##    1 3 3 3
##    2 3 3 3
##    3 3 3 3
xtabs(~Var3 + trt, data = des)
##     trt
## Var3 0 1 2
##    1 3 3 3
##    2 3 3 3
##    3 3 3 3

Manual de Planejamento e Análise de Experimentos com R
Walmes Marques Zeviani