Trabalho de Experimentação

Author

Ana Camila Nogueira e Fabiane Teixeira

Delineamento Inteiramente Casualizado (DIC)

Antes, limpar o “Ambiente Global” (Global Environment):

rm(list=ls(all=TRUE))

Primeiramente é necessário carregar os pacotes que serão utilizados:

library("tidyverse")
library("ggplot2")
library("PMCMRplus")
library("car")
library("agricolae")
library("rstatix")
library("emmeans")
library("ScottKnott")
library("multcomp")

Dados: Um experimento de alimentação de porcos, usando quatro rações (A, B, C,D), cada uma fornecida a cinco animais escolhidos ao acaso. Os aumentos de peso observados, em quilogramas, constam a seguir.

Entrada de dados da variável resposta:

pesos = c(35, 19, 31, 15,
          30, 40, 35, 46,
          41, 33, 39, 27,
          20, 29, 45, 27,
          12, 13, 28, 30)

Criar objeto com variável pesos:

pesos
 [1] 35 19 31 15 30 40 35 46 41 33 39 27 20 29 45 27 12 13 28 30

Tratamentos (rações):

rações = factor(c(rep('A',5),
                  rep('B',5),
                  rep('C',5),
                  rep('D',5)))

Criar objeto para tratamentos (rações):

rações
 [1] A A A A A B B B B B C C C C C D D D D D
Levels: A B C D

Mostrar a ordem das rações com função table:

table(rações)
rações
A B C D 
5 5 5 5 

Criar o banco de dados com a variável resposta e o tratamento:

dados = data.frame(pesos,rações)
dados
   pesos rações
1     35      A
2     19      A
3     31      A
4     15      A
5     30      A
6     40      B
7     35      B
8     46      B
9     41      B
10    33      B
11    39      C
12    27      C
13    20      C
14    29      C
15    45      C
16    27      D
17    12      D
18    13      D
19    28      D
20    30      D

Análise descritiva:

Resumo númerico geral:

summary(dados)
     pesos       rações
 Min.   :12.00   A:5   
 1st Qu.:25.25   B:5   
 Median :30.00   C:5   
 Mean   :29.75   D:5   
 3rd Qu.:36.00         
 Max.   :46.00         

Resumo númerico por tratamento

tapply(pesos,rações,summary)
$A
   Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
     15      19      30      26      31      35 

$B
   Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
     33      35      40      39      41      46 

$C
   Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
     20      27      29      32      39      45 

$D
   Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
     12      13      27      22      28      30 

Resumo númerico com desvio padrão e coeficiente de variação:

nrep = tapply(pesos,rações, length)
media = tapply(pesos,rações, mean) 
variancia = tapply(pesos,rações, var) 
desvpad =  tapply(pesos,rações, sd)
coef_var = round(100*(tapply(pesos,rações,sd)/tapply(pesos,rações, mean)), 1)
data.frame(Repeticoes = nrep, 
           Media = media, 
           Variancia = variancia,
           DesvioPadrao =desvpad, 
           CoefVariacao = coef_var,
           row.names = c('A','B','C','D'))
  Repeticoes Media Variancia DesvioPadrao CoefVariacao
A          5    26      73.0     8.544004         32.9
B          5    39      26.5     5.147815         13.2
C          5    32      99.0     9.949874         31.1
D          5    22      76.5     8.746428         39.8

Boxplot para visualizar melhor os dados e comparar os tratamentos:

car::Boxplot(pesos~rações,
             las=1,
             col="lightblue", xlab="",
             ylab=expression("pesos"(Kg)))
points(media,col="red", pch=8)

É possível observar que as caixas das rações D e A se encontram mais abaixo quando comparadas com as demais, o valor máximo da D esta abaixo do valor mínimo da caixa B. As caixas A, B e C estão assimétricos a equerda.

Criar histograma para todos os dados:

hist(pesos, col = "red", col.axis = "blue", col.lab = "green",
     xlab = "Pesos (kg)", ylab="Frequência",
     main = "Frêquencia de pesos dos porcos")

O histograma não está muito próximo da aparência de um sino, sendo possivel observar uma maior frequência nos valores 25 a 35.

Teste de Normalidade de todos os dados: Histograma:

ggplot(dados, aes(x=pesos))+
  geom_histogram(bins = 6,
                 fill = "green4",
                 col= "magenta2")

Graficamente podemso observar que o histograma não apresenta uma aparência próxima de um sino.

Boxplot:

ggplot(dados)+
  geom_boxplot(aes(y = pesos),
               fill = "deepskyblue3",
               col= "turquoise1")

QQ-plot:

ggplot(dados, aes(sample = pesos)) + 
  stat_qq() + 
  stat_qq_line() +
  labs(y = "pesos (kg)")

qqPlot(pesos, col="turquoise1", pch=19)

[1] 17 18

Os pontos seguem aproximadamente uma linha reta, porém um valor se encontra fora da linha.

Teste de Shapiro-Wilk para Normalidade: Hipótese nula: os dados de pesos possuem uma distribuição Normal; Hipótese alternativa: os dados de pesos não possuem uma distribuição Normal.

shapiro.test(pesos)

    Shapiro-Wilk normality test

data:  pesos
W = 0.95835, p-value = 0.5115

Como o p-valor é aproximadamente 0,51 e é maior do que 0,05, a hipótese nula não é rejeitada, logo, há evidências que comprovem distribuição normal dos dados dos pesos.

Teste da homogeneidade de variâncias: Hipotese nula: As rações possuem variâncias homogêneas para pesos dos porcos; Hipotese alternativa: As variâncias dos pesos dos porcos em cada ração não são homogêneas.

leveneTest(pesos ~ rações) 
Levene's Test for Homogeneity of Variance (center = median)
      Df F value Pr(>F)
group  3  0.3324  0.802
      16               

Como o p-valor é maior que 0,05, não há evidências para rejeitar a hipótese nula, logo, há evidências que comprovem que as são variâncias são homogêneas.

Tabela da análise de variâncias: Testar as hipóteses: Hip. nula: a média dos pesos é a mesma para todas as rações (tratamentos); Hip. alternativa: em pelo menos uma ração a média dos pesos se diferem.

Ajuste do modelo aos dados:

mod_aov = aov(pesos ~ rações, data = dados)
mod_aov
Call:
   aov(formula = pesos ~ rações, data = dados)

Terms:
                 rações Residuals
Sum of Squares   823.75   1100.00
Deg. of Freedom       3        16

Residual standard error: 8.291562
Estimated effects may be unbalanced
summary(mod_aov) #produz a tabela da ANOVA
            Df Sum Sq Mean Sq F value Pr(>F)  
rações       3  823.8  274.58   3.994 0.0267 *
Residuals   16 1100.0   68.75                 
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Como valor-p é menor do que 0,05, não há evidências para aceitar a hipótese nula, logo, em pelo menos uma ração a média dos pesos se diferem.

Contrução do gráfico “resíduos padronizados x valores ajustados”: Resíduos ordinários:

residuos = mod_aov$residuals 
residuos
  1   2   3   4   5   6   7   8   9  10  11  12  13  14  15  16  17  18  19  20 
  9  -7   5 -11   4   1  -4   7   2  -6   7  -5 -12  -3  13   5 -10  -9   6   8 
dados = data.frame(dados, residuos)

Resíduos X Tratamento (rações):

ggplot(data = dados, 
       aes(x = rações, y = residuos)) +
  geom_jitter(width = 0.05,
              color="violetred") +
  labs(y = "Residuos ordinarios", 
       x = "rações") +
  stat_summary(show.legend = T,
               fun = "mean", 
               geom = "crossbar", 
               width = 0.25,
               linewidth = 0.25,
               color = "turquoise1")

Valores ajustados (teóricos) do modelo:

