CE 074 - Controle de Processos Industriais

http://www.leg.ufpr.br/ce074


Universidade Federal do Paraná Prof. Fernando de Pol Mayer

Curso de Graduação em Estatística Lab. de Estatística e Geoinformação - LEG

Departamento de Estatística - UFPR


Experimentos fatoriais fracionados

Nos experimentos fatoriais \(2^k\), o número de corridas cresce rapidamente com o número de fatores.

k 2 3  4  5  6   7   8   9   10
n 4 8 16 32 64 128 256 512 1024

Com isso, se existe necessidade de estudar muitos fatores, esse tipo de planejamento oferece limitação devido ao elevado número de corridas exigidas na sua execução. Ao correr um experimento \(2^k\), é possível estimar efeitos principais, interações duplas e interações até de grau \(k\). Porém, essas interações de ordem elevada podem ser desconsideradas, já que normalmente não são de interesse prático e muitas vezes possuem efeitos desprezíveis. O que se considera mais importante são os efeitos principais e interações baixas (duplas, triplas). Assim, correr o experimento \(2^k\) iria permitir estimar interações altas que de fato não seriam aproveitadas. Então o ponto é: não seria possível reduzir o número de corridas do experimento já qua há pouco interesse nas interações altas? Sim. É exatamente esse o elemento central dos experimentos fatoriais fracionados.

Os fatoriais fracionários tem um uso importante nos experimentos exploratórios (screening experiments). Estes são experimentos em que muitos fatores são considerados, com a finalidade de se identificar aqueles fatores que possuem efeitos grandes. Experimentos exploratórios geralmente são realizados nos estágios iniciais de um projeto, quando é provavel que muitos dos fatores considerados tenham pouco ou nenhum efeito na resposta. Os fatores que forem identificados como importantes serão então investigados mais a fundo em experimentos subsequentes.

A idéia básica é dividir as corridas do fatorial \(2^k\) em frações, exatamente da mesma forma que fazemos para aplicar blocagem. Na blocagem escolhemos um efeito para propositalmente confundirmos com o efeito dos blocos. Nos fatoriais fracionados é similar: define-se efeitos que serão propositalmente confundidos. O confundimento entre efeitos é o preço que se paga para reduzir o número de corridas. Perceba que nosso objetivo é estudar \(k\) fatores onde seria possível estudar com todas as corridas um fatorial com k* < k. O ponto chave ao delinear o experimento é saber escolher os efeitos a serem confundidos para tirar a maior vantagem possível do experimento que é inferir sobre os efeitos principais e interações baixas.

Fatoriais fracionados \(2^{k-1}\), ou meia-fração de um fatorial \(2^k\)

Nesses experimentos avaliamos k fatores fazendo metade das corridas previstas para o fatorial \(2^k\), ou seja \(2^{k-1} = 2^k 2^{-1} = \frac{2^k}{2}\). Para saber que níveis de cada fator que serão corridos, temos que montar a matriz de delineamento do experimento com \(k-1\) fatores. Os níveis do \(k\)-ésimo fator são determinados a partir dos precedentes e do efeito escolhido para o confundimento.

Considere como exemplo, um experimento fatorial \(2^{3-1}\), ou seja, uma meia-fração de um \(2^3\). Esse planejamento possui apenas quatro corridas, em contraste com as oito corridas do planejamento original.

A tabela de siais para o planejamento \(2^3\) é mostrada abaixo.

    I  A  B  C AB AC BC ABC
a   1  1 -1 -1 -1 -1  1   1
b   1 -1  1 -1 -1  1 -1   1
c   1 -1 -1  1  1 -1 -1   1
abc 1  1  1  1  1  1  1   1
(1) 1 -1 -1 -1  1  1  1  -1
ab  1  1  1 -1  1 -1 -1  -1
ac  1  1 -1  1 -1  1 -1  -1
bc  1 -1  1  1 -1 -1  1  -1

Repare que esta tabela está propositalmente ordenada em ordem decrescente pela coluna ABC. Se selecionarmos as quatro combinações de tratamento onde a coluna ABC possui sinal positivo, ou seja, \(a\), \(b\), \(c\), \(abc\), estamos selecionando uma meia-fração desse planejamento. Sendo assim, dizemos que \(ABC\) é o gerador dessa fração particular. Além disso, o elemento identidade \(I\) possui também o mesmo sinal (positivo) para as quatro corridas. Assim, chamamos

\[ I = ABC \]

de relação de definção para esse planejamento fracionário. Essa fração com sinal positivo na relação de definição é chamada de fração principal, enquanto que a fração com sinal negativo em ABC, \(I = -ABC\) é chamada de fração alternada.

Ainda analisando a parte superior da tabela acima, note que os sinais que estimam os contrastes para o fator \(A\) são os mesmos que estimam os contrastes para a interação \(BC\). Da mesma forma, os contrastes de \(B\) são os mesmos de \(AC\), e assim por diante. Isso ocorre pois a relação de definição gera uma série de confundimentos no fatorial fracionário. De fato, todos os efeitos e interações estão confundidos com algum outro efeito ou interação. Se multiplicarmos cada fator ou interação pela relação de definição, e usarmos as propriedades da tabela de sinais, podemos ver que:

\[ \begin{align} A \cdot I = A \cdot ABC = A^2BC = BC \\ B \cdot I = B \cdot ABC = AB^2C = AC \\ C \cdot I = C \cdot ABC = ABC^2 = AB \\ \end{align} \]

Portanto, só precisamos estimar os efeitos de A, B, e C, pois BC, AC, e AB estão confundidos com estes efeitos. À estes efeitos que estão confundidos chamamos de pares associados, ou aliases. Em experimentos fatoriais fracionados \(2^{k-1}\) todo efeito possui um par associado. Nesse caso específico de um fracionário \(2^{3-1}\), cada efeito principal tem um par associado de segunda ordem.

Repare então que ao estimar o afeito de A, por exemplo, também estamos estimando o efeito de BC. Se este efeito for grande, não temos como saber se ele é causado por A ou por BC isoladamente, pois eles estão confundidos. No entanto, como vimos anteriormente, é muito mais comum que efeitos principais sejam mais importantes do que efeitos de ordens mais altas. Assim, se assumirmos que efeitos de ordens mais altas tem pouco ou nenhum efeito, então podemos concluir que um efeito grande de A seja exclusivamente desse efeito principal. O mesmo vale para os outros efeitos.

Novamente aqui cabe uma frase já escrita anteriormente: o confundimento entre efeitos é o preço que se paga para reduzir o número de corridas. A ideia do experimento fatorial fracionário é de justamente correr experimentos com muitos fatores em frações menores, verificar os efeitos que realmente importam, e daí sim planejar fatoriais completos, mas com menos fatores, aqueles que realmente importam. Dessa forma, podemos correr uma sequência de experimentos pequenos e eficientes, combinar informações por meio de vários experimentos, e tirar vantagem de aprender sobre o processo que estamos experimentando à medida que continuamos. Esse é um bom exemplo do conceito de experiência sequencial.

Um planejamento \(2^{k-1}\) pode ser construído escrevendo as combinações dos tratamentos para um fatorial completo com \(k-1\) fatores, chamado de planejamento básico. Depois, adiciona-se o \(k\)-ésimo fator, identificando seus níveis alto e baixo com os sinais mais e menos da interação de mais alta ordem.

Por exemplo, umm fatorial fracionário \(2^{4-1}\) é construído escrevendo o planejamento básico \(2^3\), e então igualando o fator \(D\) com a interação \(ABC\), pois a relação de definição é \(I = ABCD\) e \(D \cdot I = D \cdot ABCD = ABC\).

##======================================================================
## Exemplo 2^(4-1), tabela de sinais do 2^3
da <- expand.grid(A = c(-1, 1), B = c(-1, 1), C = c(-1, 1))
da
   A  B  C
1 -1 -1 -1
2  1 -1 -1
3 -1  1 -1
4  1  1 -1
5 -1 -1  1
6  1 -1  1
7 -1  1  1
8  1  1  1
## Níveis de D gerados pelo efeito ABC
da$D <- with(da, A*B*C)
da
   A  B  C  D
1 -1 -1 -1 -1
2  1 -1 -1  1
3 -1  1 -1  1
4  1  1 -1 -1
5 -1 -1  1  1
6  1 -1  1 -1
7 -1  1  1 -1
8  1  1  1  1

Veja que propositalmente atribuímos os níveis de D sobre o efeito ABC, ou seja, confundimos estes dois efeitos. Mas sabemos que este não é o único par de efeitos que está confundido. Se obtermos a tabela de sinais para todos os efeitos veremos mais efeitos confundidos.

(tab <- model.matrix(~ A*B*C*D, da))
  (Intercept)  A  B  C  D A:B A:C B:C A:D B:D C:D A:B:C A:B:D A:C:D B:C:D
1           1 -1 -1 -1 -1   1   1   1   1   1   1    -1    -1    -1    -1
2           1  1 -1 -1  1  -1  -1   1   1  -1  -1     1    -1    -1     1
3           1 -1  1 -1  1  -1   1  -1  -1   1  -1     1    -1     1    -1
4           1  1  1 -1 -1   1  -1  -1  -1  -1   1    -1    -1     1     1
5           1 -1 -1  1  1   1  -1  -1  -1  -1   1     1     1    -1    -1
6           1  1 -1  1 -1  -1   1  -1  -1   1  -1    -1     1    -1     1
7           1 -1  1  1 -1  -1  -1   1   1  -1  -1    -1     1     1    -1
8           1  1  1  1  1   1   1   1   1   1   1     1     1     1     1
  A:B:C:D
1       1
2       1
3       1
4       1
5       1
6       1
7       1
8       1
attr(,"assign")
 [1]  0  1  2  3  4  5  6  7  8  9 10 11 12 13 14 15

Os pares de efeitos \((A, BCD), (B, ACD), \ldots, (A:B, C:D)\) estão confundidos, pois têm os mesmos sinais. Verificar aos pares as colunas para encontrar os pares associados é demorado, por isso é mais fácil fazer operações com o contraste de definição, \(I = ABCD\). Assim, para sabermos quem está confundido com quem, podemos fazer

\[ \begin{align} A \cdot I = A \cdot ABCD = A^2BCD = BCD \\ B \cdot I = B \cdot ABCD = AB^2CD = ACD \\ C \cdot I = C \cdot ABCD = ABC^2D = ABD \\ D \cdot I = D \cdot ABCD = ABCD^2 = ABC \\ \end{align} \]

para os efeitos principais, e

\[ \begin{align} AB \cdot I = AB \cdot ABCD = A^2B^2CD = CD \\ AC \cdot I = AC \cdot ABCD = A^2BC^2D = BD \\ AD \cdot I = AD \cdot ABCD = A^2BCD^2 = BC \\ \end{align} \]

para os efeitos de segunda ordem. Veja que aqui, os efeitos principais estão confundidos com efeitos de terceira ordem, e efeitos de segunda ordem estão confundidos entre si.

No R, podemos obter a tabela de sinais para os efeitos únicos através de

(tab <- unique(tab, MARGIN = 2))
  (Intercept)  A  B  C  D A:B A:C B:C
1           1 -1 -1 -1 -1   1   1   1
2           1  1 -1 -1  1  -1  -1   1
3           1 -1  1 -1  1  -1   1  -1
4           1  1  1 -1 -1   1  -1  -1
5           1 -1 -1  1  1   1  -1  -1
6           1  1 -1  1 -1  -1   1  -1
7           1 -1  1  1 -1  -1  -1   1
8           1  1  1  1  1   1   1   1

Veja que ao usar esta tabela para estimar os efeitos de I, A, B, C, D, AB, AC, e BC, também estamos estiamdo BCD, ACD, ABD, ABC, CD, BD, e AD, respectivamente (efeitos confundidos).

Podemos escolher qualquer contraste para confundir, no entanto, usar as interações mais altas fazem com que os efeitos principais fiquem confundidos com estas, que podem ser assumidas como nulas. Então que o valor observado do efeito pode ser considerado como exclusivamente do efeito principal.

Uma outra forma de se construir um planejamento \(2^{k-1}\) é usar a própria relação de definição para “fracionar” o experimento original. Nesse mesmo exemplo do fatorial \(2^{4-1}\), podemos então obter o experimento completo \(2^4\)

db <- expand.grid(A = c(-1, 1), B = c(-1, 1),
                  C = c(-1, 1), D = c(-1, 1))
db
    A  B  C  D
1  -1 -1 -1 -1
2   1 -1 -1 -1
3  -1  1 -1 -1
4   1  1 -1 -1
5  -1 -1  1 -1
6   1 -1  1 -1
7  -1  1  1 -1
8   1  1  1 -1
9  -1 -1 -1  1
10  1 -1 -1  1
11 -1  1 -1  1
12  1  1 -1  1
13 -1 -1  1  1
14  1 -1  1  1
15 -1  1  1  1
16  1  1  1  1

