Você está na página 1de 12

Avaliação de Experimento

• Aluna: Karina Costa - 21555662


• Professor: Jose Clelto
Um pesquisador deseja estudar a influência do sabor de um refrigerante: tipo de adocante
(A), razã o de xarope e á gua (B), nível de carbonataçã o (C) e temperatura (D). Cada fator
pode ser corrido em dois níveis, produzindo um planejamento 24 . Em cada corrida do
planejamento, amostras de refrigerante sã o dadas a 20 pessoas para testar. Cada pessoa
atribui uma pontuaçã o de 1 a 10 para o refrigerante. A pontuaçã o total é a variá vel resposta
avaliada e o objetivo é encontrar uma formulaçã o que maximize a pontuaçã o total. Duas
réplicas desse planejamento sã o corridas e os resultados sã o mostrados na tabela
#PACOTES
library(dplyr)

## Warning: package 'dplyr' was built under R version 4.0.5

##
## Attaching package: 'dplyr'

## The following objects are masked from 'package:stats':


##
## filter, lag

## The following objects are masked from 'package:base':


##
## intersect, setdiff, setequal, union

library(ggplot2)

## Warning: package 'ggplot2' was built under R version 4.0.5

Análise Exploratória
Cá lculos para obter as estimativas dos parâ metros, somas de quadrados, prediçã o e erros
padrõ es. Na seçã o seguinte os dados serã o analisados com funçõ es do R e será feita
discussã o dos resultados.
# Repetições de cada ponto experimental.
ftable(xtabs(~A + B + C + D, data = refri))

## D -1 1
## A B C
## -1 -1 -1 2 2
## 1 2 2
## 1 -1 2 2
## 1 2 2
## 1 -1 -1 2 2
## 1 2 2
## 1 -1 2 2
## 1 2 2

# Gráfico.

ggplot(data = refri,
mapping = aes(x = A, y = y, color = B)) +
facet_grid(facets = C ~ D) +
geom_point() +
stat_summary(mapping = aes(group = B),
fun = "mean",
geom = "line")

Análise Operacional
# Dados.
refri

## A B C D rept y
## 1 -1 -1 -1 -1 1 159
## 2 1 -1 -1 -1 1 168
## 3 -1 1 -1 -1 1 158
## 4 1 1 -1 -1 1 166
## 5 -1 -1 1 -1 1 175
## 6 1 -1 1 -1 1 179
## 7 -1 1 1 -1 1 173
## 8 1 1 1 -1 1 179
## 9 -1 -1 -1 1 1 164
## 10 1 -1 -1 1 1 187
## 11 -1 1 -1 1 1 163
## 12 1 1 -1 1 1 185
## 13 -1 -1 1 1 1 168
## 14 1 -1 1 1 1 197
## 15 -1 1 1 1 1 170
## 16 1 1 1 1 1 194
## 17 -1 -1 -1 -1 2 163
## 18 1 -1 -1 -1 2 175
## 19 -1 1 -1 -1 2 163
## 20 1 1 -1 -1 2 168
## 21 -1 -1 1 -1 2 178
## 22 1 -1 1 -1 2 183
## 23 -1 1 1 -1 2 168
## 24 1 1 1 -1 2 182
## 25 -1 -1 -1 1 2 159
## 26 1 -1 -1 1 2 189
## 27 -1 1 -1 1 2 159
## 28 1 1 -1 1 2 191
## 29 -1 -1 1 1 2 174
## 30 1 -1 1 1 2 199
## 31 -1 1 1 1 2 174
## 32 1 1 1 1 2 198

# Matriz do modelo e vetor resposta.


# X <- model.matrix(~A * B * C * D, data = refri)
X <- with(refri,
cbind(I = 1,
A, B, C, D,
AB = A * B,
AC = A * C,
BC = B * C,
AD = A * D,
BD = B * D,
CD = C * D,
ABC = A * B * C,
ABD = A * B * D,
ACD = A * C * D,
BCD = B * C * D,
ABCD = A * B * C * D))
y <- cbind(refri$y)
dim(X)