ajustados = mod_aov$fitted.values
ajustados
 1  2  3  4  5  6  7  8  9 10 11 12 13 14 15 16 17 18 19 20 
26 26 26 26 26 39 39 39 39 39 32 32 32 32 32 22 22 22 22 22 

Gráfico dos Resíduos X valores ajustados:

plot(ajustados,
     residuos,
     main = "Residuos X Valores ajustados")

Resíduos padronizados: (verificar se existe algum valor resíduo maior que 3 ou menor que -3):

residuos_p = rstandard(mod_aov)

Gráfico Resíduos Padronizados x Valores ajustados:

plot(ajustados, 
     residuos_p, 
     xlab = "valores ajustados", 
     ylab = "resíduos padronizados", 
     ylim=c(-3.5,3.5),
     pch=16,
     col="green2",
     las=1)
abline(h=seq(-3,3,1), lty=3, col="plum1")
abline(h=c(-3,3), lty=4, col="magenta")
title("Residuos Padronizados X Valores ajustados")

Os resíduos estão bem ajustados porque estão dispersos e próximos do zero, não havendo valores discrepantes que ultrapassem a linha tracejada no entanto, é possível observar um padrão entre os valores.

Gráfico para normalidade dos resíduos:

hist(residuos)

ggplot(dados, aes(x=residuos))+
  geom_histogram(bins = 5,
                 fill = "green",
                 col= "maroon4")+
  labs(y = "Frequencia absoluta")

O histograma apresenta uma aparência próxima a de um sino, indicando uma possível normalidade dos resíduos.

qqnorm(residuos, 
       ylab = "Residuos", 
       main = "Grafico Normal de Probabilidade dos Residuos",
       pch=19,
       col="darkorchid3") 
qqline(residuos, 
       col="turquoise1") 

ggplot(dados, aes(sample = residuos)) + 
  stat_qq() + 
  stat_qq_line() +
  labs(y = "Residuos ordinarios")

qqPlot(residuos, col="deeppink1", pch=19)

[1] 15 13

Os resíduos parecem seguir uma distribuição normal, os pontos seguem aproximadamente uma linha reta.

Teste de hipótese para a normalidade dos resíduos com shapiro: Hipótese nula: os resíduos tem distribuição normal; Hipótese alternativa: os resíduos não tem distribuição normal:

shapiro.test(residuos)

    Shapiro-Wilk normality test

data:  residuos
W = 0.93874, p-value = 0.227

Como valor-p é maior do que 0,05, não há evidências para rejeitar a hipótese nula, logo, os resíduos tem distribuição normal.

Teste de Homogeneidade de variâncias para os resíduos: Ho: As variâncias são homogêneas; Ha: As variâncias não são homogêneas.

leveneTest(residuos ~ rações)
Levene's Test for Homogeneity of Variance (center = median)
      Df F value Pr(>F)
group  3  0.3324  0.802
      16               

Como o valor-p é maior que 0,05, não há evidências para rejeitar a hipótese nula, logo, as variâncias são homogêneas.

Teste de comparações multiplas de Tukey: Teste de Tukey

TukeyHSD(mod_aov) 
  Tukey multiple comparisons of means
    95% family-wise confidence level

Fit: aov(formula = pesos ~ rações, data = dados)

$rações
    diff        lwr       upr     p adj
B-A   13  -2.003315 28.003315 0.1018285
C-A    6  -9.003315 21.003315 0.6687032
D-A   -4 -19.003315 11.003315 0.8698923
C-B   -7 -22.003315  8.003315 0.5553529
D-B  -17 -32.003315 -1.996685 0.0237354
D-C  -10 -25.003315  5.003315 0.2640642
TukeyHSD(mod_aov, 
         ordered = TRUE, 
         conf.level = 0.95) 
  Tukey multiple comparisons of means
    95% family-wise confidence level
    factor levels have been ordered

Fit: aov(formula = pesos ~ rações, data = dados)

$rações
    diff        lwr      upr     p adj
A-D    4 -11.003315 19.00331 0.8698923
C-D   10  -5.003315 25.00331 0.2640642
B-D   17   1.996685 32.00331 0.0237354
C-A    6  -9.003315 21.00331 0.6687032
B-A   13  -2.003315 28.00331 0.1018285
B-C    7  -8.003315 22.00331 0.5553529
res_tukey1 = TukeyHSD(mod_aov, 
                      ordered = TRUE, 
                      conf.level = 0.95) 
plot(res_tukey1)

Para melhorar a visualização e embelezar o gráfico. define-se o padrão que já existe:

def.par = par() 

Criar um padrão para este gráfico:

par(mai=c(1.3, #margem inferior
          1.4, #margem da esquerda
          1.1, #margem do topo
          .5)) #margem da direita
plot(res_tukey1, 
     col.axis = "slategray4",
     col = "cyan4",
     las=1, #muda a posicao dos nomes do eixo Y
     cex.axis = 0.75) #tamanho menor dos nomes

Considerando o valor-p, notamos que as rações B e D são menores que o nível de significância adotado, ou seja, é menor do que 0,05. Ao analisar o gráfico nota-se que o valor zero não está contido no intervalo de confiança das duas rações.

Comparando as médias:

xtabs(~rações)                  #Repetições por nível de cultivar
rações
A B C D 
5 5 5 5 
df.residual(mod_aov)            #Graus de liberdade do resíduo 
[1] 16
glres = df.residual(mod_aov)
deviance(mod_aov)/glres         #Quadrado médio do resíduo
[1] 68.75
QMRes = deviance(mod_aov)/glres
res_tukey2 = HSD.test(pesos, 
                      rações, 
                      glres, 
                      QMRes, 
                      alpha=0.05)
res_tukey2
$statistics
  MSerror Df  Mean      CV      MSD
    68.75 16 29.75 27.8708 15.00331

$parameters
   test name.t ntr StudentizedRange alpha
  Tukey rações   4         4.046093  0.05

$means
  pesos      std r Min Max Q25 Q50 Q75
A    26 8.544004 5  15  35  19  30  31
B    39 5.147815 5  33  46  35  40  41
C    32 9.949874 5  20  45  27  29  39
D    22 8.746428 5  12  30  13  27  28

$comparison
NULL

$groups
  pesos groups
B    39      a
C    32     ab
A    26     ab
D    22      b

attr(,"class")
[1] "group"
plot(res_tukey2, 
     cex.axis=0.85, 
     ylab = " média de pesos (kg)",
     xlab = "rações",
     las=1)

Ao comparar as médias em ordem decrescente da média maior para menor, temos ração B, C, A e por fim D. A ração B possui média maior porém sua média se difere significamente somente da ração D. E a D só se difere da B.

Apresentação final dos resultados. Função “cld()” pertence ao pacote “multcomp”:

res_medias = emmeans(mod_aov, spec = ~rações) %>% 
  cld(Letters = letters, sort = TRUE, reverse = TRUE) %>% 
  as.data.frame()
res_medias
 rações emmean       SE df lower.CL upper.CL .group
 B          39 3.708099 16 31.13918 46.86082  a    
 C          32 3.708099 16 24.13918 39.86082  ab   
 A          26 3.708099 16 18.13918 33.86082  ab   
 D          22 3.708099 16 14.13918 29.86082   b   

Confidence level used: 0.95 
P value adjustment: tukey method for comparing a family of 4 estimates 
significance level used: alpha = 0.05 
NOTE: If two or more means share the same grouping symbol,
      then we cannot show them to be different.
      But we also did not show them to be the same. 
ggplot(data = res_medias,
       mapping = aes(y = reorder(rações, emmean))) +
  geom_errorbarh(mapping = aes(xmin = lower.CL, xmax = upper.CL),
                 height = 0.06) +
  labs(y = "rações",
       x = "média pesos (kg)") +
  geom_point(mapping = aes(x = emmean)) +
  geom_text(mapping = aes(x = emmean,
                          label = sprintf("%0.1f %s",
                                          emmean,
                                          trimws(.group))),
            vjust = -1)