Como a relação de definição é \(I = ABCD\), e ela é a geradora da meia-fração do experimento, então so precisamos calcular \(ABCD\)

db$ABCD <- with(db, A*B*C*D)
db
    A  B  C  D ABCD
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
9  -1 -1 -1  1   -1
10  1 -1 -1  1    1
11 -1  1 -1  1    1
12  1  1 -1  1   -1
13 -1 -1  1  1    1
14  1 -1  1  1   -1
15 -1  1  1  1   -1
16  1  1  1  1    1
db[order(db$ABCD, decreasing = TRUE), ]
    A  B  C  D ABCD
1  -1 -1 -1 -1    1
4   1  1 -1 -1    1
6   1 -1  1 -1    1
7  -1  1  1 -1    1
10  1 -1 -1  1    1
11 -1  1 -1  1    1
13 -1 -1  1  1    1
16  1  1  1  1    1
2   1 -1 -1 -1   -1
3  -1  1 -1 -1   -1
5  -1 -1  1 -1   -1
8   1  1  1 -1   -1
9  -1 -1 -1  1   -1
12  1  1 -1  1   -1
14  1 -1  1  1   -1
15 -1  1  1  1   -1

e selecionar a fração principal de \(ABCD\), ou seja, aquela com sinal positivo em \(ABCD\),

db <- subset(db, ABCD == 1)
db
    A  B  C  D ABCD
1  -1 -1 -1 -1    1
4   1  1 -1 -1    1
6   1 -1  1 -1    1
7  -1  1  1 -1    1
10  1 -1 -1  1    1
11 -1  1 -1  1    1
13 -1 -1  1  1    1
16  1  1  1  1    1

Veja que automaticamente ficamos com a relação anterior de \(D = ABC\)

db$D == with(db, A*B*C)
[1] TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE

Portanto as duas formas mostradas acima podem ser utilizadas para construir qualquer experimento fatorial fracionado \(2^{k-1}\).

Exemplo de um experimento \(2^4\), convertido para um experimento \(2^{4-1}\)

Exemplo 14-5, Montgomery (EAPE), pg. 385: processo de ataque químico localizado sobre nitreto, por meio de uma sonda de plasma de pastilha única. Variável resposta: taxa de ataque do nitreto de silício. Variáveis explicativas:

                Fatores do experimento
 Nível     Espaçamento   Pressão    Vazão de C2F6   Potência
              (cm)       (m Torr)   (cm³ pad/min)     (W)
 Baixo (-)    0.80         450           125          275
 Alto  (+)    1.20         550           200          325

Este exemplo já foi analsado na aula 05. Este é um experimento fatorial \(2^4\) completo, ou seja, foram corridas todas as 16 combinações de tratamentos possíveis. Vamos re-analisar estes dados completos aqui, e depois realizar o fracionamento desse experimento, com aintenção de verificar se chegamos à mesma concusão.

##----------------------------------------------------------------------
## Importação
url <- "http://www.leg.ufpr.br/~fernandomayer/dados/mont_14-5.txt"
dados <- read.table(url, header = TRUE)
row.names(dados) <- apply(dados, 1,
                          function(i) paste(letters[1:4][i==1], collapse = ""))
row.names(dados)[1] <- "(1)"
dados
      A  B  C  D    y
(1)  -1 -1 -1 -1  550
a     1 -1 -1 -1  669
b    -1  1 -1 -1  604
ab    1  1 -1 -1  650
c    -1 -1  1 -1  633
ac    1 -1  1 -1  642
bc   -1  1  1 -1  601
abc   1  1  1 -1  635
d    -1 -1 -1  1 1037
ad    1 -1 -1  1  749
bd   -1  1 -1  1 1052
abd   1  1 -1  1  868
cd   -1 -1  1  1 1075
acd   1 -1  1  1  860
bcd  -1  1  1  1 1063
abcd  1  1  1  1  729
## Definições do experimento
k <- 4
n <- 1

##----------------------------------------------------------------------
## Montando a tabela de sinais
(tab <- model.matrix(~A * B * C * D, data = dados))
     (Intercept)  A  B  C  D A:B A:C B:C A:D B:D C:D A:B:C A:B:D A:C:D
(1)            1 -1 -1 -1 -1   1   1   1   1   1   1    -1    -1    -1
a              1  1 -1 -1 -1  -1  -1   1  -1   1   1     1     1     1
b              1 -1  1 -1 -1  -1   1  -1   1  -1   1     1     1    -1
ab             1  1  1 -1 -1   1  -1  -1  -1  -1   1    -1    -1     1
c              1 -1 -1  1 -1   1  -1  -1   1   1  -1     1    -1     1
ac             1  1 -1  1 -1  -1   1  -1  -1   1  -1    -1     1    -1
bc             1 -1  1  1 -1  -1  -1   1   1  -1  -1    -1     1     1
abc            1  1  1  1 -1   1   1   1  -1  -1  -1     1    -1    -1
d              1 -1 -1 -1  1   1   1   1  -1  -1  -1    -1     1     1
ad             1  1 -1 -1  1  -1  -1   1   1  -1  -1     1    -1    -1
bd             1 -1  1 -1  1  -1   1  -1  -1   1  -1     1    -1     1
abd            1  1  1 -1  1   1  -1  -1   1   1  -1    -1     1    -1
cd             1 -1 -1  1  1   1  -1  -1  -1  -1   1     1     1    -1
acd            1  1 -1  1  1  -1   1  -1   1  -1   1    -1    -1     1
bcd            1 -1  1  1  1  -1  -1   1  -1   1   1    -1    -1    -1
abcd           1  1  1  1  1   1   1   1   1   1   1     1     1     1
     B:C:D A:B:C:D
(1)     -1       1
a       -1      -1
b        1      -1
ab       1       1
c        1      -1
ac       1       1
bc      -1       1
abc     -1      -1
d        1      -1
ad       1       1
bd      -1       1
abd     -1      -1
cd      -1       1
acd     -1      -1
bcd      1      -1
abcd     1       1
attr(,"assign")
 [1]  0  1  2  3  4  5  6  7  8  9 10 11 12 13 14 15
##----------------------------------------------------------------------
## Estimativa dos efeitos
## Podemos usar as colunas da tabela de sinais para calcular os
## contrastes
y <- dados$y
## Contrastes
contr <- t(tab[, -1]) %*% y
## Efeitos = contraste/(n2^{k-1})
(ef <- contr/(n * 2^(k - 1)))
            [,1]
A       -101.625
B         -1.625
C          7.375
D        306.125
A:B       -7.875
A:C      -24.875
B:C      -43.875
A:D     -153.625
B:D       -0.625
C:D       -2.125
A:B:C    -15.625
A:B:D      4.125
A:C:D      5.625
B:C:D    -25.375
A:B:C:D  -40.125
##----------------------------------------------------------------------
## Gráfico de probabilidade normal dos efeitos estimados
qqaux <- qqnorm(ef, col = 2, pch = 19); qqline(ef)
text(qqaux$x, qqaux$y, rownames(qqaux$y), cex = 0.8, pos = 3)

##----------------------------------------------------------------------
## Ajuste do modelo
## Como vimos no gráfico anterior, as interações de ordem maior do que 2
## são desnecessárias, portanto vamos ajustar o modelo com interações de
## até segunda ordem apenas
m0 <- lm(y ~ (A + B + C + D)^2, data = dados)
anova(m0)
Analysis of Variance Table

Response: y
          Df Sum Sq Mean Sq  F value    Pr(>F)    
A          1  41311   41311  20.2765  0.006382 ** 
B          1     11      11   0.0052  0.945391    
C          1    218     218   0.1068  0.757069    
D          1 374850  374850 183.9879 3.903e-05 ***
A:B        1    248     248   0.1218  0.741351    
A:C        1   2475    2475   1.2148  0.320582    
A:D        1  94403   94403  46.3357  0.001042 ** 
B:C        1   7700    7700   3.7794  0.109498    
B:D        1      2       2   0.0008  0.978978    
C:D        1     18      18   0.0089  0.928641    
Residuals  5  10187    2037                       
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## Modelo com efeitos significativos apenas
m1 <- update(m0, . ~ A * D, data = dados)
anova(m1)
Analysis of Variance Table

Response: y
          Df Sum Sq Mean Sq F value    Pr(>F)    
A          1  41311   41311  23.767 0.0003816 ***
D          1 374850  374850 215.661 4.951e-09 ***
A:D        1  94403   94403  54.312 8.621e-06 ***
Residuals 12  20858    1738                      
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##----------------------------------------------------------------------
## Residuos do modelo
res <- residuals(m1)
## Quantis normais
qqnorm(res); qqline(res)

Para ilustrar o uso da meia-fração, suponha que decidamos usar o planejamento \(2^{4-1}\), com a relação de definição \(I = ABCD\), para investigar os quatro fatores deste experimento. Esse planejamento será construído como o planejamento básico \(2^3\) nos fatores A, B, C, e então estabelecendo os níveis do quarto fator \(D = ABC\), pois, através da relação de definição, temos que \(D \cdot I = D \cdot ABCD = ABC\).

O primeiro passo é então criar um planejamento \(2^3\) completo, e incluir a coluna \(D\) como sendo \(D = ABC\)

dados2 <- expand.grid(A = c(-1, 1), B = c(-1, 1), C = c(-1, 1))
dados2$D <- with(dados2, A*B*C)
row.names(dados2) <- apply(dados2, 1,
                          function(i) paste(letters[1:4][i==1], collapse = ""))
row.names(dados2)[1] <- "(1)"
dados2
      A  B  C  D
(1)  -1 -1 -1 -1
ad    1 -1 -1  1
bd   -1  1 -1  1
ab    1  1 -1 -1
cd   -1 -1  1  1
ac    1 -1  1 -1
bc   -1  1  1 -1
abcd  1  1  1  1

Outra forma de montar esse experimento é a seguinte. Se a relação de definição é \(I = ABCD\), então podemos usar os sinais dessa interação para separar as frações do experimento.

dados$ABCD <- with(dados, A*B*C*D)
dados[order(dados$ABCD, decreasing = TRUE), ]
      A  B  C  D    y ABCD
(1)  -1 -1 -1 -1  550    1
ab    1  1 -1 -1  650    1
ac    1 -1  1 -1  642    1
bc   -1  1  1 -1  601    1
ad    1 -1 -1  1  749    1
bd   -1  1 -1  1 1052    1
cd   -1 -1  1  1 1075    1
abcd  1  1  1  1  729    1
a     1 -1 -1 -1  669   -1
b    -1  1 -1 -1  604   -1
c    -1 -1  1 -1  633   -1
abc   1  1  1 -1  635   -1
d    -1 -1 -1  1 1037   -1
abd   1  1 -1  1  868   -1
acd   1 -1  1  1  860   -1
bcd  -1  1  1  1 1063   -1

As combinações de tratamento com sinal positivo em ABCD serão da fração principal, e os demais serão da fração alternada. Dessa forma, se ficarmos apenas com o sinal positivo de ABCD

dados <- subset(dados, ABCD == 1)
dados
      A  B  C  D    y ABCD
(1)  -1 -1 -1 -1  550    1
ab    1  1 -1 -1  650    1
ac    1 -1  1 -1  642    1
bc   -1  1  1 -1  601    1
ad    1 -1 -1  1  749    1
bd   -1  1 -1  1 1052    1
cd   -1 -1  1  1 1075    1
abcd  1  1  1  1  729    1

Ficamos essencialmente com o mesmo planejamento fracionário. Note que dessa forma, automaticamente temos \(D = ABC\)

dados$D == (dados$A*dados$B*dados$C)
[1] TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE

Agora sabemos que as combinações de tratamento que serão corridas na meia-fração serão

row.names(dados)
[1] "(1)"  "ab"   "ac"   "bc"   "ad"   "bd"   "cd"   "abcd"

O próximo passo então é criar a tabela de sinais

(tab <- model.matrix(~ A*B*C*D, data = dados))
     (Intercept)  A  B  C  D A:B A:C B:C A:D B:D C:D A:B:C A:B:D A:C:D
(1)            1 -1 -1 -1 -1   1   1   1   1   1   1    -1    -1    -1
ab             1  1  1 -1 -1   1  -1  -1  -1  -1   1    -1    -1     1
ac             1  1 -1  1 -1  -1   1  -1  -1   1  -1    -1     1    -1
bc             1 -1  1  1 -1  -1  -1   1   1  -1  -1    -1     1     1
ad             1  1 -1 -1  1  -1  -1   1   1  -1  -1     1    -1    -1
bd             1 -1  1 -1  1  -1   1  -1  -1   1  -1     1    -1     1
cd             1 -1 -1  1  1   1  -1  -1  -1  -1   1     1     1    -1
abcd           1  1  1  1  1   1   1   1   1   1   1     1     1     1
     B:C:D A:B:C:D