## [1] 32 16

# Matriz do modelo ao lado do vetor da resposta.


data.frame(X, "|" = "|", y, check.names = FALSE)

## I A B C D AB AC BC AD BD CD ABC ABD ACD BCD ABCD | y


## 1 1 -1 -1 -1 -1 1 1 1 1 1 1 -1 -1 -1 -1 1 | 159
## 2 1 1 -1 -1 -1 -1 -1 1 -1 1 1 1 1 1 -1 -1 | 168
## 3 1 -1 1 -1 -1 -1 1 -1 1 -1 1 1 1 -1 1 -1 | 158
## 4 1 1 1 -1 -1 1 -1 -1 -1 -1 1 -1 -1 1 1 1 | 166
## 5 1 -1 -1 1 -1 1 -1 -1 1 1 -1 1 -1 1 1 -1 | 175
## 6 1 1 -1 1 -1 -1 1 -1 -1 1 -1 -1 1 -1 1 1 | 179
## 7 1 -1 1 1 -1 -1 -1 1 1 -1 -1 -1 1 1 -1 1 | 173
## 8 1 1 1 1 -1 1 1 1 -1 -1 -1 1 -1 -1 -1 -1 | 179
## 9 1 -1 -1 -1 1 1 1 1 -1 -1 -1 -1 1 1 1 -1 | 164
## 10 1 1 -1 -1 1 -1 -1 1 1 -1 -1 1 -1 -1 1 1 | 187
## 11 1 -1 1 -1 1 -1 1 -1 -1 1 -1 1 -1 1 -1 1 | 163
## 12 1 1 1 -1 1 1 -1 -1 1 1 -1 -1 1 -1 -1 -1 | 185
## 13 1 -1 -1 1 1 1 -1 -1 -1 -1 1 1 1 -1 -1 1 | 168
## 14 1 1 -1 1 1 -1 1 -1 1 -1 1 -1 -1 1 -1 -1 | 197
## 15 1 -1 1 1 1 -1 -1 1 -1 1 1 -1 -1 -1 1 -1 | 170
## 16 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 | 194
## 17 1 -1 -1 -1 -1 1 1 1 1 1 1 -1 -1 -1 -1 1 | 163
## 18 1 1 -1 -1 -1 -1 -1 1 -1 1 1 1 1 1 -1 -1 | 175
## 19 1 -1 1 -1 -1 -1 1 -1 1 -1 1 1 1 -1 1 -1 | 163
## 20 1 1 1 -1 -1 1 -1 -1 -1 -1 1 -1 -1 1 1 1 | 168
## 21 1 -1 -1 1 -1 1 -1 -1 1 1 -1 1 -1 1 1 -1 | 178
## 22 1 1 -1 1 -1 -1 1 -1 -1 1 -1 -1 1 -1 1 1 | 183
## 23 1 -1 1 1 -1 -1 -1 1 1 -1 -1 -1 1 1 -1 1 | 168
## 24 1 1 1 1 -1 1 1 1 -1 -1 -1 1 -1 -1 -1 -1 | 182
## 25 1 -1 -1 -1 1 1 1 1 -1 -1 -1 -1 1 1 1 -1 | 159
## 26 1 1 -1 -1 1 -1 -1 1 1 -1 -1 1 -1 -1 1 1 | 189
## 27 1 -1 1 -1 1 -1 1 -1 -1 1 -1 1 -1 1 -1 1 | 159
## 28 1 1 1 -1 1 1 -1 -1 1 1 -1 -1 1 -1 -1 -1 | 191
## 29 1 -1 -1 1 1 1 -1 -1 -1 -1 1 1 1 -1 -1 1 | 174
## 30 1 1 -1 1 1 -1 1 -1 1 -1 1 -1 -1 1 -1 -1 | 199
## 31 1 -1 1 1 1 -1 -1 1 -1 1 1 -1 -1 -1 1 -1 | 174
## 32 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 | 198