Por fim, ao comparar os experimentos das rações conclui-se que pelo menos uma média é diferente, e de acordo com os testes a ração B se difere significativamente da ração B. Ao analisar as médias a ração B gerou mais aumento de peso nos porcos.

Delineamento em Bloscos Casualizados (DBC)

Dados: Em um experimento de competição de variedades de batatinha, feito pelo Engenheiro Agronomo Oscar A. GAray em Balcare, Argentina, em blocos casualizados, as produção obtidas, em t/ha, foram as seguintes.

Foram utilizadas quatro repetições e oito tratamentos: T1: Kennebec T2: Huinkul T3: S. Rafaela T4: Buena Vista T5: B 25-50 E T6: B 1-52 T7: B 116-51 T8: B 72-53 A

Entrada de dados para variável resposta:

produção = c(9.2, 13.4, 11.0, 9.2,
              21.1, 27.0, 26.4, 25.7,
              22.6, 29.9, 24.2, 25.1,
              15.4, 11.9, 10.1, 12.3, 
              12.7, 18.0, 18.2, 17.1,
              20.0, 21.1, 20.0, 28.0,
              23.1, 24.2, 26.4, 16.3,
              18.0, 24.6, 24.0, 24.6)

Número de unidades experimentais:

length(produção) 
[1] 32

Tratamentos: criar a variável qualitativa para representar os tratamentos:

tratamento = factor(rep(c("Kennebec",
                          "Huinkul",
                          "S. Rafaela",
                          "Buena Vista",
                          "B 25-50 E",
                          "B 1-52",
                          "B 116-51",
                          "B 72-53 A"), each=4))

Criar objeto com variável tratamentos:

tratamento
 [1] Kennebec    Kennebec    Kennebec    Kennebec    Huinkul     Huinkul    
 [7] Huinkul     Huinkul     S. Rafaela  S. Rafaela  S. Rafaela  S. Rafaela 
[13] Buena Vista Buena Vista Buena Vista Buena Vista B 25-50 E   B 25-50 E  
[19] B 25-50 E   B 25-50 E   B 1-52      B 1-52      B 1-52      B 1-52     
[25] B 116-51    B 116-51    B 116-51    B 116-51    B 72-53 A   B 72-53 A  
[31] B 72-53 A   B 72-53 A  
8 Levels: B 1-52 B 116-51 B 25-50 E B 72-53 A Buena Vista Huinkul ... S. Rafaela

Mostrar a ordem dos tratamentos:

table(tratamento)
tratamento
     B 1-52    B 116-51   B 25-50 E   B 72-53 A Buena Vista     Huinkul 
          4           4           4           4           4           4 
   Kennebec  S. Rafaela 
          4           4 

Não estão em ordem, colocar na ordem:

tratamento = factor(tratamento, c("Kennebec",
                                  "Huinkul",
                                  "S. Rafaela",
                                  "Buena Vista",
                                  "B 25-50 E",
                                  "B 1-52",
                                  "B 116-51",
                                  "B 72-53 A"))
table(tratamento)
tratamento
   Kennebec     Huinkul  S. Rafaela Buena Vista   B 25-50 E      B 1-52 
          4           4           4           4           4           4 
   B 116-51   B 72-53 A 
          4           4 

Criar o objeto para representar os blocos. Usar a função “factor()”:

bloco = factor(rep(c("B1",
                     "B2",
                     "B3",
                     "B4"), times = 8))

Visualizar o comprimento do objeto bloco:

bloco
 [1] B1 B2 B3 B4 B1 B2 B3 B4 B1 B2 B3 B4 B1 B2 B3 B4 B1 B2 B3 B4 B1 B2 B3 B4 B1
[26] B2 B3 B4 B1 B2 B3 B4
Levels: B1 B2 B3 B4
length(bloco) 
[1] 32

Organizar os objetos em um banco de dados (data frame):

dados = data.frame(bloco, tratamento, produção)
dados
   bloco  tratamento produção
1     B1    Kennebec      9.2
2     B2    Kennebec     13.4
3     B3    Kennebec     11.0
4     B4    Kennebec      9.2
5     B1     Huinkul     21.1
6     B2     Huinkul     27.0
7     B3     Huinkul     26.4
8     B4     Huinkul     25.7
9     B1  S. Rafaela     22.6
10    B2  S. Rafaela     29.9
11    B3  S. Rafaela     24.2
12    B4  S. Rafaela     25.1
13    B1 Buena Vista     15.4
14    B2 Buena Vista     11.9
15    B3 Buena Vista     10.1
16    B4 Buena Vista     12.3
17    B1   B 25-50 E     12.7
18    B2   B 25-50 E     18.0
19    B3   B 25-50 E     18.2
20    B4   B 25-50 E     17.1
21    B1      B 1-52     20.0
22    B2      B 1-52     21.1
23    B3      B 1-52     20.0
24    B4      B 1-52     28.0
25    B1    B 116-51     23.1
26    B2    B 116-51     24.2
27    B3    B 116-51     26.4
28    B4    B 116-51     16.3
29    B1   B 72-53 A     18.0
30    B2   B 72-53 A     24.6
31    B3   B 72-53 A     24.0
32    B4   B 72-53 A     24.6

Estrutura do banco de dados criado:

str(dados)
'data.frame':   32 obs. of  3 variables:
 $ bloco     : Factor w/ 4 levels "B1","B2","B3",..: 1 2 3 4 1 2 3 4 1 2 ...
 $ tratamento: Factor w/ 8 levels "Kennebec","Huinkul",..: 1 1 1 1 2 2 2 2 3 3 ...
 $ produção  : num  9.2 13.4 11 9.2 21.1 27 26.4 25.7 22.6 29.9 ...

Resumo numérico do banco de dados:

summary(dados)
 bloco        tratamento    produção    
 B1:8   Kennebec   :4    Min.   : 9.20  
 B2:8   Huinkul    :4    1st Qu.:14.90  
 B3:8   S. Rafaela :4    Median :20.55  
 B4:8   Buena Vista:4    Mean   :19.71  
        B 25-50 E  :4    3rd Qu.:24.60  
        B 1-52     :4    Max.   :29.90  
        (Other)    :8                   

Análise descritva da variável resposta (produção) Análise por tratamento: Resumo númerico:

tapply(produção, tratamento, summary)
$Kennebec
   Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
    9.2     9.2    10.1    10.7    11.6    13.4 

$Huinkul
   Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
  21.10   24.55   26.05   25.05   26.55   27.00 

$`S. Rafaela`
   Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
  22.60   23.80   24.65   25.45   26.30   29.90 

$`Buena Vista`
   Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
  10.10   11.45   12.10   12.43   13.07   15.40 

$`B 25-50 E`
   Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
  12.70   16.00   17.55   16.50   18.05   18.20 

$`B 1-52`
   Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
  20.00   20.00   20.55   22.27   22.82   28.00 

$`B 116-51`
   Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
  16.30   21.40   23.65   22.50   24.75   26.40 

$`B 72-53 A`
   Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
   18.0    22.5    24.3    22.8    24.6    24.6 

Número de repetições

nrep = tapply(produção, tratamento, length)

Média:

medias_produção_trat = round(tapply(produção, tratamento, mean),1)
medias_produção_trat
   Kennebec     Huinkul  S. Rafaela Buena Vista   B 25-50 E      B 1-52 
       10.7        25.0        25.4        12.4        16.5        22.3 
   B 116-51   B 72-53 A 
       22.5        22.8 

Mediana:

mediana_produção_trat = round(tapply(produção, tratamento, median),1)
mediana_produção_trat
   Kennebec     Huinkul  S. Rafaela Buena Vista   B 25-50 E      B 1-52 
       10.1        26.0        24.6        12.1        17.6        20.6 
   B 116-51   B 72-53 A 
       23.6        24.3 