(1)     -1       1
ab       1       1
ac       1       1
bc      -1       1
ad       1       1
bd      -1       1
cd      -1       1
abcd     1       1
attr(,"assign")
 [1]  0  1  2  3  4  5  6  7  8  9 10 11 12 13 14 15

Note que os tratamentos possuem pares combinados (aliases), pois muitas colunas são idênticas. Isso é natural, uma vez que temos um efeito confundido por definição, \(D = ABC\), outros também devem estar. Para saber quem são os pares combinados desse experimento, basta multiplicar cada fator pela relação de definição, por exemplo,

\[ \begin{align} A \cdot I = A \cdot ABCD = A^2BCD = BCD \\ B \cdot I = B \cdot ABCD = AB^2CD = ACD \\ C \cdot I = C \cdot ABCD = ABC^2D = ABD \\ D \cdot I = D \cdot ABCD = ABCD^2 = ABC \\ \end{align} \]

Portanto, notamos que todos os efeitos principais estão confudidos com todas as interações de terceira ordem. Portanto, ao estimar um efeito principal, estamos também estimado a respectiva interação de terceira ordem. Como acreditamos que os efeitos das interações de ordem alta são desprezíveis, então podemos supor que o efeito estimado é de fato do efeto principal.

Vemos também que as interaçoes de segunda ordem estão associadas entre si, pois,

\[ \begin{align} AB \cdot I = AB \cdot ABCD = A^2B^2CD = CD \\ AC \cdot I = AC \cdot ABCD = A^2BC^2D = BD \\ AD \cdot I = AD \cdot ABCD = A^2BCD^2 = BC \\ \end{align} \]

Com isso, não faz sentido estimar o efeito para todas as interações de segunda ordem, assim como estimar os efeitos de terceira ordem. Estimar os efeitos principais (que é de interesse), é virtualmente igual a estimar os efeitos de terceira ordem. Estimar os efeitos de segunda ordem AB, AC, e AD, é o mesmo que estimar CD, BD, e BC, respectivamente.

Portanto, podemos identificar os fatores únicos na tabela de sinais

(tab <- unique(tab, MARGIN = 2))
     (Intercept)  A  B  C  D A:B A:C B:C
(1)            1 -1 -1 -1 -1   1   1   1
ab             1  1  1 -1 -1   1  -1  -1
ac             1  1 -1  1 -1  -1   1  -1
bc             1 -1  1  1 -1  -1  -1   1
ad             1  1 -1 -1  1  -1  -1   1
bd             1 -1  1 -1  1  -1   1  -1
cd             1 -1 -1  1  1   1  -1  -1
abcd           1  1  1  1  1   1   1   1

A partir desa tabela, podemos prosseguir a análise de forma usual, calculando os contrastes e efeitos, e verificando o tamanho dos efeitpos através do gráfico de probabilidades normais. Note apenas que o \(k\) para esse experimento fracionado é 3, e não 4 como o original, pois ele é um \(2^{4-1}\) = \(2^{3}\)

##----------------------------------------------------------------------
## Estimativa dos efeitos
y <- dados$y
## Contrastes
contr <- t(tab[, -1]) %*% y
## Efeitos = contraste/(n2^{k-1})
## NOTE que agora o k é 3, pois o experimento básico é 2^{4-1} = 2^3
k <- 3
(ef <- contr/(n * 2^(k-1)))
      [,1]
A   -127.0
B      4.0
C     11.5
D    290.5
A:B  -10.0
A:C  -25.5
B:C -197.5
##----------------------------------------------------------------------
## Gráfico de probabilidade normal dos efeitos estimados
qqaux <- qqnorm(ef, col = 2, pch = 19); qqline(ef)
text(qqaux$x, qqaux$y, rownames(qqaux$y), cex = 0.8, pos = 3)

Através destes resultados vemos que se destacam os fatores A, D,e a interação BC. Note que o par associado de BC é AD, portanto acreditamos que a interação que de fato é importante é AD. Esse resultado está de acordo com o resultado do experimento completo mostrado acima.

Continuamos a análise como antes, ajustando um modelo apenas com os efeitos que notamos serem importantes na análise visual acima.

##----------------------------------------------------------------------
## Ajuste do modelo
## Modelo com efeitos significativos apenas
## NOTE que os efeitos importantes foram A, D, e BC, mas como vimos,
## BC = AD, portanto podemos ajustar o modelo com A + D + A:D
m2 <- lm(y ~ A * D, data = dados)
anova(m2)
Analysis of Variance Table

Response: y
          Df Sum Sq Mean Sq F value    Pr(>F)    
A          1  32258   32258  71.804 0.0010631 ** 
D          1 168781  168781 375.694 4.177e-05 ***
A:D        1  78013   78013 173.650 0.0001916 ***
Residuals  4   1797     449                      
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##----------------------------------------------------------------------
## Residuos do modelo
res <- residuals(m2)
## Quantis normais
qqnorm(res); qqline(res)

Exerício

Considere os dados de um experimento completo \(2^5\)

url <- "http://www.leg.ufpr.br/~fernandomayer/dados/montgomery_14-41.txt"
dados <- read.table(url, header = TRUE)
dados
       A  B  C  D  E  Y
(1)   -1 -1 -1 -1 -1  7
a      1 -1 -1 -1 -1  9
b     -1  1 -1 -1 -1 34
ab     1  1 -1 -1 -1 55
c     -1 -1  1 -1 -1 16
ac     1 -1  1 -1 -1 20
bc    -1  1  1 -1 -1 40
abc    1  1  1 -1 -1 60
d     -1 -1 -1  1 -1  8
ad     1 -1 -1  1 -1 10
bd    -1  1 -1  1 -1 32
abd    1  1 -1  1 -1 50
cd    -1 -1  1  1 -1 18
acd    1 -1  1  1 -1 21
bcd   -1  1  1  1 -1 44
abcd   1  1  1  1 -1 61
e     -1 -1 -1 -1  1  8
ae     1 -1 -1 -1  1 12
be    -1  1 -1 -1  1 35
abe    1  1 -1 -1  1 52
ce    -1 -1  1 -1  1 15
ace    1 -1  1 -1  1 22
bce   -1  1  1 -1  1 45
abce   1  1  1 -1  1 65
de    -1 -1 -1  1  1  6
ade    1 -1 -1  1  1 10
bde   -1  1 -1  1  1 30
abde   1  1 -1  1  1 53
cde   -1 -1  1  1  1 15
acde   1 -1  1  1  1 20
bcde  -1  1  1  1  1 41
abcde  1  1  1  1  1 63

Suponha que somente metade das 32 corridas pode ser feita. Com isso:

  1. Escolha a metade que você pensa que deve ser corrida
  2. Determine as relações associadas para seu planejamento
  3. Estime os efeitos dos fatores
  4. Faça um gráfico de probabilidade normal para os efeitos estimados
  5. Faça a análise de variância para os fatores identificados como importantes no item anterior
  6. Analise os resíduos do modelo
  7. Forneça uma interpretação prática dos resultados
## a)
## Escolhendo a relação de definição
## I = ABCDE
## então usamos essa definição como o separador das meia frações. Cria a
## coluna ABCDE
dados$ABCDE <- with(dados, A*B*C*D*E)
## ordena pelos sinais dessa coluna
dados[order(dados$ABCDE, decreasing = TRUE), ]
       A  B  C  D  E  Y ABCDE
a      1 -1 -1 -1 -1  9     1
b     -1  1 -1 -1 -1 34     1
c     -1 -1  1 -1 -1 16     1
abc    1  1  1 -1 -1 60     1
d     -1 -1 -1  1 -1  8     1
abd    1  1 -1  1 -1 50     1
acd    1 -1  1  1 -1 21     1
bcd   -1  1  1  1 -1 44     1
e     -1 -1 -1 -1  1  8     1
abe    1  1 -1 -1  1 52     1
ace    1 -1  1 -1  1 22     1
bce   -1  1  1 -1  1 45     1
ade    1 -1 -1  1  1 10     1
bde   -1  1 -1  1  1 30     1
cde   -1 -1  1  1  1 15     1
abcde  1  1  1  1  1 63     1
(1)   -1 -1 -1 -1 -1  7    -1
ab     1  1 -1 -1 -1 55    -1
ac     1 -1  1 -1 -1 20    -1
bc    -1  1  1 -1 -1 40    -1
ad     1 -1 -1  1 -1 10    -1
bd    -1  1 -1  1 -1 32    -1
cd    -1 -1  1  1 -1 18    -1
abcd   1  1  1  1 -1 61    -1
ae     1 -1 -1 -1  1 12    -1
be    -1  1 -1 -1  1 35    -1
ce    -1 -1  1 -1  1 15    -1
abce   1  1  1 -1  1 65    -1
de    -1 -1 -1  1  1  6    -1
abde   1  1 -1  1  1 53    -1
acde   1 -1  1  1  1 20    -1
bcde  -1  1  1  1  1 41    -1
## As combações com sinal positivo de ABCDE podem ser a fração
## principal, portanto, fazemos a seleção desses elementos
dados <- subset(dados, ABCDE == 1)
## Portanto, as combinaçoes seriam
row.names(dados)
 [1] "a"     "b"     "c"     "abc"   "d"     "abd"   "acd"   "bcd"  
 [9] "e"     "abe"   "ace"   "bce"   "ade"   "bde"   "cde"   "abcde"
## b)
## As relaçãoes associadas devem ser encontradas manualmente, ou usando
## a função abaixo
aliases <- function(ef, cd){
    ali <- function(ef, cd){
        ef <- gsub("\\W", "", ef)
        ef <- unlist(strsplit(ef, ""))
        cd <- gsub("\\W", "", cd)
        cd <- unlist(strsplit(cd, ""))
        x <- sort(c(ef, cd))
        tb <- table(x)
        paste(names(tb[tb==1]), collapse="")
    }
    sapply(ef, simplify=FALSE,
           function(e){
               x <- sapply(cd, function(i){
                   x <- ali(e, i)
               })
               x[order(nchar(x))]
           })
}

## Cria a tabela de sinais
(tab <- model.matrix(~ A*B*C*D*E, data = dados))
      (Intercept)  A  B  C  D  E A:B A:C B:C A:D B:D C:D A:E B:E C:E D:E
a               1  1 -1 -1 -1 -1  -1  -1   1  -1   1   1  -1   1   1   1
b               1 -1  1 -1 -1 -1  -1   1  -1   1  -1   1   1  -1   1   1
c               1 -1 -1  1 -1 -1   1  -1  -1   1   1  -1   1   1  -1   1
abc             1  1  1  1 -1 -1   1   1   1  -1  -1  -1  -1  -1  -1   1
d               1 -1 -1 -1  1 -1   1   1   1  -1  -1  -1   1   1   1  -1
abd             1  1  1 -1  1 -1   1  -1  -1   1   1  -1  -1  -1   1  -1
acd             1  1 -1  1  1 -1  -1   1  -1   1  -1   1  -1   1  -1  -1
bcd             1 -1  1  1  1 -1  -1  -1   1  -1   1   1   1  -1  -1  -1
e               1 -1 -1 -1 -1  1   1   1   1   1   1   1  -1  -1  -1  -1
abe             1  1  1 -1 -1  1   1  -1  -1  -1  -1   1   1   1  -1  -1
ace             1  1 -1  1 -1  1  -1   1  -1  -1   1  -1   1  -1   1  -1
bce             1 -1  1  1 -1  1  -1  -1   1   1  -1  -1  -1   1   1  -1
ade             1  1 -1 -1  1  1  -1  -1   1   1  -1  -1   1  -1  -1   1
bde             1 -1  1 -1  1  1  -1   1  -1  -1   1  -1  -1   1  -1   1
cde             1 -1 -1  1  1  1   1  -1  -1  -1  -1   1  -1  -1   1   1
abcde           1  1  1  1  1  1   1   1   1   1   1   1   1   1   1   1
      A:B:C A:B:D A:C:D B:C:D A:B:E A:C:E B:C:E A:D:E B:D:E C:D:E A:B:C:D
a         1     1     1    -1     1     1    -1     1    -1    -1      -1
b         1     1    -1     1     1    -1     1    -1     1    -1      -1
c         1    -1     1     1    -1     1     1    -1    -1     1      -1
abc       1    -1    -1    -1    -1    -1    -1     1     1     1      -1
d        -1     1     1     1    -1    -1    -1     1     1     1      -1
abd      -1     1    -1    -1    -1     1     1    -1    -1     1      -1
acd      -1    -1     1    -1     1    -1     1    -1     1    -1      -1
bcd      -1    -1    -1     1     1     1    -1     1    -1    -1      -1
e        -1    -1    -1    -1     1     1     1     1     1     1       1
abe      -1    -1     1     1     1    -1    -1    -1    -1     1       1
ace      -1     1    -1     1    -1     1    -1    -1     1    -1       1
bce      -1     1     1    -1    -1    -1     1     1    -1    -1       1
ade       1    -1    -1     1    -1    -1     1     1    -1    -1       1
bde       1    -1     1    -1    -1     1    -1    -1     1    -1       1
cde       1     1    -1    -1     1    -1    -1    -1    -1     1       1
abcde     1     1     1     1     1     1     1     1     1     1       1
      A:B:C:E A:B:D:E A:C:D:E B:C:D:E A:B:C:D:E
