Planejamento de Experimentos

Como determinar a influência de uma ou mais variáveis sobre uma outra variável de interesse???

Planejamento de experimentos Observando a figura acima:

Mas antes devemos pensar sobre:

Tendo definido os fatores e as respostas, nosso próximo passo é:

Um dos planejamentos mais simples, ou seja, aquele em que pretendemos realizar uma investigação preliminar dos possíveis efeitos dos nossos fatores sobre uma resposta é o planejamento 2k.

Pense num experimento na sua área de atuação, cuja resposta seja quantitativa. Que fatores você gostaria de examinar para determinar a possível influência deles sobre a resposta?

Para estudar o efeito de qualquer fator sobre uma dada resposta, precisamos fazê-lo variar de nível – observação do resultado dessa variação sobre a resposta. Para que seja feito isso, precisamos ter o fator em pelo menos dois níveis diferentes. Planejamento mais simples: aquele em que todos os fatores são estudados em apenas dois níveis.

Planejamento 22

Para k fatores, isto é k variáveis, um planejamento completo de dois níveis exige a realização de 2 x 2 x … x 2 = 2k ensaios diferentes, sendo assim chamado de Planejamento fatorial 2k. Vamos utilizar um exemplo para trabalhar todos os conceitos necessários sobre este tipo de planejamento. Vamos analisar os efeitos do aumento da temperatura e da mudança de catalisador sobre o rendimento de uma reação.

Para isso vamos definir:

Então observe os dados tabulados abaixo:

Ensaio Temperatura °C Catalisador Rendimento %
1 40 A 57
2 60 A 92
3 40 B 55
4 60 B 66
5 40 A 61
6 60 A 88
7 40 B 53
8 60 B 70

Visualmente podemos realizar algumas observações, mas antes vamos calcular a média de cada experimento.

Temperatura °C Catalisador Rendimento - médio %
40 A 59
60 A 90
40 B 54
60 B 68

Agora fica mais fácil realizar algumas observações e até mesmo calcular alguns efeitos. Mas o que seria um efeito? De acordo com a Tabela acima, quando usamos o catalisador A e elevamos a temperatura de 40°C para 60°C, o rendimento médio passa de 59% para 90%. Ocorre, portanto, um aumento de 90 − 59 = 31%.

O efeito principal da temperatura é, por definição, a média dos efeitos desta nos dois níveis do catalisador. Usando a letra T para representar esse efeito, e sendo i a resposta média observada no i-ésimo Ensaio, podemos escrever:

\(T=\frac{(90-59)+(68-54)}{2}=22,5 %\)

Este valor indica que o rendimento da reação sobe 22,5%, em média, quando a temperatura passa de seu nível inferior (40°C) para o nível superior (60°C). Essa conclusão, porém, está incompleta. Contudo, precisamos ter cuidado que a reação depende também do nível do catalisador. Podemos dizer ainda, que a temperatura e o catalisador interagem.

Poderíamos calcular da mesma forma que calculamos o efeito para temperatura, o efeito para o catalisador. Contudo, nosso propósito é utilizar uma ferramenta estatística que permita a realização desses cálculos sem muito esforço e complexidade.

Utilizando o software R para criação e análise de planejamento experimental

Um dos pacotes comumente utilizados é o pacote FrF2. Vamos instalá-lo então:

install.packages("FrF2")
## Installing package into '/home/paulo/R/x86_64-pc-linux-gnu-library/4.0'
## (as 'lib' is unspecified)

Feito isso podemos iniciar nossas análises. Para exemplificar vamos pegar o exemplo mostrado anteriromente.

Para construir um design de experimento 2k completo, basta entrar com a função FrF2 e informar o número k de fatores (nfactors) desejados e, em seguida, definir o número de experimentos (nruns) como 2k.

library(FrF2)
## Loading required package: DoE.base
## Loading required package: grid
## Loading required package: conf.design
## Registered S3 method overwritten by 'DoE.base':
##   method           from       
##   factorize.factor conf.design
## 
## Attaching package: 'DoE.base'
## The following objects are masked from 'package:stats':
## 
##     aov, lm
## The following object is masked from 'package:graphics':
## 
##     plot.design
## The following object is masked from 'package:base':
## 
##     lengths
exemplo <-FrF2(nruns=4,
               nfactors=2,
               replications=2,
               factor.names = list(Temperatura=c(40,60),
                                   Catalisador=c("A","B")),
               randomize=FALSE)