Variância:

var_produção_trat = round(tapply(produção, tratamento, var),1)
var_produção_trat
   Kennebec     Huinkul  S. Rafaela Buena Vista   B 25-50 E      B 1-52 
        4.0         7.2         9.9         4.8         6.6        14.8 
   B 116-51   B 72-53 A 
       19.0        10.3 

Desvio padrão:

dp_produção_trat = round(sqrt(var_produção_trat),1)
dp_produção_trat
   Kennebec     Huinkul  S. Rafaela Buena Vista   B 25-50 E      B 1-52 
        2.0         2.7         3.1         2.2         2.6         3.8 
   B 116-51   B 72-53 A 
        4.4         3.2 

Coeficiente de variação:

coef_var = round(100*(dp_produção_trat/medias_produção_trat),1)
data.frame(Repeticoes = nrep, 
           Media = medias_produção_trat,
           Mediana = mediana_produção_trat,
           Variancia = var_produção_trat,
           DesvioPadrao =dp_produção_trat,
           CoefVariacao = coef_var,
           row.names = c("Kennebec",
                          "Huinkul",
                          "S. Rafaela",
                          "Buena Vista",
                          "B 25-50 E",
                          "B 1-52",
                          "B 116-51",
                          "B 72-53 A"))
            Repeticoes Media Mediana Variancia DesvioPadrao CoefVariacao
Kennebec             4  10.7    10.1       4.0          2.0         18.7
Huinkul              4  25.0    26.0       7.2          2.7         10.8
S. Rafaela           4  25.4    24.6       9.9          3.1         12.2
Buena Vista          4  12.4    12.1       4.8          2.2         17.7
B 25-50 E            4  16.5    17.6       6.6          2.6         15.8
B 1-52               4  22.3    20.6      14.8          3.8         17.0
B 116-51             4  22.5    23.6      19.0          4.4         19.6
B 72-53 A            4  22.8    24.3      10.3          3.2         14.0
dados |>
  group_by(tratamento) |>
  rstatix::get_summary_stats(produção, type = "full")
# A tibble: 8 × 14
  tratamento  variable     n   min   max median    q1    q3   iqr   mad  mean
  <fct>       <fct>    <dbl> <dbl> <dbl>  <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
1 Kennebec    produção     4   9.2  13.4   10.1   9.2  11.6  2.4  1.33   10.7
2 Huinkul     produção     4  21.1  27     26.0  24.6  26.6  2    0.964  25.0
3 S. Rafaela  produção     4  22.6  29.9   24.6  23.8  26.3  2.5  1.85   25.4
4 Buena Vista produção     4  10.1  15.4   12.1  11.4  13.1  1.62 1.63   12.4
5 B 25-50 E   produção     4  12.7  18.2   17.6  16    18.0  2.05 0.815  16.5
6 B 1-52      produção     4  20    28     20.6  20    22.8  2.82 0.815  22.3
7 B 116-51    produção     4  16.3  26.4   23.6  21.4  24.8  3.35 2.45   22.5
8 B 72-53 A   produção     4  18    24.6   24.3  22.5  24.6  2.1  0.445  22.8
# ℹ 3 more variables: sd <dbl>, se <dbl>, ci <dbl>

Como as unidades experimentais são muitas, é melhor visualizar as medidas descritivas em gráfico para comparar os tratamentos.

Criar boxplot para comparar os tratamentos:

car::Boxplot(produção~tratamento,
             col = "turquoise1",
             border = "orchid4",
             ylab = "produção (t/ha)",
             main = c("produção (t/ha)",
                      "variedades(batatinhas)"),
             cex.main=0.75)

Com o boxplot é possível observar que os tratamentos “Kennebec”, “Buena Vista” e “B 25-50 E” estão com as ciaxas mais abaixo, indicando menores valores, o tratamento “S. Rafaela” é o que o maior valor e esta com a caixa mais acima, é possível observar que as caixas não possuem uma simetria, ocorrendo a presença de caixas tanto assimetricas positivas quanto negativas.

Criar histograma para todos os dados:

hist(produção, col = "red", col.axis = "blue", col.lab = "green",
     xlab = "produção (t/ha)", ylab="Frequência",
     main = "frêquencia da produção de batatinha")

O histograma apresenta uma distribuição dos valores com maior frequências entre 20 a 25 e menor entrre 5 a 10.

Análise descritiva dos blocos:

medias_produção_blocos = tapply(produção, bloco, mean)
medias_produção_blocos
     B1      B2      B3      B4 
17.7625 21.2625 20.0375 19.7875 
mediana_produção_blocos = tapply(produção, bloco, median)
mediana_produção_blocos
   B1    B2    B3    B4 
19.00 22.65 22.00 20.85 
var_produção_blocos = tapply(produção, bloco, var)
var_produção_blocos
      B1       B2       B3       B4 
24.65982 41.06268 42.54268 48.76125 

Ao analisar os blocos nota-se maior média no bloco 2 e menor no bloco 1, sendo que ocorreu maior variação no bloco 4.

Teste de Normalidade da variável resposta: Histograma:

ggplot(dados, aes(x=produção))+
  geom_histogram(bins = 6,
                 fill = "magenta1",
                 col= "cyan1")

Graficamente, o histograma apresenta aparência próxima a de um sino, memso que os penúltimos valores possuam um aumento na frequência.

Teste de Normalidade com QQ-normal: QQ-plot:

ggplot(dados, aes(sample = produção)) + 
  stat_qq() + 
  stat_qq_line() +
  labs(y = "produção (t/ha)")

Os pontos seguem aproximadamente uma linha reta, indicando normalidade dos valores.

Função “qqplot()” do pacote car:

qqPlot(produção, col="magenta1", pch=19)

[1] 1 4

Todos os pontos estão dentro dos limites do envelope simulado, indicando normalidade dos valores.

Teste de Shapiro-Wilk para Normalidade: Hipótese nula: os dados de produção possuem uma distribuição Normal; Hipótese alternativa: os dados de produção não possuem uma distribuição Normal.

shapiro.test(produção)

    Shapiro-Wilk normality test

data:  produção
W = 0.94276, p-value = 0.0897

Como o p-valor é maior do que 0,05, a hipótese nula não é rejeitada, logo, há evidências que comprovem distribuição normal dos dados de produção.

Teste de homogeneidade de variâncias dos tratamentos com Teste de Levene: Ho: As variâncias são homogêneas; Ha: As variâncias não são homogêneas.

leveneTest(produção~tratamento)
Levene's Test for Homogeneity of Variance (center = median)
      Df F value Pr(>F)
group  7    0.14 0.9939
      24               

O valor-p foi maior que 0,05, portanto não há evidências para rejeitar a hipótese nula.

Tabela análise de variância do modelo: Ajuste do modelo Testar as hipóteses: Hip. nula: a produção média é o mesmo para todos os tratamentos; Hip. alternativa: em pelo menos um tratamento a produção média difere.

mod_aov = aov(produção ~ bloco + tratamento)
mod_aov
Call:
   aov(formula = produção ~ bloco + tratamento)

Terms:
                  bloco tratamento Residuals
Sum of Squares   50.530    919.720   179.465
Deg. of Freedom       3          7        21

Residual standard error: 2.923346
Estimated effects may be unbalanced

Tabela da ANOVA:

anova(mod_aov)
Analysis of Variance Table

Response: produção
           Df Sum Sq Mean Sq F value    Pr(>F)    
bloco       3  50.53  16.843  1.9709    0.1493    
tratamento  7 919.72 131.389 15.3744 5.723e-07 ***
Residuals  21 179.46   8.546                      
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Valor-p < 0,05 então há evidências para rejeitar a hipótese nula, portanto, em pelo menos um tratamento a produção média se difere.