a          -1      -1      -1       1         1
b          -1      -1       1      -1         1
c          -1       1      -1      -1         1
abc        -1       1       1       1         1
d           1      -1      -1      -1         1
abd         1      -1       1       1         1
acd         1       1      -1       1         1
bcd         1       1       1      -1         1
e          -1      -1      -1      -1         1
abe        -1      -1       1       1         1
ace        -1       1      -1       1         1
bce        -1       1       1      -1         1
ade         1      -1      -1       1         1
bde         1      -1       1      -1         1
cde         1       1      -1      -1         1
abcde       1       1       1       1         1
attr(,"assign")
 [1]  0  1  2  3  4  5  6  7  8  9 10 11 12 13 14 15 16 17 18 19 20 21 22
[24] 23 24 25 26 27 28 29 30 31
## Aplicando a função, encontrando os pares associados
aliases(colnames(tab)[-c(1, 32)], "ABCDE")
$A
 ABCDE 
"BCDE" 

$B
 ABCDE 
"ACDE" 

$C
 ABCDE 
"ABDE" 

$D
 ABCDE 
"ABCE" 

$E
 ABCDE 
"ABCD" 

$`A:B`
ABCDE 
"CDE" 

$`A:C`
ABCDE 
"BDE" 

$`B:C`
ABCDE 
"ADE" 

$`A:D`
ABCDE 
"BCE" 

$`B:D`
ABCDE 
"ACE" 

$`C:D`
ABCDE 
"ABE" 

$`A:E`
ABCDE 
"BCD" 

$`B:E`
ABCDE 
"ACD" 

$`C:E`
ABCDE 
"ABD" 

$`D:E`
ABCDE 
"ABC" 

$`A:B:C`
ABCDE 
 "DE" 

$`A:B:D`
ABCDE 
 "CE" 

$`A:C:D`
ABCDE 
 "BE" 

$`B:C:D`
ABCDE 
 "AE" 

$`A:B:E`
ABCDE 
 "CD" 

$`A:C:E`
ABCDE 
 "BD" 

$`B:C:E`
ABCDE 
 "AD" 

$`A:D:E`
ABCDE 
 "BC" 

$`B:D:E`
ABCDE 
 "AC" 

$`C:D:E`
ABCDE 
 "AB" 

$`A:B:C:D`
ABCDE 
  "E" 

$`A:B:C:E`
ABCDE 
  "D" 

$`A:B:D:E`
ABCDE 
  "C" 

$`A:C:D:E`
ABCDE 
  "B" 

$`B:C:D:E`
ABCDE 
  "A" 
## c)
## Como vimos que existem colunas confundidas, vamos estimar os efeitos
## apenas daquelas únicas
(tab <- unique(tab, MARGIN = 2))
      (Intercept)  A  B  C  D  E A:B A:C B:C A:D B:D C:D A:E B:E C:E D:E
a               1  1 -1 -1 -1 -1  -1  -1   1  -1   1   1  -1   1   1   1
b               1 -1  1 -1 -1 -1  -1   1  -1   1  -1   1   1  -1   1   1
c               1 -1 -1  1 -1 -1   1  -1  -1   1   1  -1   1   1  -1   1
abc             1  1  1  1 -1 -1   1   1   1  -1  -1  -1  -1  -1  -1   1
d               1 -1 -1 -1  1 -1   1   1   1  -1  -1  -1   1   1   1  -1
abd             1  1  1 -1  1 -1   1  -1  -1   1   1  -1  -1  -1   1  -1
acd             1  1 -1  1  1 -1  -1   1  -1   1  -1   1  -1   1  -1  -1
bcd             1 -1  1  1  1 -1  -1  -1   1  -1   1   1   1  -1  -1  -1
e               1 -1 -1 -1 -1  1   1   1   1   1   1   1  -1  -1  -1  -1
abe             1  1  1 -1 -1  1   1  -1  -1  -1  -1   1   1   1  -1  -1
ace             1  1 -1  1 -1  1  -1   1  -1  -1   1  -1   1  -1   1  -1
bce             1 -1  1  1 -1  1  -1  -1   1   1  -1  -1  -1   1   1  -1
ade             1  1 -1 -1  1  1  -1  -1   1   1  -1  -1   1  -1  -1   1
bde             1 -1  1 -1  1  1  -1   1  -1  -1   1  -1  -1   1  -1   1
cde             1 -1 -1  1  1  1   1  -1  -1  -1  -1   1  -1  -1   1   1
abcde           1  1  1  1  1  1   1   1   1   1   1   1   1   1   1   1
## Contrastes
contr <- t(tab[, -1]) %*% dados$Y
## Efeitos = contraste/(n2^{k-1})
## NOTE que agora o k é 4, pois o experimento básico é 2^{5-1} = 2^4
k <- 4
n <- 1
(ef <- contr/(n * 2^(k-1)))
      [,1]
A   10.875
B   33.625
C   10.625
D   -0.625
E    0.375
A:B  7.125
A:C  0.625
B:C  0.875
A:D  0.875
B:D -0.375
C:D  0.625
A:E  1.375
B:E  0.125
C:E  0.625
D:E -1.625
## d)
## Gráfico de probabilidade normal dos efeitos estimados
qqaux <- qqnorm(ef, col = 2, pch = 19); qqline(ef)
text(qqaux$x, qqaux$y, rownames(qqaux$y), cex = 0.8, pos = 3)

## e)
## Os efeitos iportantes foram A, B, C, AB, e DE. Note que
## DE . ADCDE = ABC
## entao podemos especificar o modelo com
m0 <- lm(Y ~ A + B + C + A:B + A:B:C, data = dados)
anova(m0)
Analysis of Variance Table

Response: Y
          Df Sum Sq Mean Sq  F value    Pr(>F)    
A          1  473.1   473.1  223.935 3.577e-08 ***
B          1 4522.6  4522.6 2140.858 5.357e-13 ***
C          1  451.6   451.6  213.757 4.472e-08 ***
A:B        1  203.1   203.1   96.124 1.905e-06 ***
A:B:C      1   10.6    10.6    5.000   0.04933 *  
Residuals 10   21.1     2.1                       
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## f)
res <- residuals(m0)
qqnorm(res); qqline(res)

Frações menores: o fatorial fracionário \(2^{k-p}\)

Em geral , um planejamento fatorial \(2^k\) pode ser corrido em uma fração \(1/2^p\), chamado de um planejamento fatorial fracionário \(2^{k-p}\), pois

\[ 2^{k-p} = 2^k 2^{-p} = \frac{2^k}{2^p} \]

Portanto, uma fração \(1/4\) é chamada de um planejamento \(2^{k-2}\), uma fração \(1/8\) é chamada de um planejamento \(2^{k-3}\), uma fração \(1/16\) é chamada de \(2^{k-4}\), e assim por diante. Note que os experimentos com meia fração são um caso particular do planejamento \(2^{k-p}\) com \(p = 1\).

Com o objetivo de ilustrar a fração \(1/4\), considere um experimento com seis fatores, e suponha que o pesquisador esteja interessado principalmente nos efeitos principais, com alguma informação sobre as interações de segunda ordem. Um planejamento \(2^{6-1}\) iria requerer 32 corridas. e necessitaríamos de 31 graus de liberdade para estimar os efeitos. Como há somente 6 efeitos principais e 15 interações de segunda ordem, a meia-fração é ineficiente pois ela requer mais corridas do que o necessário para o interesse do pesquisador. Suponha que consideramos uma fração \(1/4\), ou um experimento \(2^{6-2}\). Esse planejamento contém 16 corridas, e com 15 graus de liberdade permitirá que todos os efeitos principais sejam estimados, com alguma capacidade de gerar informações sobre as interações de segunda ordem.

De modo a gerar esse planejamento, escrevemos o planejamento básico \(2^4\) nos fatores A, B, C, e D, e então adicionamos duas novas colunas para E e F.

da <- expand.grid(A = c(-1, 1), B = c(-1, 1),
                  C = c(-1, 1), D = c(-1, 1))
row.names(da) <- apply(da, 1,
                       function(i) paste(letters[1:4][i==1], collapse = ""))
row.names(da)[1] <- "(1)"
da
      A  B  C  D
(1)  -1 -1 -1 -1
a     1 -1 -1 -1
b    -1  1 -1 -1
ab    1  1 -1 -1
c    -1 -1  1 -1
ac    1 -1  1 -1
bc   -1  1  1 -1
abc   1  1  1 -1
d    -1 -1 -1  1
ad    1 -1 -1  1
bd   -1  1 -1  1
abd   1  1 -1  1
cd   -1 -1  1  1
acd   1 -1  1  1
bcd  -1  1  1  1
abcd  1  1  1  1

Um experimento \(2^{k-2}\) requer dois contrastes de definição, ou os geradores do experimento. Considere que os dois geradores são

\[ I = ABCE \qquad \text{e} \qquad I = BCDF \]

Dessa forma, a coluna \(E\) seria encontrada a partir de \(E \cdot I = E \cdot ABCE = ABC\), e a coluna \(F\) seria encontrada com \(F \cdot I = F \cdot BCDF = BCD\).

da$E <- with(da, A*B*C)
da$F <- with(da, B*C*D)
row.names(da) <- apply(da, 1,
                       function(i) paste(letters[1:6][i==1], collapse = ""))
row.names(da)[1] <- "(1)"
da
        A  B  C  D  E  F
(1)    -1 -1 -1 -1 -1 -1
ae      1 -1 -1 -1  1 -1
bef    -1  1 -1 -1  1  1
abf     1  1 -1 -1 -1  1
cef    -1 -1  1 -1  1  1
acf     1 -1  1 -1 -1  1
bc     -1  1  1 -1 -1 -1
abce    1  1  1 -1  1 -1
df     -1 -1 -1  1 -1  1
adef    1 -1 -1  1  1  1
bde    -1  1 -1  1  1 -1
abd     1  1 -1  1 -1 -1
cde    -1 -1  1  1  1 -1
acd     1 -1  1  1 -1 -1
bcdf   -1  1  1  1 -1  1
abcdef  1  1  1  1  1  1

No entanto, sabemos que o produto de quaisquer duas colunas na tabela de sinais do planejamento \(2^k\) é apenas outra coluna da tabela. Consequentemente, o produto entre \(ABCE\) e \(BCDF\)

\[ ABCE \cdot BCDF = AB^2C^2DEF = ADEF \]

é também uma coluna identidade. Como consequência, o planejamento \(2^{6-2}\) possui uma relação completa de definição dada por

\[ I = ABCE = BCDF = ADEF \]

Referimo-nos a cada termo em uma relação de definição (ex.: \(ABCE\)) como uma palavra. Para encontrar o par associado de qualquer efeito, simplesmente multiplicamos cada palavra na relação completa de definição acima. Por exemplo, o par associado de \(A\) é

\[ A = BCE = ABCDF = DEF \]

Para as duas relações de definição acima, vemos que os pares associados são

\[ \begin{align} E = ABC = ADF = BCDEF \\ F = BCD = ADE = ABCEF \end{align} \]

Portanto, poderíamos utilizar qualquer uma das interações \(ABC\), \(ADF\), ou \(BCDEF\) para gerar a coluna \(E\), e da mesma forma, o resultado seria o mesmo para a coluna \(F\) se utilizásemos qualquer uma das interações: \(BCD\), \(ADE\), ou \(ABCEF\).

Com isso, vemos que as 16 combinações de tratamentos que deveriam ser corridas neste fatorial \(2^{6-2}\) são

row.names(da)
 [1] "(1)"    "ae"     "bef"    "abf"    "cef"    "acf"    "bc"    
 [8] "abce"   "df"     "adef"   "bde"    "abd"    "cde"    "acd"   
[15] "bcdf"   "abcdef"

Outra forma de construir esse experimento \(2^{6-2}\), é usando diretamente os contrastes de definição, assim como fizemos no caso da meia-fração. A diferença é que aqui, como temos duas relações de definição, precismos calcular as duas colunas com estas interações, e as frações serão definidas pelas combinações \((1,1), (1,-1), (-1,1), (-1,-1)\) destas duas colunas.

Para fazer dessa forma, geramos o experimento \(2^6\) completo

db <- expand.grid(A = c(-1, 1), B = c(-1, 1),
                  C = c(-1, 1), D = c(-1, 1),
                  E = c(-1, 1), F = c(-1, 1))
row.names(db) <- apply(db, 1,
                       function(i) paste(letters[1:6][i==1], collapse = ""))
row.names(db)[1] <- "(1)"
db
        A  B  C  D  E  F
