Exercícios de Delineamento Inteiramente Casualizado

Prof. Fernando de Souza Bastos

16 de outubro de 2018

Exercício 4.1

Para comparar a produtividade de quatro variedades de milho, um agrônomo tomou vinte parcelas similares e distribuiu, inteiramente ao acaso, cada uma das 4 variedades em 5 parcelas experimentais. A partir dos dados experimentais fornecidos abaixo, é possível concluir que existe diferença significativa entre as variedades com relação a produtividade, utilizando o nível de significância de 5%?

\[\begin{array}{ccccc} \hline &&&Variedades&&\\ \hline & A & B & C & D \\ \hline & 25 & 31 & 22 &33 \\ & 26 & 25 & 26 &29 \\ & 20 & 28 & 28 &31 \\ & 23 & 27 & 25 &34 \\ & 21 & 24 & 29 &28 \\ \hline Totais& 115 & 135 & 130 &155 \\ \hline Médias& 23 & 27 & 26 &31 \\ \hline \end{array}\]
library(readr)
if(!is.null(dev.list())) dev.off()
## null device 
##           1
da <- read_delim("https://raw.githubusercontent.com/maf261/maf261.github.io/master/Exercicios/Exercicios_noR/Exer_4_1.txt", 
                 "\t")
da
## # A tibble: 20 x 2
##    Var    Prod
##    <chr> <int>
##  1 A        25
##  2 A        26
##  3 A        20
##  4 A        23
##  5 A        21
##  6 B        31
##  7 B        25
##  8 B        28
##  9 B        27
## 10 B        24
## 11 C        22
## 12 C        26
## 13 C        28
## 14 C        25
## 15 C        29
## 16 D        33
## 17 D        29
## 18 D        31
## 19 D        34
## 20 D        28
str(da)
## Classes 'tbl_df', 'tbl' and 'data.frame':    20 obs. of  2 variables:
##  $ Var : chr  "A" "A" "A" "A" ...
##  $ Prod: int  25 26 20 23 21 31 25 28 27 24 ...
##  - attr(*, "spec")=List of 2
##   ..$ cols   :List of 2
##   .. ..$ Var : list()
##   .. .. ..- attr(*, "class")= chr  "collector_character" "collector"
##   .. ..$ Prod: list()
##   .. .. ..- attr(*, "class")= chr  "collector_integer" "collector"
##   ..$ default: list()
##   .. ..- attr(*, "class")= chr  "collector_guess" "collector"
##   ..- attr(*, "class")= chr "col_spec"
da$Var <- as.factor(da$Var)
is.factor(da$Var)
## [1] TRUE
#Resumo total dos dados
summary(da)
##  Var        Prod      
##  A:5   Min.   :20.00  
##  B:5   1st Qu.:24.75  
##  C:5   Median :26.50  
##  D:5   Mean   :26.75  
##        3rd Qu.:29.00  
##        Max.   :34.00
#Média dos dados por variedade
res <- aggregate(Prod ~ Var, data = da, FUN = mean);
kable(res,format = "markdown",digits = 2, padding = 3,align = "c")
Var Prod
A 23
B 27
C 26
D 31

Sempre é interessante fazer uma análise descritiva dos dados para avaliar linearidade, independencia, normalidade e homocedásticidade.

O pacote lattice de Sarkar (2017) do R é valioso para tais análises:

library(lattice)

xyplot(Prod~Var, data=da, jitter.x=TRUE)

xyplot(Prod~reorder(Var,Prod), data=da, jitter.x=TRUE)

dotplot(Prod~Var, data=da, jitter.x=TRUE)

dotplot(Prod~reorder(Var,Prod), data=da, jitter.x=TRUE)

bwplot(Prod~Var, data=da, pch="|")

bwplot(Prod~reorder(Var,Prod), data=da, pch="|")

#De outra forma

if (!require("pacman")) install.packages("pacman")
pacman::p_load(readr, dplyr, tibble, ggplot2, ggthemes, car, agricolae)
ggplot(da, aes(Var, Prod)) +
  geom_boxplot() +
  theme_bw() +
  theme_few()