Contrução do gráfico “resíduos padronizados x valores ajustados” Resíduos ordinários:

residuos = mod_aov$residuals
residuos
     1      2      3      4      5      6      7      8      9     10     11 
 0.450  1.150 -0.025 -1.575 -2.000  0.400  1.025  0.575 -0.900  2.900 -1.575 
    12     13     14     15     16     17     18     19     20     21     22 
-0.425  4.925 -2.075 -2.650 -0.200 -1.850 -0.050  1.375  0.525 -0.325 -2.725 
    23     24     25     26     27     28     29     30     31     32 
-2.600  5.650  2.550  0.150  3.575 -6.275 -2.850  0.250  0.875  1.725 

Resumo numérico dos resíduos:

summary(residuos)
   Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
-6.2750 -1.6438  0.0625  0.0000  1.0562  5.6500 

Resíduos X Tratamento:

ggplot(data = dados, 
       aes(x = tratamento, y = produção)) +
  geom_jitter(width = 0.05,
              color="purple3") +
  labs(y = "Residuos ordinarios", 
       x = "Tratamento") +
  stat_summary(show.legend = T,
               fun = "mean", 
               geom = "crossbar", 
               width = 0.25,
               linewidth = 0.25,
               color = "blue")

Resumo numérico dos resíduos:

summary(residuos)
   Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
-6.2750 -1.6438  0.0625  0.0000  1.0562  5.6500 

Valores ajustados (teóricos):

ajustados = mod_aov$fitted.values

Gráfico resíduos X valores ajustados:

plot(ajustados,  #eixo X
     residuos,   #eixo Y
     ylab="residuos",
     xlab="valores ajustados",
     main="Residuos X Valores ajustados",
     pch = 16,
     col="darkorange2")

residuos_p = rstandard(mod_aov)

Gráfico resíduos padronizados com valores ajustados:

plot(ajustados, 
     residuos_p, 
     ylab="residuos padronizados",
     xlab="valores ajustados",
     ylim = c(-3.5,3.5),
     main="Residuos padronizados X valores ajustados",
     pch = 16,
     col="darkviolet")
abline(h=c(-3,3), 
       col="darkgreen",
       lty = "dotted")

Os resíduos estão aleatoriamente distribuídos em torno do valor zero e entre -3 e +3, não havendo valores discrepantes que ultrapassem a linha tracejada.

Gráfico para verificar a normalidade dos Resíduos:

qqnorm(residuos,
       ylab="Residuos", 
       main="Grafico Normalidade dos Residuos",
       pch = 16,
       col="dodgerblue3")
qqline(residuos)

QQ-plot:

ggplot(dados, aes(sample = residuos)) + 
  stat_qq() + 
  stat_qq_line() +
  labs(y = "Residuos ordinarios")

qqPlot(residuos, pch = 16, col = "maroon")

[1] 28 24

Os resíduos parecem seguir uma distribuição normal, os pontos seguem aproximadamente uma linha reta, no entanto existe um ponto ultrapassando o limite.

Teste para normalidade dos resíduos com shapiro-wilk: Hipótese nula: os resíduos tem distribuição normal; Hipótese alternativa: os resíduos não tem distribuição normal:

shapiro.test(residuos)

    Shapiro-Wilk normality test

data:  residuos
W = 0.96895, p-value = 0.471

O valor-p é maior do que 0,05, portanto não há evidências para rejeitar a hipótese nula de que os resíduos tem distribuição normal.

Teste de homogeneidade de variâncias dos resíduos:

leveneTest(residuos~tratamento)
Levene's Test for Homogeneity of Variance (center = median)
      Df F value Pr(>F)
group  7  0.8304 0.5725
      24               

Como o valor-p é maior que 0,05, não há evidências para rejeitar a hipótese nula, logo, as variâncias são homogêneas. Teste de Tukey:

res_tukey1 = TukeyHSD(mod_aov, "tratamento", ord=T)
res_tukey1
  Tukey multiple comparisons of means
    95% family-wise confidence level
    factor levels have been ordered

Fit: aov(formula = produção ~ bloco + tratamento)

$tratamento
                         diff        lwr       upr     p adj
Buena Vista-Kennebec    1.725 -5.2084131  8.658413 0.9888092
B 25-50 E-Kennebec      5.800 -1.1334131 12.733413 0.1463333
B 1-52-Kennebec        11.575  4.6415869 18.508413 0.0003326
B 116-51-Kennebec      11.800  4.8665869 18.733413 0.0002605
B 72-53 A-Kennebec     12.100  5.1665869 19.033413 0.0001884
Huinkul-Kennebec       14.350  7.4165869 21.283413 0.0000176
S. Rafaela-Kennebec    14.750  7.8165869 21.683413 0.0000117
B 25-50 E-Buena Vista   4.075 -2.8584131 11.008413 0.5219209
B 1-52-Buena Vista      9.850  2.9165869 16.783413 0.0022078
B 116-51-Buena Vista   10.075  3.1415869 17.008413 0.0017232
B 72-53 A-Buena Vista  10.375  3.4415869 17.308413 0.0012384
Huinkul-Buena Vista    12.625  5.6915869 19.558413 0.0001072
S. Rafaela-Buena Vista 13.025  6.0915869 19.958413 0.0000701
B 1-52-B 25-50 E        5.775 -1.1584131 12.708413 0.1495926
B 116-51-B 25-50 E      6.000 -0.9334131 12.933413 0.1223292
B 72-53 A-B 25-50 E     6.300 -0.6334131 13.233413 0.0926538
Huinkul-B 25-50 E       8.550  1.6165869 15.483413 0.0091664
S. Rafaela-B 25-50 E    8.950  2.0165869 15.883413 0.0059314
B 116-51-B 1-52         0.225 -6.7084131  7.158413 1.0000000
B 72-53 A-B 1-52        0.525 -6.4084131  7.458413 0.9999952
Huinkul-B 1-52          2.775 -4.1584131  9.708413 0.8721456
S. Rafaela-B 1-52       3.175 -3.7584131 10.108413 0.7803373
B 72-53 A-B 116-51      0.300 -6.6334131  7.233413 0.9999999
Huinkul-B 116-51        2.550 -4.3834131  9.483413 0.9124298
S. Rafaela-B 116-51     2.950 -3.9834131  9.883413 0.8349125
Huinkul-B 72-53 A       2.250 -4.6834131  9.183413 0.9523508
S. Rafaela-B 72-53 A    2.650 -4.2834131  9.583413 0.8956159
S. Rafaela-Huinkul      0.400 -6.5334131  7.333413 0.9999993
plot(res_tukey1,
     cex.axis=0.6, 
     las=1)

De 28 grupos pelos menos 12 médias se constrastam, para analisar melhor os dados é interessante fazer o teste de Ducan.

Testes de comparações múltiplas:

require(agricolae)
xtabs(~tratamento)                 #Repetições por nível de TRAT
tratamento
   Kennebec     Huinkul  S. Rafaela Buena Vista   B 25-50 E      B 1-52 
          4           4           4           4           4           4 
   B 116-51   B 72-53 A 
          4           4 
glres = mod_aov$df.residual        #Graus de liberdade dos resíduos
QMRes = deviance(mod_aov)/glres    #Quadrado médio do Resíduo

Teste de Tukey:

res_tukey2= HSD.test(produção, 
                     tratamento, 
                     glres, 
                     QMRes, 
                     alpha=0.05)
res_tukey2
$statistics
   MSerror Df    Mean       CV      MSD
  8.545952 21 19.7125 14.82991 6.933413

$parameters
   test     name.t ntr StudentizedRange alpha
  Tukey tratamento   8         4.743477  0.05

$means
            produção      std r  Min  Max   Q25   Q50    Q75