(1)    -1 -1 -1 -1 -1 -1
a       1 -1 -1 -1 -1 -1
b      -1  1 -1 -1 -1 -1
ab      1  1 -1 -1 -1 -1
c      -1 -1  1 -1 -1 -1
ac      1 -1  1 -1 -1 -1
bc     -1  1  1 -1 -1 -1
abc     1  1  1 -1 -1 -1
d      -1 -1 -1  1 -1 -1
ad      1 -1 -1  1 -1 -1
bd     -1  1 -1  1 -1 -1
abd     1  1 -1  1 -1 -1
cd     -1 -1  1  1 -1 -1
acd     1 -1  1  1 -1 -1
bcd    -1  1  1  1 -1 -1
abcd    1  1  1  1 -1 -1
e      -1 -1 -1 -1  1 -1
ae      1 -1 -1 -1  1 -1
be     -1  1 -1 -1  1 -1
abe     1  1 -1 -1  1 -1
ce     -1 -1  1 -1  1 -1
ace     1 -1  1 -1  1 -1
bce    -1  1  1 -1  1 -1
abce    1  1  1 -1  1 -1
de     -1 -1 -1  1  1 -1
ade     1 -1 -1  1  1 -1
bde    -1  1 -1  1  1 -1
abde    1  1 -1  1  1 -1
cde    -1 -1  1  1  1 -1
acde    1 -1  1  1  1 -1
bcde   -1  1  1  1  1 -1
abcde   1  1  1  1  1 -1
f      -1 -1 -1 -1 -1  1
af      1 -1 -1 -1 -1  1
bf     -1  1 -1 -1 -1  1
abf     1  1 -1 -1 -1  1
cf     -1 -1  1 -1 -1  1
acf     1 -1  1 -1 -1  1
bcf    -1  1  1 -1 -1  1
abcf    1  1  1 -1 -1  1
df     -1 -1 -1  1 -1  1
adf     1 -1 -1  1 -1  1
bdf    -1  1 -1  1 -1  1
abdf    1  1 -1  1 -1  1
cdf    -1 -1  1  1 -1  1
acdf    1 -1  1  1 -1  1
bcdf   -1  1  1  1 -1  1
abcdf   1  1  1  1 -1  1
ef     -1 -1 -1 -1  1  1
aef     1 -1 -1 -1  1  1
bef    -1  1 -1 -1  1  1
abef    1  1 -1 -1  1  1
cef    -1 -1  1 -1  1  1
acef    1 -1  1 -1  1  1
bcef   -1  1  1 -1  1  1
abcef   1  1  1 -1  1  1
def    -1 -1 -1  1  1  1
adef    1 -1 -1  1  1  1
bdef   -1  1 -1  1  1  1
abdef   1  1 -1  1  1  1
cdef   -1 -1  1  1  1  1
acdef   1 -1  1  1  1  1
bcdef  -1  1  1  1  1  1
abcdef  1  1  1  1  1  1

Como as relações de definição são \(I = ABCE\) e \(I = BCDF\), calculamos estas duas colunas a partir desse experimento completo

## Usando diretamente as relações de definição
## I = ABCE e I = BCDF
db$ABCE <- with(db, A*B*C*E)
db$BCDF <- with(db, B*C*D*F)

Se olharmos este experimento ordenado por estas duas colunas, vemos que temos as quatro frações determinadas pela combinação de sinais destas duas colunas

db[order(db$ABCE, db$BCDF, decreasing = TRUE), ]
        A  B  C  D  E  F ABCE BCDF
(1)    -1 -1 -1 -1 -1 -1    1    1
bc     -1  1  1 -1 -1 -1    1    1
abd     1  1 -1  1 -1 -1    1    1
acd     1 -1  1  1 -1 -1    1    1
ae      1 -1 -1 -1  1 -1    1    1
abce    1  1  1 -1  1 -1    1    1
bde    -1  1 -1  1  1 -1    1    1
cde    -1 -1  1  1  1 -1    1    1
abf     1  1 -1 -1 -1  1    1    1
acf     1 -1  1 -1 -1  1    1    1
df     -1 -1 -1  1 -1  1    1    1
bcdf   -1  1  1  1 -1  1    1    1
bef    -1  1 -1 -1  1  1    1    1
cef    -1 -1  1 -1  1  1    1    1
adef    1 -1 -1  1  1  1    1    1
abcdef  1  1  1  1  1  1    1    1
ab      1  1 -1 -1 -1 -1    1   -1
ac      1 -1  1 -1 -1 -1    1   -1
d      -1 -1 -1  1 -1 -1    1   -1
bcd    -1  1  1  1 -1 -1    1   -1
be     -1  1 -1 -1  1 -1    1   -1
ce     -1 -1  1 -1  1 -1    1   -1
ade     1 -1 -1  1  1 -1    1   -1
abcde   1  1  1  1  1 -1    1   -1
f      -1 -1 -1 -1 -1  1    1   -1
bcf    -1  1  1 -1 -1  1    1   -1
abdf    1  1 -1  1 -1  1    1   -1
acdf    1 -1  1  1 -1  1    1   -1
aef     1 -1 -1 -1  1  1    1   -1
abcef   1  1  1 -1  1  1    1   -1
bdef   -1  1 -1  1  1  1    1   -1
cdef   -1 -1  1  1  1  1    1   -1
a       1 -1 -1 -1 -1 -1   -1    1
abc     1  1  1 -1 -1 -1   -1    1
bd     -1  1 -1  1 -1 -1   -1    1
cd     -1 -1  1  1 -1 -1   -1    1
e      -1 -1 -1 -1  1 -1   -1    1
bce    -1  1  1 -1  1 -1   -1    1
abde    1  1 -1  1  1 -1   -1    1
acde    1 -1  1  1  1 -1   -1    1
bf     -1  1 -1 -1 -1  1   -1    1
cf     -1 -1  1 -1 -1  1   -1    1
adf     1 -1 -1  1 -1  1   -1    1
abcdf   1  1  1  1 -1  1   -1    1
abef    1  1 -1 -1  1  1   -1    1
acef    1 -1  1 -1  1  1   -1    1
def    -1 -1 -1  1  1  1   -1    1
bcdef  -1  1  1  1  1  1   -1    1
b      -1  1 -1 -1 -1 -1   -1   -1
c      -1 -1  1 -1 -1 -1   -1   -1
ad      1 -1 -1  1 -1 -1   -1   -1
abcd    1  1  1  1 -1 -1   -1   -1
abe     1  1 -1 -1  1 -1   -1   -1
ace     1 -1  1 -1  1 -1   -1   -1
de     -1 -1 -1  1  1 -1   -1   -1
bcde   -1  1  1  1  1 -1   -1   -1
af      1 -1 -1 -1 -1  1   -1   -1
abcf    1  1  1 -1 -1  1   -1   -1
bdf    -1  1 -1  1 -1  1   -1   -1
cdf    -1 -1  1  1 -1  1   -1   -1
ef     -1 -1 -1 -1  1  1   -1   -1
bcef   -1  1  1 -1  1  1   -1   -1
abdef   1  1 -1  1  1  1   -1   -1
acdef   1 -1  1  1  1  1   -1   -1

Novamente se assumirmos que a combinação \((1,1)\) é a fração principal, então o experimento fracionado \(2^{6-2}\) seria obtido com

db <- subset(db, ABCE == 1 & BCDF == 1)
db
        A  B  C  D  E  F ABCE BCDF
(1)    -1 -1 -1 -1 -1 -1    1    1
bc     -1  1  1 -1 -1 -1    1    1
abd     1  1 -1  1 -1 -1    1    1
acd     1 -1  1  1 -1 -1    1    1
ae      1 -1 -1 -1  1 -1    1    1
abce    1  1  1 -1  1 -1    1    1
bde    -1  1 -1  1  1 -1    1    1
cde    -1 -1  1  1  1 -1    1    1
abf     1  1 -1 -1 -1  1    1    1
acf     1 -1  1 -1 -1  1    1    1
df     -1 -1 -1  1 -1  1    1    1
bcdf   -1  1  1  1 -1  1    1    1
bef    -1  1 -1 -1  1  1    1    1
cef    -1 -1  1 -1  1  1    1    1
adef    1 -1 -1  1  1  1    1    1
abcdef  1  1  1  1  1  1    1    1

Portanto, as 16 combinações de tratamentos a serem corridas neste experimento seriam

row.names(db)
 [1] "(1)"    "bc"     "abd"    "acd"    "ae"     "abce"   "bde"   
 [8] "cde"    "abf"    "acf"    "df"     "bcdf"   "bef"    "cef"   
[15] "adef"   "abcdef"

E note que é o mesmo resultado se tivessemos planejado o experimento com o método anterior

sort(row.names(da))
 [1] "(1)"    "abcdef" "abce"   "abd"    "abf"    "acd"    "acf"   
 [8] "adef"   "ae"     "bc"     "bcdf"   "bde"    "bef"    "cde"   
[15] "cef"    "df"    
sort(row.names(db))
 [1] "(1)"    "abcdef" "abce"   "abd"    "abf"    "acd"    "acf"   
 [8] "adef"   "ae"     "bc"     "bcdf"   "bde"    "bef"    "cde"   
[15] "cef"    "df"    

Exemplo: fatorial \(2^{6-2}\)

Exemplo 14-9, Montgomery (EAPE), pg. 400: encolhimento excessivo em peças de moldagem por injeção. Analisando 6 fatores em um experimento fatorial fracionado \(2^{6-2}\), foram realizadas 16 corridas para estes seis fatores. O planejamento foi construído escrevendo um planejamento básico \(2^4\) nos fatores \(A\), \(B\), \(C\), e \(D\), e então estabelecendo \(E = ABC\), e \(F = BCD\), pois as relações de definição escolhidas foram \(I = ABCE\), e \(I = BCDF\). O objetivo do planejamento era identificar os fatores que causavam o encolhimento excessivo, portanto as combinações de fatores que gerem menores valores da variável resposta (encolhimento) deverão ser utilizadas no processo de fabricação. Os dados deste experimento estão abaixo.

##======================================================================
## Importa a base de dados
url <- "http://www.leg.ufpr.br/~fernandomayer/dados/montgomery_ex_14-9.txt"
dados <- read.table(url, header = TRUE)
row.names(dados) <- apply(dados, 1,
                          function(i) paste(letters[1:6][i==1], collapse = ""))
row.names(dados)[1] <- "(1)"
dados
        A  B  C  D  E  F  y
(1)    -1 -1 -1 -1 -1 -1  6
ae      1 -1 -1 -1  1 -1 10
bef    -1  1 -1 -1  1  1 32
abf     1  1 -1 -1 -1  1 60
cef    -1 -1  1 -1  1  1  4
acf     1 -1  1 -1 -1  1 15
bc     -1  1  1 -1 -1 -1 26
abce    1  1  1 -1  1 -1 60
df     -1 -1 -1  1 -1  1  8
adef    1 -1 -1  1  1  1 12
bde    -1  1 -1  1  1 -1 34
abd     1  1 -1  1 -1 -1 60
cde    -1 -1  1  1  1 -1 16
acd     1 -1  1  1 -1 -1  5
bcdf   -1  1  1  1 -1  1 37
abcdef  1  1  1  1  1  1 52
##----------------------------------------------------------------------
## Montando a tabela de sinais
(tab <- model.matrix(~A * B * C * D * E * F, data = dados))
       (Intercept)  A  B  C  D  E  F A:B A:C B:C A:D B:D C:D A:E B:E C:E
(1)              1 -1 -1 -1 -1 -1 -1   1   1   1   1   1   1   1   1   1
ae               1  1 -1 -1 -1  1 -1  -1  -1   1  -1   1   1   1  -1  -1
bef              1 -1  1 -1 -1  1  1  -1   1  -1   1  -1   1  -1   1  -1
abf              1  1  1 -1 -1 -1  1   1  -1  -1  -1  -1   1  -1  -1   1
cef              1 -1 -1  1 -1  1  1   1  -1  -1   1   1  -1  -1  -1   1
acf              1  1 -1  1 -1 -1  1  -1   1  -1  -1   1  -1  -1   1  -1
bc               1 -1  1  1 -1 -1 -1  -1  -1   1   1  -1  -1   1  -1  -1
abce             1  1  1  1 -1  1 -1   1   1   1  -1  -1  -1   1   1   1
df               1 -1 -1 -1  1 -1  1   1   1   1  -1  -1  -1   1   1   1
adef             1  1 -1 -1  1  1  1  -1  -1   1   1  -1  -1   1  -1  -1
bde              1 -1  1 -1  1  1 -1  -1   1  -1  -1   1  -1  -1   1  -1
abd              1  1  1 -1  1 -1 -1   1  -1  -1   1   1  -1  -1  -1   1
cde              1 -1 -1  1  1  1 -1   1  -1  -1  -1  -1   1  -1  -1   1
acd              1  1 -1  1  1 -1 -1  -1   1  -1   1  -1   1  -1   1  -1
bcdf             1 -1  1  1  1 -1  1  -1  -1   1  -1   1   1   1  -1  -1
abcdef           1  1  1  1  1  1  1   1   1   1   1   1   1   1   1   1
       D:E A:F B:F C:F D:F E:F A:B:C A:B:D A:C:D B:C:D A:B:E A:C:E B:C:E