O gráfico dos resíduos versus valores ajustados (valores preditos) é uma das principais técnicas utilizadas para verificar as suposições dos resíduos. Além da detecção de heteroscedasticidade, esse gráfico pode indicar que não existe uma relação linear entra as variáveis explicativas com a variável resposta por meio de alguma tendência nos pontos. Por exemplo, se os pontos do gráfico formam uma parábola, é indicativo que termos de segundo grau sejam necessários.

Para o diagnóstico de heteroscedasticidade, tentamos encontrar alguma tendência no gráfico. Por isso, se os pontos estão aleatoriamente distribuídos em torno do 0, sem nenhum comportamento ou tendência, temos indícios de que a variância dos resíduos é homoscedástica. Já a presença de “funil” é um indicativo da presença de heteroscedasticidade.

Para obtenção dos resíduos padronizados fazemos uma mudança de escala dos resíduos, tend uma linha horizontal temos que a variabilidade é constante

Pontos ao redor da linha significam normalidade.

Mesma avaliação do plot 1, mais utilizado quando utilizamos regressão linear

m0 <- lm(Prod~Var, data=da)
par(mfrow=c(2,2))
plot(m0)

layout(1)

\[ \begin{align} H_{0}&:\mu_{1}=\mu_{2}=\mu_{3}=\mu_{4}\\ H_{1}&: \textrm{Não}\ H_{0}\ (\textrm{Pelo menos uma média difere das demais}) \end{align} \]

m0 <- aov(Prod~Var, data=da)
anova(m0)
## Analysis of Variance Table
## 
## Response: Prod
##           Df Sum Sq Mean Sq F value   Pr(>F)   
## Var        3 163.75  54.583  7.7976 0.001976 **
## Residuals 16 112.00   7.000                    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
tukey <- HSD.test(m0, "Var",alpha=0.05)
tukey
## $statistics
##   MSerror Df  Mean       CV      MSD
##         7 16 26.75 9.890659 4.787402
## 
## $parameters
##    test name.t ntr StudentizedRange alpha
##   Tukey    Var   4         4.046093  0.05
## 
## $means
##   Prod      std r Min Max Q25 Q50 Q75
## A   23 2.549510 5  20  26  21  23  25
## B   27 2.738613 5  24  31  25  27  28
## C   26 2.738613 5  22  29  25  26  28
## D   31 2.549510 5  28  34  29  31  33
## 
## $comparison
## NULL
## 
## $groups
##   Prod groups
## D   31      a
## B   27     ab
## C   26      b
## A   23      b
## 
## attr(,"class")
## [1] "group"

Para deixar mais visual ainda, podemos construir um gráfico de barras com a média de cada tratamento e adicionar a sua letra correspondente ao teste de Tukey:

tukey$groups %>% 
  rownames_to_column(var = "trt") %>% 
  ggplot(aes(reorder(trt, Prod, function(x) -mean(x)), Prod)) +
    geom_bar(stat = "identity") +
    geom_text(aes(label = groups), vjust = 1.8, size = 9, color = "white") +
    labs(x = "Var", y = "Médias") +
    theme_few()

Duncan<- duncan.test(m0, "Var", alpha=0.05)
Duncan
## $statistics
##   MSerror Df  Mean       CV
##         7 16 26.75 9.890659
## 
## $parameters
##     test name.t ntr alpha
##   Duncan    Var   4  0.05
## 
## $duncan
##      Table CriticalRange
## 2 2.997999      3.547280
## 3 3.143802      3.719797
## 4 3.234945      3.827638
## 
## $means
##   Prod      std r Min Max Q25 Q50 Q75
## A   23 2.549510 5  20  26  21  23  25
## B   27 2.738613 5  24  31  25  27  28
## C   26 2.738613 5  22  29  25  26  28
## D   31 2.549510 5  28  34  29  31  33
## 
## $comparison
## NULL
## 
## $groups
##   Prod groups
## D   31      a
## B   27      b
## C   26     bc
## A   23      c
## 
## attr(,"class")
## [1] "group"

Para deixar mais visual ainda, podemos construir um gráfico de barras com a média de cada tratamento e adicionar a sua letra correspondente ao teste de Tukey:

Duncan$groups %>% 
  rownames_to_column(var = "trt") %>% 
  ggplot(aes(reorder(trt, Prod, function(x) -mean(x)), Prod)) +
    geom_bar(stat = "identity") +
    geom_text(aes(label = groups), vjust = 1.8, size = 9, color = "white") +
    labs(x = "Var", y = "Médias") +
    theme_few()

library(ExpDes.pt)
dic <- dic(da$Var,
  da$Prod,
  quali = TRUE,
  mcomp = "tukey",
  nl = FALSE,
  hvar = 'bartlett',
  sigT = 0.05,
  sigF = 0.05)
## ------------------------------------------------------------------------
## Quadro da analise de variancia
## ------------------------------------------------------------------------
##            GL     SQ     QM     Fc     Pr>Fc
## Tratamento  3 163.75 54.583 7.7976 0.0019756
## Residuo    16 112.00  7.000                 
## Total      19 275.75                        
## ------------------------------------------------------------------------
## CV = 9.89 %
## 
## ------------------------------------------------------------------------
## Teste de normalidade dos residuos 
## Valor-p:  0.2358736 
## De acordo com o teste de Shapiro-Wilk a 5% de significancia, os residuos podem ser considerados normais.
## ------------------------------------------------------------------------
## 
## ------------------------------------------------------------------------
## Teste de homogeneidade de variancia 
## valor-p:  0.9981235 
## De acordo com o teste de bartlett a 5% de significancia, as variancias podem ser consideradas homogeneas.
## ------------------------------------------------------------------------
## 
## Teste de Tukey
## ------------------------------------------------------------------------
## Grupos Tratamentos Medias
## a     D   31 
## ab    B   27 
##  b    C   26 
##  b    A   23 
## ------------------------------------------------------------------------
#Gráficos de Resíduos do Pacote ExpDes.pt
plotres(dic)

#Teste Duncan

dic <- dic(da$Var,
  da$Prod,
  quali = TRUE,
  mcomp = "duncan",
  nl = FALSE,
  hvar = 'bartlett',
  sigT = 0.05,
  sigF = 0.05)
## ------------------------------------------------------------------------
## Quadro da analise de variancia
## ------------------------------------------------------------------------
##            GL     SQ     QM     Fc     Pr>Fc
## Tratamento  3 163.75 54.583 7.7976 0.0019756
## Residuo    16 112.00  7.000                 
## Total      19 275.75                        
## ------------------------------------------------------------------------
## CV = 9.89 %
## 
## ------------------------------------------------------------------------
## Teste de normalidade dos residuos 
## Valor-p:  0.2358736 
## De acordo com o teste de Shapiro-Wilk a 5% de significancia, os residuos podem ser considerados normais.
## ------------------------------------------------------------------------
## 
## ------------------------------------------------------------------------
## Teste de homogeneidade de variancia 
## valor-p:  0.9981235 
## De acordo com o teste de bartlett a 5% de significancia, as variancias podem ser consideradas homogeneas.
## ------------------------------------------------------------------------
## 
## Teste de Duncan 
## ------------------------------------------------------------------------
## Grupos  Tratamentos  Medias
## a     D       31 
##  b    B       27 
##  bc   C       26 
##   c   A       23 
## ------------------------------------------------------------------------

Exercício 4.2

Um treinador de corrida rústica, objetivando melhorar o desempenho de seus atletas, testou três novas técnicas de preparação. Para tanto trabalhou com um grupo de 15 atletas completamente homogêneos para as características essenciais. A designação das técnicas de preparação aos atletas foi feita totalmente ao acaso e de tal forma que o número de atletas avaliados em cada uma das técnicas fosse o mesmo. Os resultados obtidos, após um determinado período de tempo de aprendizado da técnica pelos atletas, foram os seguintes (minutos / 25 Km):

