library (tidyverse)
library(tidyverse)
library(readxl)
library(ggplot2)
fung <- read_excel("dados-diversos.xlsx", "fungicida_vaso")Anova 2 fatores
Fazendo anova para mais de um fator
Carregar dados : fungicida_vaso: 2 fungicidas x 2 doses (quando é duas doses fica como fator qualitativo).
n de repetições: 5
n-sp : numero de espigas
dis-sp: numero de espigas doentes
Criando a variável percentual de espigas
mutate pra criar uma outra coluna para incidência
fung2 <- fung |>
  mutate(inc = dis_sp / n_sp * 100)criando um gráfico para visualizar
com esse grafico conseguimos visualizar que provavelmente tem interação fungicida ~ dose
fung2 |>
ggplot(aes(x= treat, y =inc))+
  geom_jitter(width = 0.1)+
  facet_wrap(~dose)
anova: considerando dois fatores qualitativos
interpretando anova: todos as fontes de variação foram significativas
m1 <- aov(inc ~ treat*dose, data = fung2)
summary(m1)            Df Sum Sq Mean Sq F value   Pr(>F)    
treat        1  919.5   919.5   24.31 0.000151 ***
dose         1  920.9   920.9   24.34 0.000150 ***
treat:dose   1  747.7   747.7   19.76 0.000407 ***
Residuals   16  605.3    37.8                     
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
conferindo premissas com pacote performance
dados não foram homogêneos e nem homocedasticidade
library(performance)
check_normality(m1)Warning: Non-normality of residuals detected (p = 0.018).
check_heteroscedasticity(m1)Warning: Heteroscedasticity (non-constant error variance) detected (p < .001).
library(DHARMa)
plot(simulateResiduals(m1))
tranformando dados > Que transformação usa pra percentagem > log +0.5
conseguiu ter homcedasticidade
como a normalidade deu 0.05 consegue ainda fazer, o que é mais importante é a homocedasticidade
m1 <- aov(log(inc+0.5) ~ treat*dose, data = fung2)
summary(m1)            Df Sum Sq Mean Sq F value  Pr(>F)   
treat        1 12.928  12.928  13.980 0.00179 **
dose         1  5.663   5.663   6.124 0.02491 * 
treat:dose   1  5.668   5.668   6.129 0.02486 * 
Residuals   16 14.796   0.925                   
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
check_normality(m1)Warning: Non-normality of residuals detected (p = 0.050).
check_heteroscedasticity(m1)OK: Error variance appears to be homoscedastic (p = 0.180).
plot(simulateResiduals(m1))
library(emmeans)#comparando médias, médias pra cada interação
means_m1 <- emmeans(m1, ~ treat | dose,
                    type= "response")
means_m1dose = 0.5:
 treat        response     SE df lower.CL upper.CL
 Ionic liquid    27.05 11.847 16   10.570    68.05
 Tebuconazole     1.21  0.737 16    0.188     3.76
dose = 2.0:
 treat        response     SE df lower.CL upper.CL
 Ionic liquid     3.10  1.412 16    1.065     7.77
 Tebuconazole     1.42  0.925 16    0.194     4.83
Confidence level used: 0.95 
Intervals are back-transformed from the log(mu + 0.5) scale 
library(multcompView)
library(multcomp)
cld(means_m1)dose = 0.5:
 treat        response     SE df lower.CL upper.CL .group
 Tebuconazole     1.21  0.737 16    0.188     3.76  1    
 Ionic liquid    27.05 11.847 16   10.570    68.05   2   
dose = 2.0:
 treat        response     SE df lower.CL upper.CL .group
 Tebuconazole     1.42  0.925 16    0.194     4.83  1    
 Ionic liquid     3.10  1.412 16    1.065     7.77  1    
Confidence level used: 0.95 
Intervals are back-transformed from the log(mu + 0.5) scale 
Tests are performed on the log scale 
significance level used: alpha = 0.05 
NOTE: If two or more means share the same grouping letter,
      then we cannot show them to be different.
      But we also did not show them to be the same. 
#agora ao contrario
means_m1 <- emmeans(m1, ~ dose | treat,
                    type= "response")
means_m1treat = Ionic liquid:
 dose response     SE df lower.CL upper.CL
  0.5    27.05 11.847 16   10.570    68.05
  2.0     3.10  1.412 16    1.065     7.77
treat = Tebuconazole:
 dose response     SE df lower.CL upper.CL
  0.5     1.21  0.737 16    0.188     3.76
  2.0     1.42  0.925 16    0.194     4.83