(1)      1   1   1   1   1   1    -1    -1    -1    -1    -1    -1    -1
ae      -1  -1   1   1   1  -1     1     1     1    -1    -1    -1     1
bef     -1  -1   1  -1  -1   1     1     1    -1     1    -1     1    -1
abf      1   1   1  -1  -1  -1    -1    -1     1     1    -1     1     1
cef     -1  -1  -1   1  -1   1     1    -1     1     1     1    -1    -1
acf      1   1  -1   1  -1  -1    -1     1    -1     1     1    -1     1
bc       1   1  -1  -1   1   1    -1     1     1    -1     1     1    -1
abce    -1  -1  -1  -1   1  -1     1    -1    -1    -1     1     1     1
df      -1  -1  -1  -1   1  -1    -1     1     1     1    -1    -1    -1
adef     1   1  -1  -1   1   1     1    -1    -1     1    -1    -1     1
bde      1   1  -1   1  -1  -1     1    -1     1    -1    -1     1    -1
abd     -1  -1  -1   1  -1   1    -1     1    -1    -1    -1     1     1
cde      1   1   1  -1  -1  -1     1     1    -1    -1     1    -1    -1
acd     -1  -1   1  -1  -1   1    -1    -1     1    -1     1    -1     1
bcdf    -1  -1   1   1   1  -1    -1    -1    -1     1     1     1    -1
abcdef   1   1   1   1   1   1     1     1     1     1     1     1     1
       A:D:E B:D:E C:D:E A:B:F A:C:F B:C:F A:D:F B:D:F C:D:F A:E:F B:E:F
(1)       -1    -1    -1    -1    -1    -1    -1    -1    -1    -1    -1
ae        -1     1     1     1     1    -1     1    -1    -1    -1     1
bef        1    -1     1    -1     1    -1     1    -1     1    -1     1
abf        1     1    -1     1    -1    -1    -1    -1     1    -1    -1
cef        1     1    -1     1    -1    -1     1     1    -1    -1    -1
acf        1    -1     1    -1     1    -1    -1     1    -1    -1     1
bc        -1     1     1     1     1    -1    -1     1     1    -1     1
abce      -1    -1    -1    -1    -1    -1     1     1     1    -1    -1
df         1     1     1     1     1     1    -1    -1    -1     1     1
adef       1    -1    -1    -1    -1     1     1    -1    -1     1    -1
bde       -1     1    -1     1    -1     1     1    -1     1     1    -1
abd       -1    -1     1    -1     1     1    -1    -1     1     1     1
cde       -1    -1     1    -1     1     1     1     1    -1     1     1
acd       -1     1    -1     1    -1     1    -1     1    -1     1    -1
bcdf       1    -1    -1    -1    -1     1    -1     1     1     1    -1
abcdef     1     1     1     1     1     1     1     1     1     1     1
       C:E:F D:E:F A:B:C:D A:B:C:E A:B:D:E A:C:D:E B:C:D:E A:B:C:F A:B:D:F
(1)       -1    -1       1       1       1       1       1       1       1
ae         1     1      -1       1       1       1      -1      -1      -1
bef       -1    -1      -1       1       1      -1       1       1       1
abf        1     1       1       1       1      -1      -1      -1      -1
cef        1    -1      -1       1      -1       1       1       1      -1
acf       -1     1       1       1      -1       1      -1      -1       1
bc         1    -1       1       1      -1      -1       1       1      -1
abce      -1     1      -1       1      -1      -1      -1      -1       1
df         1    -1      -1       1      -1      -1      -1      -1       1
adef      -1     1       1       1      -1      -1       1       1      -1
bde        1    -1       1       1      -1       1      -1      -1       1
abd       -1     1      -1       1      -1       1       1       1      -1
cde       -1    -1       1       1       1      -1      -1      -1      -1
acd        1     1      -1       1       1      -1       1       1       1
bcdf      -1    -1      -1       1       1       1      -1      -1      -1
abcdef     1     1       1       1       1       1       1       1       1
       A:C:D:F B:C:D:F A:B:E:F A:C:E:F B:C:E:F A:D:E:F B:D:E:F C:D:E:F
(1)          1       1       1       1       1       1       1       1
ae          -1       1       1       1      -1       1      -1      -1
bef         -1       1      -1       1      -1       1      -1       1
abf          1       1      -1       1       1       1       1      -1
cef          1       1       1      -1      -1       1       1      -1
acf         -1       1       1      -1       1       1      -1       1
bc          -1       1      -1      -1       1       1      -1      -1
abce         1       1      -1      -1      -1       1       1       1
df           1       1      -1      -1      -1       1       1       1
adef        -1       1      -1      -1       1       1      -1      -1
bde         -1       1       1      -1       1       1      -1       1
abd          1       1       1      -1      -1       1       1      -1
cde          1       1      -1       1       1       1       1      -1
acd         -1       1      -1       1      -1       1      -1       1
bcdf        -1       1       1       1      -1       1      -1      -1
abcdef       1       1       1       1       1       1       1       1
       A:B:C:D:E A:B:C:D:F A:B:C:E:F A:B:D:E:F A:C:D:E:F B:C:D:E:F
(1)           -1        -1        -1        -1        -1        -1
ae            -1         1        -1        -1        -1         1
bef           -1        -1         1         1        -1         1
abf           -1         1         1         1        -1        -1
cef           -1        -1         1        -1         1         1
acf           -1         1         1        -1         1        -1
bc            -1        -1        -1         1         1        -1
abce          -1         1        -1         1         1         1
df             1        -1         1        -1        -1        -1
adef           1         1         1        -1        -1         1
bde            1        -1        -1         1        -1         1
abd            1         1        -1         1        -1        -1
cde            1        -1        -1        -1         1         1
acd            1         1        -1        -1         1        -1
bcdf           1        -1         1         1         1        -1
abcdef         1         1         1         1         1         1
       A:B:C:D:E:F
(1)              1
ae               1
bef             -1
abf             -1
cef             -1
acf             -1
bc               1
abce             1
df               1
adef             1
bde             -1
abd             -1
cde             -1
acd             -1
bcdf             1
abcdef           1
attr(,"assign")
 [1]  0  1  2  3  4  5  6  7  8  9 10 11 12 13 14 15 16 17 18 19 20 21 22
[24] 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45
[47] 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63
## Como sabemos, a tabela de sinais completa contém diversos fatores que
## estão confundidos, por isso devemos selecionar dessa tabela apenas os
## efeitos que sejam únicos, pois estimando um teremos os demais
## Os pares associados podem ser encontrados a mão, ou usando a função
## definida acima
aliases(ef = colnames(tab)[-1], cd = c("ABCE", "BCDF"))
$A
   ABCE    BCDF 
  "BCE" "ABCDF" 

$B
 ABCE  BCDF 
"ACE" "CDF" 

$C
 ABCE  BCDF 
"ABE" "BDF" 

$D
   BCDF    ABCE 
  "BCF" "ABCDE" 

$E
   ABCE    BCDF 
  "ABC" "BCDEF" 

$F
   BCDF    ABCE 
  "BCD" "ABCEF" 

$`A:B`
  ABCE   BCDF 
  "CE" "ACDF" 

$`A:C`
  ABCE   BCDF 
  "BE" "ABDF" 

$`B:C`
ABCE BCDF 
"AE" "DF" 

$`A:D`
  ABCE   BCDF 
"BCDE" "ABCF" 

$`B:D`
  BCDF   ABCE 
  "CF" "ACDE" 

$`C:D`
  BCDF   ABCE 
  "BF" "ABDE" 

$`A:E`
    ABCE     BCDF 
    "BC" "ABCDEF" 

$`B:E`
  ABCE   BCDF 
  "AC" "CDEF" 

$`C:E`
  ABCE   BCDF 
  "AB" "BDEF" 

$`D:E`
  ABCE   BCDF 
"ABCD" "BCEF" 

$`A:F`
  ABCE   BCDF 
"BCEF" "ABCD" 

$`B:F`
  BCDF   ABCE 
  "CD" "ACEF" 

$`C:F`
  BCDF   ABCE 
  "BD" "ABEF" 

$`D:F`
    BCDF     ABCE 
    "BC" "ABCDEF" 

$`E:F`
  ABCE   BCDF 
"ABCF" "BCDE" 

$`A:B:C`
 ABCE  BCDF 
  "E" "ADF" 

$`A:B:D`
 ABCE  BCDF 
"CDE" "ACF" 

$`A:C:D`
 ABCE  BCDF 
"BDE" "ABF" 

$`B:C:D`
 BCDF  ABCE 
  "F" "ADE" 

$`A:B:E`
   ABCE    BCDF 
    "C" "ACDEF" 

$`A:C:E`
   ABCE    BCDF 
    "B" "ABDEF" 

$`B:C:E`
 ABCE  BCDF 
  "A" "DEF" 

$`A:D:E`
   ABCE    BCDF 
  "BCD" "ABCEF" 

$`B:D:E`
 ABCE  BCDF 
"ACD" "CEF" 

$`C:D:E`
 ABCE  BCDF 
"ABD" "BEF" 

$`A:B:F`
 ABCE  BCDF 
"CEF" "ACD" 

$`A:C:F`
 ABCE  BCDF 
"BEF" "ABD" 

$`B:C:F`
 BCDF  ABCE 
  "D" "AEF" 

$`A:D:F`
   BCDF    ABCE 
  "ABC" "BCDEF" 

$`B:D:F`
   BCDF    ABCE 
    "C" "ACDEF" 

$`C:D:F`
   BCDF    ABCE 
    "B" "ABDEF" 

$`A:E:F`
   ABCE    BCDF 
  "BCF" "ABCDE" 

$`B:E:F`
 ABCE  BCDF 
"ACF" "CDE" 

$`C:E:F`
 ABCE  BCDF 
"ABF" "BDE" 

$`D:E:F`
   BCDF    ABCE 
  "BCE" "ABCDF" 

$`A:B:C:D`
ABCE BCDF 
"DE" "AF" 

$`A:B:C:E`
  ABCE   BCDF 
    "" "ADEF" 

$`A:B:D:E`
  ABCE   BCDF 
  "CD" "ACEF" 

$`A:C:D:E`
  ABCE   BCDF 
  "BD" "ABEF" 

$`B:C:D:E`
ABCE BCDF 
"AD" "EF" 

$`A:B:C:F`
ABCE BCDF 
"EF" "AD" 

$`A:B:D:F`
  BCDF   ABCE 
  "AC" "CDEF" 

$`A:C:D:F`
  BCDF   ABCE 
  "AB" "BDEF" 

$`B:C:D:F`
  BCDF   ABCE 
    "" "ADEF" 

$`A:B:E:F`
  ABCE   BCDF 
  "CF" "ACDE" 

$`A:C:E:F`
  ABCE   BCDF 
  "BF" "ABDE" 

$`B:C:E:F`
ABCE BCDF 
"AF" "DE" 

$`A:D:E:F`
  ABCE   BCDF 
"BCDF" "ABCE" 

$`B:D:E:F`
  BCDF   ABCE 
  "CE" "ACDF" 

$`C:D:E:F`
  BCDF   ABCE 
  "BE" "ABDF" 

$`A:B:C:D:E`
 ABCE  BCDF 
  "D" "AEF" 

$`A:B:C:D:F`
 BCDF  ABCE 
  "A" "DEF" 

$`A:B:C:E:F`
 ABCE  BCDF 
  "F" "ADE" 

$`A:B:D:E:F`
 ABCE  BCDF 
"CDF" "ACE" 

$`A:C:D:E:F`
 ABCE  BCDF 
"BDF" "ABE" 

$`B:C:D:E:F`
 BCDF  ABCE 
  "E" "ADF" 

$`A:B:C:D:E:F`
ABCE BCDF 
"DF" "AE" 
## Portanto, montamos a tabela de sinais com os fatores únicos
(tab <- unique(tab, MARGIN = 2))
       (Intercept)  A  B  C  D  E  F A:B A:C B:C A:D B:D C:D D:E A:B:D