\[\begin{array}{ccccc} \hline &&\textrm{Técnicas de Preparação}&&\\ \hline \textrm{Repetições} & 1 & 2 & 3 \\ \hline 1 & 130 & 125 & 135 \\ 2 & 129 & 131 & 129 \\ 3 & 128 & 130 & 131 \\ 4 & 126 & 129 & 128 \\ 5 & 130 & 127 & 130 \\ \hline Totais& 643 & 642 & 653 \\ \hline \textrm{Médias}& 128.6 & 128.4 & 130.6 \\ \hline \end{array}\]
library(readr)
da <- read_delim("https://raw.githubusercontent.com/maf261/maf261.github.io/master/Exercicios/Exercicios_noR/Exer_4_2.txt", 
                 "\t")
da
## # A tibble: 15 x 2
##    Tec   Tempo
##    <chr> <int>
##  1 X1      130
##  2 X1      129
##  3 X1      128
##  4 X1      126
##  5 X1      130
##  6 X2      125
##  7 X2      131
##  8 X2      130
##  9 X2      129
## 10 X2      127
## 11 X3      135
## 12 X3      129
## 13 X3      131
## 14 X3      128
## 15 X3      130
str(da)
## Classes 'tbl_df', 'tbl' and 'data.frame':    15 obs. of  2 variables:
##  $ Tec  : chr  "X1" "X1" "X1" "X1" ...
##  $ Tempo: int  130 129 128 126 130 125 131 130 129 127 ...
##  - attr(*, "spec")=List of 2
##   ..$ cols   :List of 2
##   .. ..$ Tec  : list()
##   .. .. ..- attr(*, "class")= chr  "collector_character" "collector"
##   .. ..$ Tempo: list()
##   .. .. ..- attr(*, "class")= chr  "collector_integer" "collector"
##   ..$ default: list()
##   .. ..- attr(*, "class")= chr  "collector_guess" "collector"
##   ..- attr(*, "class")= chr "col_spec"
da$Tec <- as.factor(da$Tec)
is.factor(da$Tec)
## [1] TRUE
#Resumo total dos dados
summary(da)
##  Tec        Tempo      
##  X1:5   Min.   :125.0  
##  X2:5   1st Qu.:128.0  
##  X3:5   Median :129.0  
##         Mean   :129.2  
##         3rd Qu.:130.0  
##         Max.   :135.0
#Média dos dados por variedade
res <- aggregate(Tempo ~ Tec, data = da, FUN = mean);
kable(res,format = "markdown",digits = 2, padding = 3,align = "c")
Tec Tempo
X1 128.6
X2 128.4
X3 130.6

Usando o pacote lattice de Sarkar (2017):

library(lattice)

xyplot(Tempo~Tec, data=da, jitter.x=TRUE)

xyplot(Tempo~reorder(Tec,Tempo), data=da, jitter.x=TRUE)

dotplot(Tempo~Tec, data=da, jitter.x=TRUE)

dotplot(Tempo~reorder(Tec,Tempo), data=da, jitter.x=TRUE)

bwplot(Tempo~Tec, data=da, pch="|")

bwplot(Tempo~reorder(Tec,Tempo), data=da, pch="|")

m0 <- lm(Tempo~Tec, data=da)
par(mfrow=c(2,2))
plot(m0)

layout(1)

\[ \begin{align} H_{0}&:\mu_{1}=\mu_{2}=\mu_{3}\\ H_{1}&: \textrm{Não}\ H_{0}\ (\textrm{Pelo menos uma média difere das demais}) \end{align} \] - Usando a função interna do R

m0 <- lm(Tempo~Tec, data=da)
anova(m0)
## Analysis of Variance Table
## 
## Response: Tempo
##           Df Sum Sq Mean Sq F value Pr(>F)
## Tec        2   14.8     7.4  1.3962  0.285
## Residuals 12   63.6     5.3
library(ExpDes.pt)
dic <- dic(da$Tec,
  da$Tempo,
  quali = TRUE,
  mcomp = "tukey",
  nl = FALSE,
  hvar = 'bartlett',
  sigT = 0.01,
  sigF = 0.01)