k <- 4 # Número de fatores.


r <- 2 # Número de repetições.

# Contrates são o principal artefato. É apenas X'y.


ctr <- crossprod(X, y)
ctr

## [,1]
## I 5608
## A 272
## B -26
## C 174
## D 134
## AB -2
## AC -10
## BC -4
## AD 146
## BD 20
## CD -20
## ABC 12
## ABD -8
## ACD 0
## BCD 2
## ABCD -26

# Estimativas dos parâmetros.


# beta <- solve(crossprod(X), crossprod(X, y))
beta <- diag(1/(r * 2^k), 2^k) %*% ctr
beta

## [,1]
## [1,] 175.2500
## [2,] 8.5000
## [3,] -0.8125
## [4,] 5.4375
## [5,] 4.1875
## [6,] -0.0625
## [7,] -0.3125
## [8,] -0.1250
## [9,] 4.5625
## [10,] 0.6250
## [11,] -0.6250
## [12,] 0.3750
## [13,] -0.2500
## [14,] 0.0000
## [15,] 0.0625
## [16,] -0.8125

# Estimativa dos parâmetros (por somatórios basicamente).


ctr/(r * 2^k) # idem ao `beta`

## [,1]
## I 175.2500
## A 8.5000
## B -0.8125
## C 5.4375
## D 4.1875
## AB -0.0625
## AC -0.3125
## BC -0.1250
## AD 4.5625
## BD 0.6250
## CD -0.6250
## ABC 0.3750
## ABD -0.2500
## ACD 0.0000
## BCD 0.0625
## ABCD -0.8125
# Somas de quadrados.
tail(ctr, n = -1)^2/(r * 2^k)

## [,1]
## A 2312.000
## B 21.125
## C 946.125
## D 561.125
## AB 0.125
## AC 3.125
## BC 0.500
## AD 666.125
## BD 12.500
## CD 12.500
## ABC 4.500
## ABD 2.000
## ACD 0.000
## BCD 0.125
## ABCD 21.125

# Valores ajustados para cada ponto experimental.


refri$hy <- X %*% beta

# Resíduos.
refri$res <- with(refri, y - hy)

# Desvio padrão residual.


s2 <- with(refri, sum(res^2)/(nrow(X) - ncol(X)))
s2

## [1] 9.5625

# Erros padrões das estimativas dos parâmetros.


# summary(m0)$coefficients
sqrt(s2/(r * 2^k))

## [1] 0.5466517

# Erros padrões das médias nos pontos experimentais.


# predict(m0, se.fit = TRUE)$se.fit
sqrt(s2/r)

## [1] 2.186607

# Matriz para a predição de um ponto qualquer.


# Xnew <- model.matrix(~A * B * C,
# data = data.frame(A = -1, B = 0.25, C = 0.5))
Xnew <- with(data.frame(A = -0.5, B = 0.9, C = 0.5, D = 0),
cbind(I = 1,
A, B, C, D,
AB = A * B,
AC = A * C,
BC = B * C,
AD = A * D,
BD = B * D,
CD = C * D,
ABC = A * B * C,
ABD = A * B * D,
ACD = A * C * D,
BCD = B * C * D,
ABCD = A * B * C * D))
Xnew

## I A B C D AB AC BC AD BD CD ABC ABD ACD BCD ABCD


## [1,] 1 -0.5 0.9 0.5 0 -0.45 -0.25 0.45 0 0 0 -0.225 0 0 0 0

# Predição em um ponto qualquer.


Xnew %*% beta

## [,1]
## [1,] 172.9531

# Variância da predição em um ponto qualquer.


# Xnew %*% (s2 * solve(crossprod(X))) %*% t(Xnew)
Xnew %*% (s2 * diag(1/(r * 2^k), 2^k)) %*% t(Xnew)

## [,1]
## [1,] 0.8451233

Análise com funções