(1)              1 -1 -1 -1 -1 -1 -1   1   1   1   1   1   1   1    -1
ae               1  1 -1 -1 -1  1 -1  -1  -1   1  -1   1   1  -1     1
bef              1 -1  1 -1 -1  1  1  -1   1  -1   1  -1   1  -1     1
abf              1  1  1 -1 -1 -1  1   1  -1  -1  -1  -1   1   1    -1
cef              1 -1 -1  1 -1  1  1   1  -1  -1   1   1  -1  -1    -1
acf              1  1 -1  1 -1 -1  1  -1   1  -1  -1   1  -1   1     1
bc               1 -1  1  1 -1 -1 -1  -1  -1   1   1  -1  -1   1     1
abce             1  1  1  1 -1  1 -1   1   1   1  -1  -1  -1  -1    -1
df               1 -1 -1 -1  1 -1  1   1   1   1  -1  -1  -1  -1     1
adef             1  1 -1 -1  1  1  1  -1  -1   1   1  -1  -1   1    -1
bde              1 -1  1 -1  1  1 -1  -1   1  -1  -1   1  -1   1    -1
abd              1  1  1 -1  1 -1 -1   1  -1  -1   1   1  -1  -1     1
cde              1 -1 -1  1  1  1 -1   1  -1  -1  -1  -1   1   1     1
acd              1  1 -1  1  1 -1 -1  -1   1  -1   1  -1   1  -1    -1
bcdf             1 -1  1  1  1 -1  1  -1  -1   1  -1   1   1  -1    -1
abcdef           1  1  1  1  1  1  1   1   1   1   1   1   1   1     1
       A:C:D
(1)       -1
ae         1
bef       -1
abf        1
cef        1
acf       -1
bc         1
abce      -1
df         1
adef      -1
bde        1
abd       -1
cde       -1
acd        1
bcdf      -1
abcdef     1
##----------------------------------------------------------------------
## Estimativa dos efeitos
## Contrastes
contr <- t(tab[, -1]) %*% dados$y
## Efeitos = contraste/(n2^{k-1})
## NOTE que o k é 4, pois o planejamento básico é 2^{6-2} = 2^4
k <- 4
n <- 1
(ef <- contr/(n * 2^(k - 1)))
        [,1]
A     13.875
B     35.625
C     -0.875
D      1.375
E      0.375
F      0.375
A:B   11.875
A:C   -1.625
B:C   -1.875
A:D   -5.375
B:D   -0.125
C:D   -0.125
D:E    0.625
A:B:D  0.125
A:C:D -4.875
##----------------------------------------------------------------------
## Gráfico de probabilidade normal dos efeitos estimados
qqaux <- qqnorm(ef, col = 2, pch = 19); qqline(ef)
text(qqaux$x, qqaux$y, rownames(qqaux$y), cex = 0.8, pos = 3)

##----------------------------------------------------------------------
## Ajuste do modelo
## Como vimos no gráfico anterior, os efeitos A, B, e as interações AB,
## AD, e ACD parecem importantes, então podemos ajustar o modelo
m0 <- lm(y ~ A + B + C + D + A:B + A:D + A:C:D, data = dados)
anova(m0)
Analysis of Variance Table

Response: y
          Df Sum Sq Mean Sq   F value    Pr(>F)    
A          1  770.1   770.1  224.0182 3.919e-07 ***
B          1 5076.6  5076.6 1476.8182 2.309e-10 ***
C          1    3.1     3.1    0.8909 0.3728597    
D          1    7.6     7.6    2.2000 0.1762999    
A:B        1  564.1   564.1  164.0909 1.301e-06 ***
A:D        1  115.6   115.6   33.6182 0.0004060 ***
A:C:D      1   95.1    95.1   27.6545 0.0007657 ***
Residuals  8   27.5     3.4                        
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## OBSERVAÇÃO: no livro, o autor assume que os efeitos importantes são
## apenas A, B, e AB. Portanto podemos ajustar o modelo apenas com estes
## fatores
m1 <- lm(y ~ A + B + A:B, data = dados)
anova(m1)
Analysis of Variance Table

Response: y
          Df Sum Sq Mean Sq F value    Pr(>F)    
A          1  770.1   770.1  37.149 5.377e-05 ***
B          1 5076.6  5076.6 244.899 2.392e-09 ***
A:B        1  564.1   564.1  27.211  0.000216 ***
Residuals 12  248.8    20.7                      
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## E verificar se existe diferença com o nosso modelo inicial através
## de um TRV. Se a diferença for significativa, significa que não podemos
## ignorar os efeitos de AD e ACD (lembre que C e D precisam ser
## mantidos, mesmo que não significativos, pelo princípio da
## marginalidade)
anova(m1, m0)
Analysis of Variance Table

Model 1: y ~ A + B + A:B
Model 2: y ~ A + B + C + D + A:B + A:D + A:C:D
  Res.Df    RSS Df Sum of Sq      F    Pr(>F)    
1     12 248.75                                  
2      8  27.50  4    221.25 16.091 0.0006808 ***
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## Como o resultado é que existe diferença, devemos ficar com o modelo
## com mais parâmetros, como haviamos deduzido.

##----------------------------------------------------------------------
## Residuos do modelo
res <- residuals(m0)
## Quantis normais
qqnorm(res); qqline(res)

Esse exemplo ilustra a importância do fatorial fracionado. Se tivessemos feito o experimento \(2^6 = 64\) corridas, poderíamos estimar interações de ordens altas, mas com a fração \(1/4\), de 16 corridas, verificamos que só 2 efeitos principais, duas interações de segunda ordem e uma de terceira ordem são importantes. Com economia, selecionamos de 6 variáveis, apenas 2 principais, que são importantes, e que agora serão investigadas com maior rigor em experimento mais elaborados subseuqntes. O fundamento do planejamento de experimentos é exatamente esse: obter maior informação possível, tirar o máximo de vantagem e da forma mais econômica, ou seja, ser eficiente na investigação.

Exercício

Considere que no experimento \(2^5\) abaixo:

url <- "http://www.leg.ufpr.br/~fernandomayer/dados/montgomery_14-14.txt"
dados <- read.table(url, header = TRUE)
dados
       A  B  C  D  E    y
(1)   -1 -1 -1 -1 -1  700
a      1 -1 -1 -1 -1  900
b     -1  1 -1 -1 -1 3400
ab     1  1 -1 -1 -1 5500
c     -1 -1  1 -1 -1  600
ac     1 -1  1 -1 -1 1000
bc    -1  1  1 -1 -1 3000
abc    1  1  1 -1 -1 5300
d     -1 -1 -1  1 -1 1000
ad     1 -1 -1  1 -1 1100
bd    -1  1 -1  1 -1 3000
abd    1  1 -1  1 -1 6100
cd    -1 -1  1  1 -1  800
acd    1 -1  1  1 -1 1100
bcd   -1  1  1  1 -1 3300
abcd   1  1  1  1 -1 6000
e     -1 -1 -1 -1  1  800
ae     1 -1 -1 -1  1 1200
be    -1  1 -1 -1  1 3500
abe    1  1 -1 -1  1 6200
ce    -1 -1  1 -1  1  600
ace    1 -1  1 -1  1 1200
bce   -1  1  1 -1  1 3006
abce   1  1  1 -1  1 5500
de    -1 -1 -1  1  1 1900
ade    1 -1 -1  1  1 1500
bde   -1  1 -1  1  1 4000
abde   1  1 -1  1  1 6500
cde   -1 -1  1  1  1 1500
acde   1 -1  1  1  1 2000
bcde  -1  1  1  1  1 3400
abcde  1  1  1  1  1 6800

Suponha que somente duas meia-frações (\(1/4\)) das 32 corridas pode ser feita (fatorial \(2^{5-2}\)). Com isso:

  1. Escolha duas relações de definição, e selecione a fração que você pensa que deve ser corrida
  2. Determine as relações associadas para seu planejamento
  3. Estime os efeitos dos fatores
  4. Faça um gráfico de probabilidade normal para os efeitos estimados
  5. Faça a análise de variância para os fatores identificados como importantes no item anterior
  6. Analise os resíduos do modelo
  7. Forneça uma interpretação prática dos resultados
## a)
## Escolhendo as relações de definição
## I = ABD
## I = ACE
## então usamos essas definições como o separador das meia-frações.
## Cria as colunas ABD e ACE
dados$ABD <- with(dados, A*B*D)
dados$ACE <- with(dados, A*C*E)
## ordena pelos sinais das duas colunas geradas
dados[order(dados$ABD, dados$ACE, decreasing = TRUE), ]
       A  B  C  D  E    y ABD ACE
a      1 -1 -1 -1 -1  900   1   1
bc    -1  1  1 -1 -1 3000   1   1
abd    1  1 -1  1 -1 6100   1   1
cd    -1 -1  1  1 -1  800   1   1
be    -1  1 -1 -1  1 3500   1   1
ace    1 -1  1 -1  1 1200   1   1
de    -1 -1 -1  1  1 1900   1   1
abcde  1  1  1  1  1 6800   1   1
b     -1  1 -1 -1 -1 3400   1  -1
ac     1 -1  1 -1 -1 1000   1  -1
d     -1 -1 -1  1 -1 1000   1  -1
abcd   1  1  1  1 -1 6000   1  -1
ae     1 -1 -1 -1  1 1200   1  -1
bce   -1  1  1 -1  1 3006   1  -1
abde   1  1 -1  1  1 6500   1  -1
cde   -1 -1  1  1  1 1500   1  -1
ab     1  1 -1 -1 -1 5500  -1   1
c     -1 -1  1 -1 -1  600  -1   1
ad     1 -1 -1  1 -1 1100  -1   1
bcd   -1  1  1  1 -1 3300  -1   1
e     -1 -1 -1 -1  1  800  -1   1
abce   1  1  1 -1  1 5500  -1   1
bde   -1  1 -1  1  1 4000  -1   1
acde   1 -1  1  1  1 2000  -1   1
(1)   -1 -1 -1 -1 -1  700  -1  -1
abc    1  1  1 -1 -1 5300  -1  -1
bd    -1  1 -1  1 -1 3000  -1  -1
acd    1 -1  1  1 -1 1100  -1  -1
abe    1  1 -1 -1  1 6200  -1  -1
ce    -1 -1  1 -1  1  600  -1  -1
ade    1 -1 -1  1  1 1500  -1  -1
bcde  -1  1  1  1  1 3400  -1  -1
## As combinações com sinal positivo das duas colunas podem ser a fração
## principal, portanto, fazemos a seleção desses elementos
dados <- subset(dados, ABD == 1 & ACE == 1)
## Portanto, as combinaçoes seriam
row.names(dados)
[1] "a"     "bc"    "abd"   "cd"    "be"    "ace"   "de"    "abcde"
## b)
## As relaçãoes associadas devem ser encontradas manualmente, ou usando
## a função abaixo
aliases <- function(ef, cd){
    ali <- function(ef, cd){
        ef <- gsub("\\W", "", ef)
        ef <- unlist(strsplit(ef, ""))
        cd <- gsub("\\W", "", cd)
        cd <- unlist(strsplit(cd, ""))
        x <- sort(c(ef, cd))
        tb <- table(x)
        paste(names(tb[tb==1]), collapse="")
    }
    sapply(ef, simplify=FALSE,
           function(e){
               x <- sapply(cd, function(i){
                   x <- ali(e, i)
               })
               x[order(nchar(x))]
           })
}

## Cria a tabela de sinais
(tab <- model.matrix(~ A*B*C*D*E, data = dados))
      (Intercept)  A  B  C  D  E A:B A:C B:C A:D B:D C:D A:E B:E C:E D:E
a               1  1 -1 -1 -1 -1  -1  -1   1  -1   1   1  -1   1   1   1
bc              1 -1  1  1 -1 -1  -1  -1   1   1  -1  -1   1  -1  -1   1
abd             1  1  1 -1  1 -1   1  -1  -1   1   1  -1  -1  -1   1  -1
cd              1 -1 -1  1  1 -1   1  -1  -1  -1  -1   1   1   1  -1  -1
be              1 -1  1 -1 -1  1  -1   1  -1   1  -1   1  -1   1  -1  -1
ace             1  1 -1  1 -1  1  -1   1  -1  -1   1  -1   1  -1   1  -1
de              1 -1 -1 -1  1  1   1   1   1  -1  -1  -1  -1  -1  -1   1
abcde           1  1  1  1  1  1   1   1   1   1   1   1   1   1   1   1
      A:B:C A:B:D A:C:D B:C:D A:B:E A:C:E B:C:E A:D:E B:D:E C:D:E A:B:C:D
a         1     1     1    -1     1     1    -1     1    -1    -1      -1
bc       -1     1     1    -1     1     1    -1    -1     1     1       1
abd      -1     1    -1    -1    -1     1     1    -1    -1     1      -1
cd        1     1    -1    -1    -1     1     1     1     1    -1       1
be        1     1    -1     1    -1     1    -1     1    -1     1      -1
ace      -1     1    -1     1    -1     1    -1    -1     1    -1       1
de       -1     1     1     1     1     1     1    -1    -1    -1      -1
abcde     1     1     1     1     1     1     1     1     1     1       1
      A:B:C:E A:B:D:E A:C:D:E B:C:D:E A:B:C:D:E
a          -1      -1      -1       1         1
bc          1      -1      -1       1        -1
abd         1      -1       1       1         1
cd         -1      -1       1       1        -1
be          1       1      -1       1        -1
ace        -1       1      -1       1         1
de         -1       1       1       1        -1
abcde       1       1       1       1         1
attr(,"assign")
 [1]  0  1  2  3  4  5  6  7  8  9 10 11 12 13 14 15 16 17 18 19 20 21 22