Confidence level used: 0.95 
Intervals are back-transformed from the log(mu + 0.5) scale 
library(multcompView)
library(multcomp)
cld(means_m1)treat = Ionic liquid:
 dose response     SE df lower.CL upper.CL .group
  2.0     3.10  1.412 16    1.065     7.77  1    
  0.5    27.05 11.847 16   10.570    68.05   2   
treat = Tebuconazole:
 dose response     SE df lower.CL upper.CL .group
  0.5     1.21  0.737 16    0.188     3.76  1    
  2.0     1.42  0.925 16    0.194     4.83  1    
Confidence level used: 0.95 
Intervals are back-transformed from the log(mu + 0.5) scale 
Tests are performed on the log scale 
significance level used: alpha = 0.05 
NOTE: If two or more means share the same grouping letter,
      then we cannot show them to be different.
      But we also did not show them to be the same. 
library(agricolae)
cv.model(m1)[1] 65.04818
Anova com dois fatores para dados sem normalidade
library(readxl)
library(tidyverse)
micelial <- read_excel("dados-diversos.xlsx", "fungicida_vaso")
micelial2 <- micelial |>
  mutate(inc = inf_seeds/n_seeds*100, rank_inc = rank(inc)) #transforma os dados da variavel resposta (inc)
rank_anova <- aov(rank_inc ~ treat*dose, data = micelial2)
summary(rank_anova)              Df Sum Sq Mean Sq F value  Pr(>F)   
treat        1 220.00  220.00  14.204 0.00168 **
dose         1 105.34  105.34   6.801 0.01904 * 
treat:dose   1  80.34   80.34   5.187 0.03684 * 
Residuals   16 247.82   15.49                   
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
library(emmeans)
means_rank <- emmeans(rank_anova, ~ treat | dose)
library(multcompView)
library(multcomp)
cld(means_rank)  #não usar as médias daqui, colocar médias reais e só usar a separação das médias . Se não der siginificativo a interação vc pode usar a anova sozinha, pra cada fator ou faz kruskal normal que separa pra um fator. dose = 0.5:
 treat        emmean   SE df lower.CL upper.CL .group
 Tebuconazole   6.90 1.76 16     3.17     10.6  1    
 Ionic liquid  18.00 1.76 16    14.27     21.7   2   
dose = 2.0:
 treat        emmean   SE df lower.CL upper.CL .group
 Tebuconazole   6.75 1.97 16     2.58     10.9  1    
 Ionic liquid   9.75 1.61 16     6.34     13.2  1    
Confidence level used: 0.95 
significance level used: alpha = 0.05 
NOTE: If two or more means share the same grouping letter,
      then we cannot show them to be different.
      But we also did not show them to be the same. 
fazendo outra coisa
library(MASS)
insects <- InsectSprays
b <- boxcox(lm(InsectSprays$count+0.1 ~1)) #depende da tabelinha do lang vc sabe qual é a transformação pra ver quan é o lambda
lambda  <- b$x[which.max(b$y)]
lambda[1] 0.4242424
insects$count2 <- (insects$count ^ lambda - 1) / lambda
insects$count2 [1]  3.903635  3.024469  6.043993  4.864268  4.864268  4.407118  3.903635
 [8]  6.557185  5.484274  6.043993  4.864268  4.640760  4.161975  5.484274
[15]  6.219699  4.161975  5.285168  4.864268  5.484274  5.484274  5.863153
[22]  6.219699  3.024469  4.640760 -2.357143  0.000000  3.024469  0.805831
[29]  1.399509  0.000000  0.805831  0.000000  1.399509 -2.357143  0.000000
[36]  1.887150  1.399509  2.308577  4.407118  2.683787  1.887150  1.399509
[43]  2.308577  2.308577  2.308577  2.308577  0.805831  1.887150  1.399509
[50]  2.308577  1.399509  2.308577  1.399509  2.683787  0.000000  0.000000
[57]  1.399509  0.805831  2.683787  1.887150  4.161975  3.629951  5.078760
[64]  6.390651  5.078760  5.285168  4.640760  3.903635  7.033117  7.033117
[71]  6.719601  4.640760
hist(insects$count)
#quando eu transformar os dados pra ver se tem normalidade ou não eu tenho que além de fazer o teste de heterocedasticidade visualizar a normalidade dos gráficos.
#no pacote agricolae colocar um ponto de interrogação pra ver qual o teste para separar as médias.