Aná lise dos dados. Como é um modelo linear, usa-se a lm().
# Ajuste do modelo saturado.
m0 <- lm(y ~ A * B * C * D, data = refri)

# Diagnóstico nos resíduos.


par(mfrow = c(1, 2))
plot(m0, which = 3)
plot(m0, which = 2)
layout(1)

Atrá ves dos grá ficos podemos observar que, nã o existem evidências contra o atendimento
dos pressupostos. Obviamente que por serem poucas observaçõ es, dificulta-se detectar
padrõ es característicos, como relaçã o média-variâ ncia. O que pode ser comentado é que o
fato da variá vel ser medida em escala discreta (soma de 20 termos com notas de 0 a 10),
isso aparece no grá fico com resíduos padronizados de mesmo valor.
# Quadro de análise de variância.
anova(m0)

## Analysis of Variance Table


##
## Response: y
## Df Sum Sq Mean Sq F value Pr(>F)
## A 1 2312.00 2312.00 241.7778 4.451e-11 ***
## B 1 21.12 21.12 2.2092 0.1566
## C 1 946.13 946.13 98.9412 2.958e-08 ***
## D 1 561.13 561.13 58.6797 9.692e-07 ***
## A:B 1 0.13 0.13 0.0131 0.9104
## A:C 1 3.13 3.13 0.3268 0.5755
## B:C 1 0.50 0.50 0.0523 0.8220
## A:D 1 666.12 666.12 69.6601 3.187e-07 ***
## B:D 1 12.50 12.50 1.3072 0.2697
## C:D 1 12.50 12.50 1.3072 0.2697
## A:B:C 1 4.50 4.50 0.4706 0.5025
## A:B:D 1 2.00 2.00 0.2092 0.6536
## A:C:D 1 0.00 0.00 0.0000 1.0000
## B:C:D 1 0.13 0.13 0.0131 0.9104
## A:B:C:D 1 21.13 21.13 2.2092 0.1566
## Residuals 16 153.00 9.56
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

# Estimativas.
summary(m0)

##
## Call:
## lm(formula = y ~ A * B * C * D, data = refri)
##
## Residuals:
## Min 1Q Median 3Q Max
## -3.5 -2.0 0.0 2.0 3.5
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 1.752e+02 5.467e-01 320.588 < 2e-16 ***
## A 8.500e+00 5.467e-01 15.549 4.45e-11 ***
## B -8.125e-01 5.467e-01 -1.486 0.157
## C 5.438e+00 5.467e-01 9.947 2.96e-08 ***
## D 4.188e+00 5.467e-01 7.660 9.69e-07 ***
## A:B -6.250e-02 5.467e-01 -0.114 0.910
## A:C -3.125e-01 5.467e-01 -0.572 0.575
## B:C -1.250e-01 5.467e-01 -0.229 0.822
## A:D 4.562e+00 5.467e-01 8.346 3.19e-07 ***
## B:D 6.250e-01 5.467e-01 1.143 0.270
## C:D -6.250e-01 5.467e-01 -1.143 0.270
## A:B:C 3.750e-01 5.467e-01 0.686 0.503
## A:B:D -2.500e-01 5.467e-01 -0.457 0.654
## A:C:D 1.305e-14 5.467e-01 0.000 1.000
## B:C:D 6.250e-02 5.467e-01 0.114 0.910
## A:B:C:D -8.125e-01 5.467e-01 -1.486 0.157
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 3.092 on 16 degrees of freedom
## Multiple R-squared: 0.9676, Adjusted R-squared: 0.9371
## F-statistic: 31.81 on 15 and 16 DF, p-value: 4.504e-09

Pela aná lise de variâ ncia podemos dizer que, nã o houve interaçõ es relevantes envolvendo
C (nível de carbonaçã o), apenas o efeito principal. Nã o houve efeito de B (xarope/á gua) em
nenhum termo. Houve interaçã o dupla entre A (adoçante) e D (temperatura). Portanto,
alguns termos do modelo podem ser abandonados.
# Ajuste do modelo reduzido apenas nos termos relevantes.
m1 <- update(m0, . ~ C + A * D)
anova(m1)