[24] 23 24 25 26 27 28 29 30 31
## Aplicando a função, encontrando os pares associados
aliases(colnames(tab)[-1], c("ABD", "ACE"))
$A
 ABD  ACE 
"BD" "CE" 

$B
   ABD    ACE 
  "AD" "ABCE" 

$C
   ACE    ABD 
  "AE" "ABCD" 

$D
   ABD    ACE 
  "AB" "ACDE" 

$E
   ACE    ABD 
  "AC" "ABDE" 

$`A:B`
  ABD   ACE 
  "D" "BCE" 

$`A:C`
  ACE   ABD 
  "E" "BCD" 

$`B:C`
  ABD   ACE 
"ACD" "ABE" 

$`A:D`
  ABD   ACE 
  "B" "CDE" 

$`B:D`
    ABD     ACE 
    "A" "ABCDE" 

$`C:D`
  ABD   ACE 
"ABC" "ADE" 

$`A:E`
  ACE   ABD 
  "C" "BDE" 

$`B:E`
  ABD   ACE 
"ADE" "ABC" 

$`C:E`
    ACE     ABD 
    "A" "ABCDE" 

$`D:E`
  ABD   ACE 
"ABE" "ACD" 

$`A:B:C`
 ABD  ACE 
"CD" "BE" 

$`A:B:D`
   ABD    ACE 
    "" "BCDE" 

$`A:C:D`
 ABD  ACE 
"BC" "DE" 

$`B:C:D`
   ABD    ACE 
  "AC" "ABDE" 

$`A:B:E`
 ABD  ACE 
"DE" "BC" 

$`A:C:E`
   ACE    ABD 
    "" "BCDE" 

$`B:C:E`
   ACE    ABD 
  "AB" "ACDE" 

$`A:D:E`
 ABD  ACE 
"BE" "CD" 

$`B:D:E`
   ABD    ACE 
  "AE" "ABCD" 

$`C:D:E`
   ACE    ABD 
  "AD" "ABCE" 

$`A:B:C:D`
  ABD   ACE 
  "C" "BDE" 

$`A:B:C:E`
  ACE   ABD 
  "B" "CDE" 

$`A:B:D:E`
  ABD   ACE 
  "E" "BCD" 

$`A:C:D:E`
  ACE   ABD 
  "D" "BCE" 

$`B:C:D:E`
  ABD   ACE 
"ACE" "ABD" 

$`A:B:C:D:E`
 ABD  ACE 
"CE" "BD" 
## c)
## Como vimos que existem colunas confundidas, vamos estimar os efeitos
## apenas daquelas únicas
(tab <- unique(tab, MARGIN = 2))
      (Intercept)  A  B  C  D  E B:C C:D
a               1  1 -1 -1 -1 -1   1   1
bc              1 -1  1  1 -1 -1   1  -1
abd             1  1  1 -1  1 -1  -1  -1
cd              1 -1 -1  1  1 -1  -1   1
be              1 -1  1 -1 -1  1  -1   1
ace             1  1 -1  1 -1  1  -1  -1
de              1 -1 -1 -1  1  1   1  -1
abcde           1  1  1  1  1  1   1   1
## Contrastes
contr <- t(tab[, -1]) %*% dados$y
## Efeitos = contraste/(n2^{k-1})
## NOTE que agora o k é 3, pois o experimento básico é 2^{5-2} = 2^3
k <- 3
n <- 1
(ef <- contr/(n * 2^(k-1)))
    [,1]
A   1450
B   3650
C   -150
D   1750
E    650
B:C  250
C:D  -50
## d)
## Gráfico de probabilidade normal dos efeitos estimados
qqaux <- qqnorm(ef, col = 2, pch = 19); qqline(ef)
text(qqaux$x, qqaux$y, rownames(qqaux$y), cex = 0.8, pos = 3)

## e)
## Como existe dúvida sobre quais fatores são importantes pelo gráfico,
## podemos ajustar um modelo com todos os efitos principais e verificar
## quais são significativos
m0 <- lm(y ~ A + B + C + D + E, data = dados)
anova(m0)
Analysis of Variance Table

Response: y
          Df   Sum Sq  Mean Sq  F value   Pr(>F)   
A          1  4205000  4205000  64.6923 0.015108 * 
B          1 26645000 26645000 409.9231 0.002431 **
C          1    45000    45000   0.6923 0.492907   
D          1  6125000  6125000  94.2308 0.010446 * 
E          1   845000   845000  13.0000 0.069051 . 
Residuals  2   130000    65000                     
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## Pelo resultado, podemos remover o fator C
m1 <- update(m0, . ~ . - C)
anova(m1)
Analysis of Variance Table

Response: y
          Df   Sum Sq  Mean Sq F value    Pr(>F)    
A          1  4205000  4205000  72.086 0.0034310 ** 
B          1 26645000 26645000 456.771 0.0002241 ***
D          1  6125000  6125000 105.000 0.0019815 ** 
E          1   845000   845000  14.486 0.0318742 *  
Residuals  3   175000    58333                      
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## f)
res <- residuals(m1)
qqnorm(res); qqline(res)

Resolução de um planejamento fatorial fracionado

Resolução é uma propriedade dos experimentos fatoriais fracionados relacionada a ordem dos efeitos que estão confundidos. É representado por um subscrito romano. Considere a palavra resolução como sinônimo de grau de distinção, como em uma fotografia, com alta resolução é fácil distinguir elementos da imagem. Um experimento de alta resolução tem efeitos importantes (1º e 2º ordem) confundidos com interações de grau elevado enquanto que resoluções baixas indicam que efeitos de 2º estão confundidos entre si e com efeitos principais. Temos:

  • \(III\): efeitos de 1º associados com de 2º e de 2º confundidos entre si;
  • \(IV\): efeitos de 2º associados entre si;
  • \(V\): efeitos de 2º associados com efeitos de ordem maior que 2º;
##======================================================================
# Vamos classificar os seguintes experimentos

##----------------------------------------------------------------------
# 2^(3-1) com I = ABC
da <- expand.grid(A=c(-1,1), B=c(-1,1))
da$C <- with(da, A*B)
da
   A  B  C
1 -1 -1  1
2  1 -1 -1
3 -1  1 -1
4  1  1  1
da[sample(1:4),] # com isso eu aleatorizo as corridas
   A  B  C
1 -1 -1  1
4  1  1  1
3 -1  1 -1
2  1 -1 -1
X <- model.matrix(~A*B*C, da)
ef <- colnames(X)[-1]
ef # os nomes dos efeitos que são estimados
[1] "A"     "B"     "C"     "A:B"   "A:C"   "B:C"   "A:B:C"
aliases(ef=ef,    # efeitos
        cd="ABC") # contraste de definição
$A
 ABC 
"BC" 

$B
 ABC 
"AC" 

$C
 ABC 
"AB" 

$`A:B`
ABC 
"C" 

$`A:C`
ABC 
"B" 

$`B:C`
ABC 
"A" 

$`A:B:C`
ABC 
 "" 
# Qual a resolução? R: III.

##----------------------------------------------------------------------
# 2^(4-1) com I = ABCD
da <- expand.grid(A=c(-1,1), B=c(-1,1), C=c(-1,1))
da$D <- with(da, A*B*C)
da
   A  B  C  D
1 -1 -1 -1 -1
2  1 -1 -1  1
3 -1  1 -1  1
4  1  1 -1 -1
5 -1 -1  1  1
6  1 -1  1 -1
7 -1  1  1 -1
8  1  1  1  1
X <- model.matrix(~A*B*C*D, da)
ef <- colnames(X)[-1]
ef
 [1] "A"       "B"       "C"       "D"       "A:B"     "A:C"     "B:C"    
 [8] "A:D"     "B:D"     "C:D"     "A:B:C"   "A:B:D"   "A:C:D"   "B:C:D"  
[15] "A:B:C:D"
aliases(ef=ef,    # efeitos
        cd="ABCD") # contraste de definição
$A
 ABCD 
"BCD" 

$B
 ABCD 
"ACD" 

$C
 ABCD 
"ABD" 

$D
 ABCD 
"ABC" 

$`A:B`
ABCD 
"CD" 

$`A:C`
ABCD 
"BD" 

$`B:C`
ABCD 
"AD" 

$`A:D`
ABCD 
"BC" 

$`B:D`
ABCD 
"AC" 

$`C:D`
ABCD 
"AB" 

$`A:B:C`
ABCD 
 "D" 

$`A:B:D`
ABCD 
 "C" 

$`A:C:D`
ABCD 
 "B" 

$`B:C:D`
ABCD 
 "A" 

$`A:B:C:D`
ABCD 
  "" 
# Qual a resolução? R: IV.

##----------------------------------------------------------------------
# 2^(5-1) com I = ABCDE
da <- expand.grid(A=c(-1,1), B=c(-1,1), C=c(-1,1), D=c(-1,1))
da$E <- with(da, A*B*C*D)
da
    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
9  -1 -1 -1  1 -1
10  1 -1 -1  1  1
11 -1  1 -1  1  1
12  1  1 -1  1 -1
13 -1 -1  1  1  1
14  1 -1  1  1 -1
15 -1  1  1  1 -1
16  1  1  1  1  1
X <- model.matrix(~A*B*C*D*E, da)
ef <- colnames(X)[-1]
ef
 [1] "A"         "B"         "C"         "D"         "E"        
 [6] "A:B"       "A:C"       "B:C"       "A:D"       "B:D"      
[11] "C:D"       "A:E"       "B:E"       "C:E"       "D:E"      
[16] "A:B:C"     "A:B:D"     "A:C:D"     "B:C:D"     "A:B:E"    
[21] "A:C:E"     "B:C:E"     "A:D:E"     "B:D:E"     "C:D:E"    
[26] "A:B:C:D"   "A:B:C:E"   "A:B:D:E"   "A:C:D:E"   "B:C:D:E"  
[31] "A:B:C:D:E"
aliases(ef=ef,      # efeitos
        cd="ABCDE") # contraste de definição
$A
 ABCDE 
"BCDE" 

$B
 ABCDE 
"ACDE" 

$C
 ABCDE 
"ABDE" 

$D
 ABCDE 
"ABCE" 

$E
 ABCDE 
"ABCD" 

$`A:B`
ABCDE 
"CDE" 

$`A:C`
ABCDE 
"BDE" 

$`B:C`
ABCDE 
"ADE" 

$`A:D`
ABCDE 
"BCE" 

$`B:D`
ABCDE 
"ACE" 

$`C:D`
ABCDE 
"ABE" 

$`A:E`
ABCDE 
"BCD" 

$`B:E`
ABCDE 
"ACD" 

$`C:E`
ABCDE 
"ABD" 

$`D:E`
ABCDE 
"ABC" 

$`A:B:C`
ABCDE 
 "DE" 

$`A:B:D`
ABCDE 
 "CE" 

$`A:C:D`
ABCDE 
 "BE" 

$`B:C:D`
ABCDE 
 "AE" 

$`A:B:E`
ABCDE 
 "CD" 

$`A:C:E`
ABCDE 
 "BD" 

$`B:C:E`
ABCDE 
 "AD" 

$`A:D:E`
ABCDE 
 "BC" 

$`B:D:E`
ABCDE 
 "AC" 

$`C:D:E`
ABCDE 
 "AB" 

$`A:B:C:D`
ABCDE 
  "E" 

$`A:B:C:E`
ABCDE 
  "D" 

$`A:B:D:E`
ABCDE 
  "C" 

$`A:C:D:E`
ABCDE 
  "B" 

$`B:C:D:E`
ABCDE 
  "A" 

$`A:B:C:D:E`
ABCDE 
   "" 
# Qual a resolução? R: V.

Resumindo

Em geral, um planejamento fracionário \(2^k\), contendo \(2^{k-p}\) corridas é chamado de uma fração \(1/2^p\) do planejamento \(2^k\), ou simplesmente de fatorial fracionado \(2^{k-p}\). Esses experimentos requerem a seleção de \(p\) geradores independentes. A relação de definição para o planejamento consiste em \(p\) geradores, inicialmente escolhidos, e \(2^p - p - 1\) interações generalizadas.

A estrutura de associação pode ser encontrada multiplicando cada coluna de efeito pela relação de definição. Cuidado deve ser tomado ao escolher os geradores, de modo que os efeitos de interesse potencial não estejam associados entre si. Cada efeito tem \(2^p - 1\) pares associados.

É importante selecionar os \(p\) geradores para o planejamento fatorial fracionário \(2^{k-p}\), de tal maneira que obtenhamos as melhores relações possíveis de associação. Um critério razoável é selecionar os geradores de forma que o planejamento \(2^{k-p}\) resultante tenha a mais alta resolução possível. Tabelas de geradores podem ser encontradas em livros como Montgomery (2009), e Montgomery e Runger (2012).

Referências