Capítulo 5 Delineamento em quadrado greco-latino
5.1 Motivação

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