B 1-52        22.275 3.851731 4 20.0 28.0 20.00 20.55 22.825
B 116-51      22.500 4.355074 4 16.3 26.4 21.40 23.65 24.750
B 25-50 E     16.500 2.578113 4 12.7 18.2 16.00 17.55 18.050
B 72-53 A     22.800 3.212476 4 18.0 24.6 22.50 24.30 24.600
Buena Vista   12.425 2.202082 4 10.1 15.4 11.45 12.10 13.075
Huinkul       25.050 2.686385 4 21.1 27.0 24.55 26.05 26.550
Kennebec      10.700 1.989975 4  9.2 13.4  9.20 10.10 11.600
S. Rafaela    25.450 3.141656 4 22.6 29.9 23.80 24.65 26.300

$comparison
NULL

$groups
            produção groups
S. Rafaela    25.450      a
Huinkul       25.050      a
B 72-53 A     22.800     ab
B 116-51      22.500     ab
B 1-52        22.275     ab
B 25-50 E     16.500     bc
Buena Vista   12.425      c
Kennebec      10.700      c

attr(,"class")
[1] "group"

Representação gráfica:

plot(res_tukey2, 
     xlab = "Tratamento",
     ylab = "produção (t/ha)",
     cex.axis=0.85, 
     las=1)

Como as médias estão em ordem decrescente o tratamento S. Rafaela obteve maior média de produtividade de batatinha, seguido por Huinkul. Os tratamentos Kennebeck e Buena Vista foram os que tiveram médias menores. Os outros tratamentos tiveram médias próximas das primeiras e últimas médias.

Apresentação final dos resultados:

res_medias = emmeans(mod_aov, spec = ~tratamento) %>% 
  multcomp::  cld(Letters = letters, sort = TRUE, reverse = TRUE) %>% 
  as.data.frame()
res_medias
 tratamento  emmean       SE df  lower.CL upper.CL .group
 S. Rafaela  25.450 1.461673 21 22.410284 28.48972  a    
 Huinkul     25.050 1.461673 21 22.010284 28.08972  a    
 B 72-53 A   22.800 1.461673 21 19.760284 25.83972  ab   
 B 116-51    22.500 1.461673 21 19.460284 25.53972  ab   
 B 1-52      22.275 1.461673 21 19.235284 25.31472  ab   
 B 25-50 E   16.500 1.461673 21 13.460284 19.53972   bc  
 Buena Vista 12.425 1.461673 21  9.385284 15.46472    c  
 Kennebec    10.700 1.461673 21  7.660284 13.73972    c  

Results are averaged over the levels of: bloco 
Confidence level used: 0.95 
P value adjustment: tukey method for comparing a family of 8 estimates 
significance level used: alpha = 0.05 
NOTE: If two or more means share the same grouping symbol,
      then we cannot show them to be different.
      But we also did not show them to be the same. 
ggplot(data = res_medias,
       mapping = aes(y = reorder(tratamento, emmean))) +
  geom_errorbarh(mapping = aes(xmin = lower.CL, xmax = upper.CL),
                 height = 0.06) +
  labs(y = "Tratamento",
       x = "produção medio (g)") +
  geom_point(mapping = aes(x = emmean)) +
  geom_text(mapping = aes(x = emmean,
                          label = sprintf("%0.1f %s",
                                          emmean,
                                          trimws(.group))),
            vjust = -1)

Ao comparar a produtividade das variedades conclui-se que existe um número grande de médias contrastando, e de acordo com os testes as variedades S. Rafaela e Huinkul não se diferem significamente na produtividade com médias altas. E como se trata de competição de produtividade as variedades Kennebeck e Buena Vista foram as que menos se destacaram.

Experimento Fatorial

Dados: Considerando um experimento inteiramento casualizado, com cinco repetições no esquema fatorial 4 x 2, para testar os efeitos da aplicação de dicloroisocianurato de sódio (DUP) em 4 épocas diferentes de aplicação, em soja inoculada com Rhizobium e não inoculada, sobre o número de nódulos.

Inoculação: NI (Soja não inoculada); IN (Soja inoculada).

Épocas: Plantio; V1+15; V3+15 e R1+15.

Há interesse em testar hipóteses sobre os efeitos do fator época: H0: o número de nódulos será igual para todas as épocas; Ha: o número de nódulos se difere em pelo menos uma época.

Há interesse em testar hipóteses sobre os efeitos do fator inoculação: H0: o número de nódulos será igual para as duas inoculações; Ha: o número de nódulos se difere em pelo menos uma inoculação.

Há interesse em testar hipótes se há interação entre os fatores: H0: não há intereção para todas as combinações de fatores; Ha: há interação em pelo menos uma combinação de fatores.

Entrada de dados:

NN=c(339,332,163,230,300,

     163,172,123,083,161,

     171,069,095,046,079,

     335,235,217,174,222,

     284,136,225,098,110,

     082,038,092,053,046,

     196,252,346,468,258,

     032,038,063,048,160)

Criar um objeto com os fatores de inoculação:

(Inoculacao=rep(c("IN","NI"),e=20))
 [1] "IN" "IN" "IN" "IN" "IN" "IN" "IN" "IN" "IN" "IN" "IN" "IN" "IN" "IN" "IN"
[16] "IN" "IN" "IN" "IN" "IN" "NI" "NI" "NI" "NI" "NI" "NI" "NI" "NI" "NI" "NI"
[31] "NI" "NI" "NI" "NI" "NI" "NI" "NI" "NI" "NI" "NI"

Criar um objeto com o fatores de época com 5 repetições:

(epoca=rep(c("Plantio","V1+15","V3+15","R1+15"),e=5,2))
 [1] "Plantio" "Plantio" "Plantio" "Plantio" "Plantio" "V1+15"   "V1+15"  
 [8] "V1+15"   "V1+15"   "V1+15"   "V3+15"   "V3+15"   "V3+15"   "V3+15"  
[15] "V3+15"   "R1+15"   "R1+15"   "R1+15"   "R1+15"   "R1+15"   "Plantio"
[22] "Plantio" "Plantio" "Plantio" "Plantio" "V1+15"   "V1+15"   "V1+15"  
[29] "V1+15"   "V1+15"   "V3+15"   "V3+15"   "V3+15"   "V3+15"   "V3+15"  
[36] "R1+15"   "R1+15"   "R1+15"   "R1+15"   "R1+15"  

Renomeando o objeto inoculação e transformando em fator:

F1=as.factor(Inoculacao)

Renomeando o objeto época e transformando em fator:

F2=as.factor(epoca)

Criando um objeto com os tratamentos, cada fator de inoculação, combinado com cada fator de época:

Trat=paste(F1,F2)

Criando um banco de dados com os tratamentos e seus respectivos números de nódulos:

dados=data.frame(F1,F2,resp=NN)
X="";Y="Número de nódulos"

Estatística descritiva dos números de nódulos:

Média:

Média = with(dados, mean(resp))

Desvio padrão:

Desvio = with(dados, sd(resp))

Variância:

Variancia = with(dados, var(resp))

Coeficiente de variação:

CV = Desvio / Média * 100

Criando uma tabela com os resultados das medidas descritivas dos números de nódulos:

desc = cbind(Média, Desvio, Variancia, CV)
desc
      Média   Desvio Variancia       CV
[1,] 168.35 106.8336  11413.41 63.45921

A partir das medidas descritivas de todos os valores de número de nódulos encontramos uma média de 168,35, com um desvio padrão de 106,8336 e uma variância de 11413,41, resultando em um coeficiente de variação aparentemente alto, sendo de aproximadamente 63%.

Medidas descritivas por inoculação:

Média:

MediaA = with(dados, tapply(resp, F1, mean))

Variância:

VarianciaA = with(dados, tapply(resp, F1, var))

Desvio padrão:

DesvioA = with(dados, tapply(resp, F1, sd))

Coeficiente de variação:

CVA = DesvioA / MediaA * 100

Criando uma tabela com os resultados das medidas descritivas por inoculação:

DescA = cbind(MediaA, VarianciaA, DesvioA, CVA)
DescA
   MediaA VarianciaA   DesvioA      CVA
IN 185.45   8229.208  90.71498 48.91614
NI 151.25  14582.724 120.75895 79.84063

Analisando as medidas descritivas por inoculação, podemos perceber que a média do número de nódulos das plantas de soja inoculadas, é maior que a média do número de nódulos das plantas não inoculadas, apresentando também uma menor variância e menor desvio padrão, e consequentemente, um menor coeficiente de variação.

Medidas descritivas por época de aplicação:

Média:

MediaB = with(dados, tapply(resp, F2, mean))

Variância:

VarianciaB = with(dados, tapply(resp, F2, var))

Desvio padrão:

DesvioB = with(dados, tapply(resp, F2, sd))

Coeficiente de variação:

CVB = DesvioB / MediaB * 100

Criando uma tabela com os resultados das medidas descritivas por época de aplicação:

DescB = cbind(MediaB, VarianciaB, DesvioB, CVB)
DescB
        MediaB VarianciaB   DesvioB      CVB
Plantio  221.7   8287.344  91.03485 41.06218
R1+15    152.4  10686.933 103.37762 67.83309
V1+15    101.3   2559.122  50.58777 49.93857
V3+15    198.0  18507.556 136.04248 68.70832

Analisando as medidas descritivas por época de aplicação podemos perceber que na época de plantio e V3 as plantas de soja apresentam as maiores médias de nódulos. Já a variância é menor da época V1. E o desvio padrão e o coeficiente de variação são maiores nas épocas V3 e R1.

Análise descritiva por gráficos: criar boxplot para comparar os fatores de inoculação:

par(bty='l', mai=c(1, 1, .2, .2))
par(cex=0.7)
caixas=with(dados, car::Boxplot(resp ~ F1, vertical=T,las=1, col='Lightgreen',
                                xlab=X, ylab=Y))
mediab=with(dados,tapply(resp, F1, mean))
points(mediab, pch='+', cex=1.5, col='red')
title("Comparação dos Fatores de Inoculação")

Analisando o box plot que compara o número de nódulos por inoculação, podemos perceber graficamente que a média do número de nódulos das plantas de soja inoculadas, é maior que a média do número de nódulos das plantas não inoculadas. E por apresentar uma menor amplitude dos dados podemos notar uma menor variação dos valores nas plantas inoculadas.

Criar boxplot para comparar os fatores de época:

par(bty='l', mai=c(1, 1, .2, .2))
par(cex=0.7)
caixas=with(dados, car::Boxplot(resp ~ F2, vertical=T,las=1, col='Lightblue',
                                xlab=X, ylab=Y))
mediab=with(dados,tapply(resp, F2, mean))
points(mediab, pch='+', cex=1.5, col='red')
title("Comparação dos Fatores de Época de Aplicação")

Analisando graficamente o boxplot por época de aplicação podemos perceber que, pela amplitude das caixas, na época V1 tem-se a menor variação dos dados, e na época de plantio e V3 as plantas de soja apresentam as maiores médias de nódulos.

Criar box plot para comparar os dois fatores combinados:

par(bty='l', mai=c(1, 1, .2, .2))
par(cex=0.7)
caixas=with(dados, car::Boxplot(resp ~ F1*F2, vertical=T,las=1, col='Lightpink',
                                xlab=X, ylab=Y))
title("Comparação dos dois fatores combinados")

Fazendo análise gráfica, percebemos que nos tratamentos “IN.R1”, “NI.R1”, “IN.V1”, “NI.V1” e “IN.V3”, a variação dos dados é menor quando comparado aos tratamentos “IN.Plantio”, “NI.Plantio” e NI.V3”. Analizando as medianas, notamos que são maiores nos tratamentos “IN.Plantio” e NI.V3”.

Criar um histograma para todos os dados:

hist(dados$resp, col = "lightgreen", col.axis = "blue", col.lab = "red",
     xlab = "Número de nódulos", ylab="Frequência",
     main = "Histograma da frequência de número de nódulos")

Analisando graficamente, os dados não aparentam ter distribuição normal.

Fazer o teste de normalidade de todos os dados testando as hipóteses: H0: Os dados seguem uma distribuição normal. Ha: Os dados não seguem uma distribuição normal.

shapiro.test(dados$resp)

    Shapiro-Wilk normality test

data:  dados$resp
W = 0.93251, p-value = 0.01946

O valor-p obtido foi 0,01946, sendo menor que 0,05, dessa forma, a hipótese nula é rejeitada, logo, há evidências que comprovem que os dados não tem distribuição normal para o nível de significância de 5%.

Fazer o teste de homogeneidade de variâncias dos dados por tratamentos H0: As variâncias são homogêneas; Ha: As variâncias não são homogêneas.

bartlett.test(resp ~ Trat, data = dados)

    Bartlett test of homogeneity of variances

data:  resp by Trat
Bartlett's K-squared = 9.8754, df = 7, p-value = 0.1957

O valor-p obtido foi 0,1957, sendo maior que 0,05, dessa forma, a hipótese nula não deve ser rejeitada, havendo evidências que comprovem que os dados apresentam homogeneidade de variâncias dos dados por tratamentos para o nível de significância de 5%.

Análise de variância Hipóteses do fator 1 (inoculação): H0: o número de nódulos será igual para as duas inoculações; Ha: o número de nódulos se difere entre as inoculações.

Hipóteses do fator 2 (épocas): H0: o número de nódulos será igual para todas as épocas; Ha: o número de nódulos se difere em pelo menos uma época.

Hipótes da interação entre os fatores: H0: Todas as combinações entre os níveis do fator 1 e do fator 2 têm o mesmo efeito; Ha: Pelo menos duas combinações entre os níveis do fator 1 e do fator 2 têm efeitos diferentes.

mod = with(dados, aov(resp~F1*F2))
anova(mod)
Analysis of Variance Table

Response: resp
          Df Sum Sq Mean Sq F value   Pr(>F)    
F1         1  11696   11696  2.7579 0.106542    
F2         3  84754   28251  6.6615 0.001272 ** 
F1:F2      3 212960   70987 16.7382 1.02e-06 ***
Residuals 32 135712    4241                     
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Para o Fator 1 (F1), o resultado não é significativo, indicando que estatisticamente o número de nódulos será igual na soja inoculada com Rhizobium e na soja não inoculada;

Analisando a Fator 2 (F2), percebemos que o resultado foi significativo para 0,01, indicando que, para esse nível de significância, o número de nódulos se difere em pelo menos uma época de aplicação.

Fazendo a análise da interação entre os fatores, obtivemos um resultado muito significativo, em que concluimos que, com a significância de 0,001, pelo menos uma combinação entre os níveis do fator 1 e do fator 2 têm efeitos diferentes das demais.

Extrair do modelo os valores ajustados e criar um objeto para armazenar os valores ajustados (teóricos):

ajustados = fitted(mod)  

Extrair do modelo os residuos e criar um objeto para armazenar os residuos:

residuos = residuals(mod)  
summary(residuos)
   Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
-109.80  -37.85  -13.80    0.00   30.25  164.00 

Residuos padronizados:

residuosp = rstandard(mod)

Grafico dos residuos padronizados (eixo Y) e valores ajustados (eixo X):

plot(ajustados, 
     residuosp,
     xlab= "Valores ajustados",                     
     ylab= "Resíduos padronizados",
     ylim=c(-3.5, 3.5),
     pch = 16,
     col="red",
     main = "Resíduos padronizados X Valores ajustados")