## Analysis of Variance Table


##
## Response: y
## Df Sum Sq Mean Sq F value Pr(>F)
## C 1 946.13 946.13 110.766 4.688e-11 ***
## A 1 2312.00 2312.00 270.673 1.347e-15 ***
## D 1 561.13 561.13 65.693 1.046e-08 ***
## A:D 1 666.12 666.12 77.985 1.905e-09 ***
## Residuals 27 230.63 8.54
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

# Variâncias residuais.
c(s2_m0 = summary(m0)$sigma^2,
s2_m1 = summary(m1)$sigma^2)

## s2_m0 s2_m1
## 9.562500 8.541667

# Teste para nulidade dos termos abandonados.


anova(m1, m0)

## Analysis of Variance Table


##
## Model 1: y ~ C + A + D + A:D
## Model 2: y ~ A * B * C * D
## Res.Df RSS Df Sum of Sq F Pr(>F)
## 1 27 230.62
## 2 16 153.00 11 77.625 0.738 0.6907

Perceb-se que o modelo ajustado nã o diferiu. Neste exemplo, a variâ ncia residual do
modelo m1 foi menor que do modelo m0.Entã o, a diferença nessas estimativas é
irrelevante. Poderia-se usar a estimativa pura da variâ ncia residual fornecida pelo modelo
m0. Os resultados nã o devem mudar substancialmente.
# Malha fina de valores para predição.
pred <- expand.grid(A = seq(-1, 1, by = 0.1),
C = seq(-1, 1, by = 0.5),
D = seq(-1, 1, by = 0.1),
KEEP.OUT.ATTRS = FALSE)
pred <- cbind(pred,
as.data.frame(predict(m1,
newdata = pred,
se.fit = TRUE)[1:2]))

# Gráfico da superfície média (valores ajustados).


ggplot(data = pred,
mapping = aes(x = A, y = D, z = fit, fill = fit)) +
facet_wrap(facets = ~C) +
geom_tile() +
scale_fill_distiller(palette = "Spectral",
direction = 1) +
geom_contour(color = "blue") +
coord_equal()

A funçã o apresenta um comportamento que, conforme antecipado, indica que o efeito de A


(adoçante) depende do valor de D (temperatura) e vice versa. É possível entender melhor
com grá fico de linhas.
# Gráficos de linhas.
ggplot(data = pred,
mapping = aes(x = A, y = fit, color = D, group = D)) +
facet_wrap(facets = ~C) +
geom_line() +
scale_color_distiller(palette = "PRGn")
Perceba que quanto maior o valor de D (temperatura), mais pronunciado é o efeito de A
(adoçante). Diz-se que existe sinergismo entre esses fatores. O efeito de C (carbonaçã o) é
aditivo aos demais (nas escalas consideradas). Quanto maior C, maior o valor médio
fixando-se os demais fatores.
# Valores preditos em cada ponto experimental.
grid <- unique(refri[, c("A", "C", "D")])
grid$fit <- predict(m1, newdata = grid)
arrange(grid, fit)

## A C D fit
## 1 -1 -1 1 160.9375
## 2 -1 -1 -1 161.6875
## 3 1 -1 -1 169.5625
## 4 -1 1 1 171.8125
## 5 -1 1 -1 172.5625
## 6 1 1 -1 180.4375
## 7 1 -1 1 187.0625
## 8 1 1 1 197.9375

A melhor combinaçã o experimental no sentido de aumentar a nota para o refrigerante é


y o p t a r=f ( A=1 ,C=1 , D=1)=197.94 . Dado que o efeito de C (carbonaçã o) é aditivo aos
demais, a condicaçã o de operaçã o A=1, D=1 é a melhor independente do nível de C, ou
seja, independente da carbonaçã o.

Você também pode gostar