## creating full factorial with 4 runs ...
summary(exemplo)
## Call:
## FrF2(nruns = 4, nfactors = 2, replications = 2, factor.names = list(Temperatura = c(40, 
##     60), Catalisador = c("A", "B")), randomize = FALSE)
## 
## Experimental design of type  full factorial 
## 4  runs
## each run independently conducted  2  times
## 
## Factor settings:
##   Temperatura Catalisador
## 1          40           A
## 2          60           B
## 
## The design itself:
##   run.no run.no.std.rp Temperatura Catalisador Blocks
## 1      1           1.1          40           A     .1
## 2      2           2.1          60           A     .1
## 3      3           3.1          40           B     .1
## 4      4           4.1          60           B     .1
## 5      5           1.2          40           A     .2
## 6      6           2.2          60           A     .2
## 7      7           3.2          40           B     .2
## 8      8           4.2          60           B     .2
## class=design, type= full factorial 
## NOTE: columns run.no and run.no.std.rp  are annotation, 
##  not part of the data frame

Podemos observar que foi criado nosso planejamento com todas as variáveis que informamos ao R. Bom, mas como informamos os resultados obtidos em cada experimento???

Precisamos criar um objeto que contenha os resultados e adicionar ao planejamento anteriormente criado.

rendimento<-c(57,92,55,66,61,88,53,70)
planrespostas<-add.response(design = exemplo, response = rendimento)
summary(planrespostas)
## Call:
## FrF2(nruns = 4, nfactors = 2, replications = 2, factor.names = list(Temperatura = c(40, 
##     60), Catalisador = c("A", "B")), randomize = FALSE)
## 
## Experimental design of type  full factorial 
## 4  runs
## each run independently conducted  2  times
## 
## Factor settings:
##   Temperatura Catalisador
## 1          40           A
## 2          60           B
## 
## Responses:
## [1] rendimento
## 
## The design itself:
##   run.no run.no.std.rp Temperatura Catalisador Blocks rendimento
## 1      1           1.1          40           A     .1         57
## 2      2           2.1          60           A     .1         92
## 3      3           3.1          40           B     .1         55
## 4      4           4.1          60           B     .1         66
## 5      5           1.2          40           A     .2         61
## 6      6           2.2          60           A     .2         88
## 7      7           3.2          40           B     .2         53
## 8      8           4.2          60           B     .2         70
## class=design, type= full factorial 
## NOTE: columns run.no and run.no.std.rp  are annotation, 
##  not part of the data frame

Então, todas as etapas acima envolveram a construção do planejamento e a obtenção dos resultados. Vamos agora analisar o planejamento experimental.

Análise do planejamento - Obtenção do modelo estatístico

summary(lm(planrespostas))
## Number of observations used: 8 
## Formula:
## rendimento ~ (Temperatura + Catalisador)^2
## 
## Call:
## lm.default(formula = fo, data = model.frame(fo, data = formula))
## 
## Residuals:
##  1  2  3  4  5  6  7  8 
## -2  2  1 -2  2 -2 -1  2 
## 
## Coefficients:
##                           Estimate Std. Error t value Pr(>|t|)    
## (Intercept)                67.7500     0.9014  75.162 1.88e-07 ***
## Temperatura1               11.2500     0.9014  12.481 0.000237 ***
## Catalisador1               -6.7500     0.9014  -7.488 0.001701 ** 
## Temperatura1:Catalisador1  -4.2500     0.9014  -4.715 0.009206 ** 
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 2.55 on 4 degrees of freedom
## Multiple R-squared:  0.9832, Adjusted R-squared:  0.9706 
## F-statistic: 78.03 on 3 and 4 DF,  p-value: 0.0005263

Que observações podemos obter em relação ao modelo apresentado:

Podemos dizer que nosso modelo fica:

\(Rendimento=67,5 + 11,25x1 - 6,75x2 - 4,25x1x2\)

Onde x1 = temperatura e x2= catalisador

Nosso coeficiente de determinação R2foi de 0,9706, ou seja, apresentou um bom ajuste aos dados experimentais. Agora podemos realizar também uma Análise de Variância. # Análise de Variância dos resultados

analise<-aov(formula=rendimento~Temperatura*Catalisador, data = planrespostas)
summary(analise)
##                         Df Sum Sq Mean Sq F value   Pr(>F)    
## Temperatura              1 1012.5  1012.5  155.77 0.000237 ***
## Catalisador              1  364.5   364.5   56.08 0.001701 ** 
## Temperatura:Catalisador  1  144.5   144.5   22.23 0.009206 ** 
## Residuals                4   26.0     6.5                     
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Observem que tenho os resultados da coluna de Pr idênticos. Só que temos particionado a soma dos quadrados e quadrado das médias, assim como o valor de F calculado para cad fator.

Vamos agora utilizar outras funções do pacote FrF2 para maior detalhamento do nosso planejamento.

Gráficos dos efeitos principais

MEPlot(planrespostas)

Gráfico da interação

IAPlot(planrespostas)

Gráfico dos efeitos

DanielPlot(planrespostas,code = TRUE,half = TRUE, alpha = 0.1)
## simulated critical values not available for all requests, used conservative ones