## ------------------------------------------------------------------------
## Quadro da analise de variancia
## ------------------------------------------------------------------------
##            GL   SQ  QM     Fc Pr>Fc
## Tratamento  2 14.8 7.4 1.3962 0.285
## Residuo    12 63.6 5.3             
## Total      14 78.4                 
## ------------------------------------------------------------------------
## CV = 1.78 %
## 
## ------------------------------------------------------------------------
## Teste de normalidade dos residuos 
## Valor-p:  0.9262885 
## De acordo com o teste de Shapiro-Wilk a 5% de significancia, os residuos podem ser considerados normais.
## ------------------------------------------------------------------------
## 
## ------------------------------------------------------------------------
## Teste de homogeneidade de variancia 
## valor-p:  0.663661 
## De acordo com o teste de bartlett a 5% de significancia, as variancias podem ser consideradas homogeneas.
## ------------------------------------------------------------------------
## 
## De acordo com o teste F, as medias nao podem ser consideradas diferentes.
## ------------------------------------------------------------------------
##   Niveis Medias
## 1     X1  128.6
## 2     X2  128.4
## 3     X3  130.6
## ------------------------------------------------------------------------
plotres(dic)

Exercício 4.4

da = data.frame(Trat=rep(c("A","B","C"),each=8),
                Resp=c(96,95,100,108,120,110.5,97  ,92.5,
                  90,93,89 ,88 ,87 ,92.5 ,87.5,85  ,
                  86,85,105,105,90 ,100  ,95  ,95))
head(da)
##   Trat  Resp
## 1    A  96.0
## 2    A  95.0
## 3    A 100.0
## 4    A 108.0
## 5    A 120.0
## 6    A 110.5
str(da)
## 'data.frame':    24 obs. of  2 variables:
##  $ Trat: Factor w/ 3 levels "A","B","C": 1 1 1 1 1 1 1 1 2 2 ...
##  $ Resp: num  96 95 100 108 120 ...
m0 <- lm(Resp~Trat,data=da)
par(mfrow=c(2,2))
plot(m0)

layout(1)

Escolha um número que seja próximo, o ideal é que seja um número do tipo \(1/a,\) onde \(a \in \mathbb{Z}.\)

MASS::boxcox(m0)

MASS::boxcox(lm(Resp~Trat,data=da),lambda=seq(-10,1,by=.1))

MASS::boxcox(lm(Resp~Trat,data=da),lambda=seq(-10,1,by=.1))
abline(v=-4,col="red")
abline(v=-4.25,col="blue")

m1 <- lm(Resp^(-4)~Trat,data = da)
plot(m1)

library(ExpDes.pt)
dic <- dic(da$Trat,
  da$Resp^(-4),
  quali = TRUE,
  mcomp = "tukey",
  nl = FALSE,
  hvar = 'bartlett',
  sigT = 0.05,
  sigF = 0.05)
## ------------------------------------------------------------------------
## Quadro da analise de variancia
## ------------------------------------------------------------------------
##            GL         SQ         QM   Fc     Pr>Fc
## Tratamento  2 1.6047e-16 8.0234e-17 7.64 0.0032122
## Residuo    21 2.2054e-16 1.0502e-17               
## Total      23 3.8101e-16                          
## ------------------------------------------------------------------------
## CV = 25.08 %
## 
## ------------------------------------------------------------------------
## Teste de normalidade dos residuos 
## Valor-p:  0.6995647 
## De acordo com o teste de Shapiro-Wilk a 5% de significancia, os residuos podem ser considerados normais.
## ------------------------------------------------------------------------
## 
## ------------------------------------------------------------------------
## Teste de homogeneidade de variancia 
## valor-p:  0.1587246 
## De acordo com o teste de bartlett a 5% de significancia, as variancias podem ser consideradas homogeneas.
## ------------------------------------------------------------------------
## 
## Teste de Tukey
## ------------------------------------------------------------------------
## Grupos Tratamentos Medias
## a     B   1.606925e-08 
## ab    C   1.296106e-08 
##  b    A   9.735807e-09 
## ------------------------------------------------------------------------
#Avalie os resultados
plotres(dic)

Referências

Ferreira, Eric Batista, Portya Piscitelli Cavalcanti, and Denismar Alves Nogueira. 2018. ExpDes.pt: Pacote Experimental Designs (Portuguese). https://CRAN.R-project.org/package=ExpDes.pt.

Sarkar, Deepayan. 2017. “Lattice: Trellis Graphics for R.” março. https://cran.r-project.org/web/packages/lattice/index.html.