abline(h =c(-3, 3), lty = 2, col = "blue")

Com a análise do gráfico, é possível observar que não possue pontos com valores discrepantes que ultrapassem a linha tracejada nos valore 3 e -3. Porém, podemos perceber um determinado padrão entre os valores.

Gráfico para verificar a Normalidade dos resíduos:

car:: qqPlot(residuos, col="red", pch = 16)

[1] 34 21

Graficamente os dados apresentam distribuição normal, todos os pontos estão dentro do envelope, apenas dois pontos estão mais a margem.

Teste de normalidade dos residuos: Shapiro Wilk H0: os residuos tem distribuição normal; Ha: os resíduos não tem distribuição normal.

shapiro.test(residuos)

    Shapiro-Wilk normality test

data:  residuos
W = 0.96809, p-value = 0.3125

Como o valor-p encontrado é 0,3125, sendo maior que 0,05, então não rejeitamos a hipótese nula, indicando que os resíduos tem distribuição normal.

Comparando com o resultado encontrado no teste de Normalidade de todos os dados, em que o valor-p obtido foi 0,01946, rejeitando a hipótese nula, encontramos uma diferença ao comparar com a normalidade dos resíduos, visto que, os resíduos apresentaram distribuição normal.

Teste de homogeneidade de variâncias dos resíduos por tratamentos: H0: As variâncias são homogêneas; Ha: As variâncias não são homogêneas.

O usando o teste de Bartlett:

with(dados, bartlett.test(mod$residuals~Trat))

    Bartlett test of homogeneity of variances

data:  mod$residuals by Trat
Bartlett's K-squared = 9.8754, df = 7, p-value = 0.1957

O valor é igual ao teste de homogeneidade de variâncias, onde o valor-p obtido foi 0,1957, sendo maior que 0,05, dessa forma, a hipótese nula não deve ser rejeitada, havendo evidências que comprovem que os dados apresentam homogeneidade de variâncias dos resíduos por tratamentos.

Procedendo com os desdobramentos adequados: Observeando primeiramente as interações:

Interação entre o fator 1:

with(dados, interaction.plot(F2, F1, resp, las=1, col=1:6, bty='l', 
                             xlab='', ylab='CBM', trace.label="FATOR1"))

Nesse caso existe uma interação devido a diferença na direção da resposta.

Interação entre o fator 2

with(dados, interaction.plot(F1, F2, resp, las=1, col=1:6, bty='l', 
                             xlab='', ylab='CBM', trace.label="FATOR2"))

Na época V3 existe uma interação devido a diferença na direção das demais respostas. Já nas épocas plantio, R1 e V1, existe uma interação devido à diferença na grandeza da resposta.

Teste de Comparações:

library(ExpDes.pt)

Attaching package: 'ExpDes.pt'
The following object is masked from 'package:MASS':

    ginv
The following objects are masked from 'package:agricolae':

    lastC, order.group, tapply.stat
with(dados,fat2.dic(F1,F2,resp, mcomp="tukey"))
------------------------------------------------------------------------
Legenda:
FATOR 1:  F1 
FATOR 2:  F2 
------------------------------------------------------------------------


Quadro da analise de variancia
------------------------------------------------------------------------
        GL     SQ QM      Fc    Pr>Fc
F1       1  11696  2  2.7579 0.106542
F2       3  84754  3  6.6615 0.001272
F1*F2    3 212960  5 16.7382 0.000001
Residuo 32 135712  4                 
Total   39 445123  1                 
------------------------------------------------------------------------
CV = 38.68 %

------------------------------------------------------------------------
Teste de normalidade dos residuos (Shapiro-Wilk)
valor-p:  0.3125183 
De acordo com o teste de Shapiro-Wilk a 5% de significancia, os residuos podem ser considerados normais.
------------------------------------------------------------------------



Interacao significativa: desdobrando a interacao
------------------------------------------------------------------------

Desdobrando  F1  dentro de cada nivel de  F2 
------------------------------------------------------------------------
------------------------------------------------------------------------
Quadro da analise de variancia
------------------------------------------------------------------------
              GL       SQ        QM      Fc  Pr.Fc
F2             3  84754.5  28251.50  6.6615 0.0013
F1:F2 Plantio  1  26112.1  26112.10  6.1571 0.0185
F1:F2 R1+15    1  70896.4  70896.40 16.7169  3e-04
F1:F2 V1+15    1  15288.1  15288.10  3.6048 0.0667
F1:F2 V3+15    1 112360.0 112360.00 26.4938      0
Residuo       32 135712.0   4241.00               
Total         39 445123.1  11413.41               
------------------------------------------------------------------------



 F1  dentro do nivel  Plantio  de  F2 
------------------------------------------------------------------------
Teste de Tukey
------------------------------------------------------------------------
Grupos Tratamentos Medias
a    1   272.8 
 b   2   170.6 
------------------------------------------------------------------------


 F1  dentro do nivel  R1+15  de  F2 
------------------------------------------------------------------------
Teste de Tukey
------------------------------------------------------------------------
Grupos Tratamentos Medias
a    1   236.6 
 b   2   68.2 
------------------------------------------------------------------------


 F1  dentro do nivel  V1+15  de  F2 

De acordo com o teste F, as medias desse fator sao estatisticamente iguais.
------------------------------------------------------------------------
  Niveis Medias
1      1  140.4
2      2   62.2
------------------------------------------------------------------------


 F1  dentro do nivel  V3+15  de  F2 
------------------------------------------------------------------------
Teste de Tukey
------------------------------------------------------------------------
Grupos Tratamentos Medias
a    2   304 
 b   1   92 
------------------------------------------------------------------------



Desdobrando  F2  dentro de cada nivel de  F1 
------------------------------------------------------------------------
------------------------------------------------------------------------
Quadro da analise de variancia
------------------------------------------------------------------------
         GL       SQ       QM      Fc  Pr.Fc
F1        1  11696.4 11696.40  2.7579 0.1065
F2:F1 IN  3 105043.8 35014.58  8.2562  3e-04
F2:F1 NI  3 192671.0 64223.65 15.1435      0
Residuo  32 135712.0  4241.00               
Total    39 445123.1 11413.41               
------------------------------------------------------------------------



 F2  dentro do nivel  IN  de  F1 
------------------------------------------------------------------------
Teste de Tukey
------------------------------------------------------------------------
Grupos Tratamentos Medias
a    1   272.8 
ab   2   236.6 
 bc      3   140.4 
  c      4   92 
------------------------------------------------------------------------


 F2  dentro do nivel  NI  de  F1 
------------------------------------------------------------------------
Teste de Tukey
------------------------------------------------------------------------
Grupos Tratamentos Medias
a    4   304 
 b   1   170.6 
 b   2   68.2 
 b   3   62.2 
------------------------------------------------------------------------

Analisando o quadro da ánalise de variância para o desdobramento do fator 1 dentro dos níveis de fator 2 (épocas) podemos observar que apenas a interação de F1 com a época de aplicação V1+15 apresentou um valor de F maior que 0,05, não sendo estatísticamente significativa.

Ao analisar o teste de Tukey para cada desdobramento individual de F1 dentro dos níveis de F2, observamos que o tratamento inoculado apresentou as maiores médias para três épocas e, na época V3+15 a média para o tratamento não inculado foi maior. Sendo assim, a combinação entre a época V3+15 com a não inoculação apresentou o meior número médio de nódulos.

O desdobramento das épocas dentro do fator inoculação: Dentro do tratamento com sementes inoculadas as aplicações nas épocas “Plantio” e “R1+15” apresentaram os maiores números médios de nódulos e não diferiram estatisticamente entre si. Para o tratamento com sementes não inoculadas apenas o número médio de nódulos para a aplicação na época “V3+15” foi estatisticamente diferente, sendo a maior média dentre as quatro épocas.