Avaliação do efeito de Bacillus alcalophilus na inibição do crescimento de Colletotrichum spp.

Autores

Prof. Dr. Walmes Zeviani

Débora Petermann

1 Sobre o experimento

Introdução

Este estudo teve como objetivo avaliar o impacto de diferentes tempos de cultivo (24 ou 48 horas) da bactéria Bacillus alcalophilus, bem como a separação entre a biomassa e o sobrenadante dessa bactéria, no processo de inibição do crescimento micelial de duas espécies de fungos: Colletotrichum nymphaeae e Colletotrichum chrysophilum, ambas sensíveis e com sensibilidade reduzida a fungicidas. O diâmetro da colônia foi a variável analisada, expressa em milímetros. Os experimentos foram conduzidos no Laboratório de Epidemiologia para o Manejo Integrado de Doenças de Plantas (LEMID) sob a supervisão da professora doutora Louise Larissa May De Mio.

Materiais e Métodos

Os experimentos foram conduzidos em um delineamento inteiramente casualizado (DIC) com 5 tratamentos e 4 isolados, totalizando 20 combinações experimentais, cada uma com 5 repetições. Os tratamentos utilizados foram:

  1. (24SBa) Sobrenadante da bactéria B. alcalophilus cultivada no laboratório por 24 horas;
  2. (24BBa) Biomassa da bactéria B. alcalophilus cultivada no laboratório por 24 horas;
  3. (48SBa) Sobrenadante da bactéria B. alcalophilus cultivada no laboratório por 48 horas;
  4. (48BBa) Biomassa da bactéria B. alcalophilus cultivada no laboratório por 48 horas;
  5. (Controle) Testemunha composta por água esterilizada.

Os isolados utilizados foram:

  • MdCn-CA32M: C. nymphaeae sensível a fungicidas;
  • MdCn-179: C. nymphaeae sensibilidade reduzida a fungicidas;
  • MdCc-Col33: C. chrysophillum sensível a fungicidas;
  • MdCc-134: C. chrysophillum sensibilidade reduzida a fungicidas.

Análise Estatística

A análise estatística foi realizada em duas etapas. Primeiro, os dados foram analisados separadamente para os Experimentos 1 e 2. Em seguida, uma análise fatorial foi conduzida, considerando dois fatores principais: tratamentos (os 5 listados acima) e isolados (comparando apenas entre dois isolados de C. nymphaeae e dois isolados de C. chrysophillum). O objetivo foi avaliar como esses fatores afetaram o diâmetro das colônias dos fungos.

O modelo estatístico para os dados obtidos a partir de um experimento em delineamento inteiramente casualizado com 5 repetições, que avaliou 2 fatores em forma completamente cruzada está especificado a seguir.

A variável resposta, que é o diâmetro da colônia, pode ser representada por \(Y_{ijk}\), onde:

  • \(i\) representa o nível do primeiro fator (isolado de Colletotrichum) com \(i = 1, \ldots, 4\).
  • \(j\) representa o nível do segundo fator (aplicação de Bacillus alcalophilus) com \(j = 1, \ldots, 5\).
  • \(k\) representa o número da repetição com \(k = 1, \ldots, 5\).

O modelo estatístico para esses dados é \[ Y_{ijk} = \mu + \tau_i + \beta_j + (\tau\beta)_{ij} + \epsilon_{ijk} \] em que

  • \(\mu\) é uma constante comum a todas as observações.
  • \(\tau_i\) é o efeito do \(i\)-ésimo nível do primeiro fator (isolado de Colletotrichum).
  • \(\beta_j\) é o efeito do \(j\)-ésimo nível do segundo fator (aplicação de Bacillus alcalophilus).
  • \((\tau\beta)_{ij}\) é a interação entre o \(i\)-ésimo nível do primeiro fator e o \(j\)-ésimo nível do segundo fator.
  • \(\epsilon_{ijk}\) é o erro aleatório associado à observação \(Y_{ijk}\).

Este modelo apresenta os seguintes pressupostos:

  1. Normalidade dos erros (\(\epsilon_{ijk}\)): Assume-se que os erros aleatórios seguem uma distribuição normal com média zero e variância constante para cada combinação de níveis dos fatores. Isso pode ser expresso como \(\epsilon_{ijk} \sim N(0, \sigma^2)\), onde \(\sigma^2\) é a variância dos erros.
  2. Independência dos erros (\(\epsilon_{ijk}\)): Assume-se que os erros aleatórios são independentes entre as diferentes combinações de níveis dos fatores e repetições.
  3. Homogeneidade de variâncias: Pressupõe-se que a variância dos erros, \(\sigma^2\), seja constante para todas as combinações de níveis dos fatores e repetições.

Estes pressupostos são fundamentais para a interpretação e inferência a partir do modelo estatístico e serão verificados por meio de análise gráfica dos resíduos de resíduos. Havendo indicações de violação dos pressupostos pela análise integrada dos gráficos, medidas corretivas serão aplicadas como transformação da variável resposta (via Box-Cox) ou eliminação de valores discrepantes.

Uma vez que os pressupostos forem atendidos, o efeito da interação será avaliado pela estatística F do quadro de ANOVA, seguindo para os efeitos principais dos dois fatores. Quando alguma das hipóteses do quadro de ANOVA for rejeitada, será feito estudo detalhado empregando comparação múltipla de médias pelo teste de Tukey. Para todos os procedimentos inferenciais, o nível de significância é de 0.05.

2 Análise dos dados

Código
#-----------------------------------------------------------------------
# Pacotes.

library(car)
library(emmeans)
library(tidyverse)

#-----------------------------------------------------------------------
# Importação e preparo.

# Importação.
# readxl::excel_sheets("analises_artigo_mestrado.xlsx")
tb <- readxl::read_excel(
    "analises_artigo_mestrado.xlsx",
    sheet = "Tcc-micel ")

# Nomes em caixa baixa.
tb <- tb |>
    rename_with(tolower) |>
    rename("diameter" = "colony diameter (mm)")
# str(tb)

# Alguns erros de digitação da `specie` precisam ser corrigidos.
tb_fix <-
    tb |>
    count(isolated, species, phenotype, sort = TRUE) |>
    slice_head(n = 4)

# Corrigindo valores de `specie` e `phenotype` para `isolated`.
tb <-
    tb |>
    select(-species, -phenotype) |>
    left_join(tb_fix[, 1:3], by = "isolated")

# Variáveis `specie` e `phenotype` são características do isolado.
tb |>
    count(isolated, species, phenotype, sort = TRUE)
# A tibble: 4 × 4
  isolated    species          phenotype               n
  <chr>       <chr>            <chr>               <int>
1 MdCc-Col134 C. chrysophillum Reduced sensitivity    50
2 MdCc-Col33  C. chrysophillum Sensitive              50
3 MdCn-179    C. nymphaeae     Reduced sensitivity    50
4 MdCn-CA32M  C. nymphaeae     Sensitive              50
Código
# Variável `experiment` é a repetição do experimento.
tb |>
    xtabs(formula = ~treatment + experiment)
         experiment
treatment  1  2
  24BBa   20 20
  24SBa   20 20
  48BBa   20 20
  48SBa   20 20
  Control 20 20
Código
# A frequência de cada combinação experimental.
tb |>
    xtabs(formula = ~experiment + isolated + treatment) |>
    ftable()
                       treatment 24BBa 24SBa 48BBa 48SBa Control
experiment isolated                                             
1          MdCc-Col134               5     5     5     5       5
           MdCc-Col33                5     5     5     5       5
           MdCn-179                  5     5     5     5       5
           MdCn-CA32M                5     5     5     5       5
2          MdCc-Col134               5     5     5     5       5
           MdCc-Col33                5     5     5     5       5
           MdCn-179                  5     5     5     5       5
           MdCn-CA32M                5     5     5     5       5
Código
# Criar variáveis para indicar o tempo e a fonte do material inibidor.
tb <-
    tb |>
    mutate(
        time = ifelse(treatment == "Control",
                      0,
                      str_extract(treatment, "^[0-9]+")),
        time = as.integer(time),
        font = ifelse(treatment == "Control",
                      "Control",
                      str_extract(treatment, ".{3}$")),
        font = fct_relevel(font, "Control")
    )

# tb |>
#     xtabs(formula = ~time + font)

# Passa para fator.
tb <- tb |>
    mutate_at(c("treatment", "isolated", "experiment"), factor)
Código
#-----------------------------------------------------------------------
# Visualização.

ggplot(data = tb,
       mapping = aes(x = treatment, y = diameter,
                     color = isolated, group = isolated)) +
    facet_grid(facets = ~experiment) +
    geom_point() +
    stat_summary(fun = "mean", geom = "line")

Código
# ggplot(data = tb,
#        mapping = aes(x = time, y = diameter,
#                      color = isolated)) +
#     facet_grid(facets = font ~ experiment) +
#     geom_point() +
#     stat_summary(fun = "mean", geom = "line")

# NOTE: Sem problemas aparentes em relação a observações extremas.

#-----------------------------------------------------------------------
# A pesquisadora deseja que os experimentos sejam analisados
# separadamente. Além disso, em cada experimento é para comparar apenas
# isolados que sejam de mesma espécie.

2.1 Experimento 1

Código
#-----------------------------------------------------------------------
# Análise do experimento 1. --------------------------------------------

# Filtra para um dos experimentos.
tbi <- tb |>
    filter(experiment == "1")

# Ajuste do modelo aos dados.
m0 <- lm(diameter ~ treatment * isolated, data = tbi)

# Exame gráfico integrado dos pressupostos.
par(mfrow = c(2, 2))
plot(m0)

Código
layout(1)

# car::residualPlots(m0)
# car::qqPlot(m0)

# Quadro de análise de variância.
anova(m0)
Analysis of Variance Table

Response: diameter
                   Df Sum Sq Mean Sq F value    Pr(>F)    
treatment           4 212.79  53.197 19.1065 4.612e-11 ***
isolated            3 483.44 161.146 57.8778 < 2.2e-16 ***
treatment:isolated 12  60.06   5.005  1.7976   0.06246 .  
Residuals          80 222.74   2.784                      
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Código
# Remove a interação já que foi não significativa.
m1 <- update(m0, . ~ . - treatment:isolated)
anova(m0, m1)
Analysis of Variance Table

Model 1: diameter ~ treatment * isolated
Model 2: diameter ~ treatment + isolated
  Res.Df    RSS  Df Sum of Sq      F  Pr(>F)  
1     80 222.74                               
2     92 282.80 -12   -60.059 1.7976 0.06246 .
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Código
# Comparar entre isolados de mesma espécie.
tb_iso <-
    tbi |>
    distinct(species, isolated) |>
    with({
        split(as.character(isolated), species)
    })
tb_iso
$`C. chrysophillum`
[1] "MdCc-Col33"  "MdCc-Col134"

$`C. nymphaeae`
[1] "MdCn-CA32M" "MdCn-179"  
Código
# Para armazenar as comparações de médias.
tb_means <- list(isolated = NULL, treatment = NULL)

# Aplica o teste de comparação de médias separado por espécie.
tb_means$isolated[["C. nymphaeae"]] <-
    emmeans(m1,
            specs = ~isolated,
            at = list(isolated = tb_iso[["C. nymphaeae"]])) |>
    multcomp::cld(Letters = letters, reversed = TRUE)
tb_means$isolated[["C. chrysophillum"]] <-
    emmeans(m1,
            specs = ~isolated,
            at = list(isolated = tb_iso[["C. chrysophillum"]])) |>
    multcomp::cld(Letters = letters, reversed = TRUE)
tb_means$isolated
$`C. nymphaeae`
 isolated   emmean    SE df lower.CL upper.CL .group
 MdCn-CA32M   29.0 0.351 92     28.3     29.7  a    
 MdCn-179     23.8 0.351 92     23.1     24.5   b   

Results are averaged over the levels of: treatment 
Confidence level used: 0.95 
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. 

$`C. chrysophillum`
 isolated    emmean    SE df lower.CL upper.CL .group
 MdCc-Col134   29.0 0.351 92     28.3     29.7  a    
 MdCc-Col33    28.7 0.351 92     28.0     29.4  a    

Results are averaged over the levels of: treatment 
Confidence level used: 0.95 
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. 
Código
# Junta os resultados em um única tabela para fazer os gráficos.
tb_means$isolated <-
    tb_means$isolated |>
    map(as.data.frame) |>
    bind_rows(.id = "species") |>
    mutate(.group = trimws(.group))
tb_means$isolated
           species    isolated  emmean        SE df lower.CL upper.CL .group
1     C. nymphaeae  MdCn-CA32M 28.9700 0.3506509 92 28.27358 29.66642      a
2     C. nymphaeae    MdCn-179 23.8308 0.3506509 92 23.13438 24.52722      b
3 C. chrysophillum MdCc-Col134 29.0384 0.3506509 92 28.34198 29.73482      a
4 C. chrysophillum  MdCc-Col33 28.6904 0.3506509 92 27.99398 29.38682      a
Código
ggplot(data = tb_means$isolated,
       mapping = aes(x = isolated, y = emmean)) +
    facet_wrap(facets = ~species, scales = "free_x") +
    geom_errorbar(mapping = aes(ymin = lower.CL, ymax = upper.CL),
                  width = 0) +
    geom_point() +
    geom_text(mapping = aes(label = sprintf("%0.2f %s", emmean, .group)),
              hjust = 0, nudge_x = 0.05) +
    labs(x = "Isolated",
         y = "Colony diameter (mm)")

Código
# Comparação entre os tratamentos.
tb_means$treatment <-
    emmeans(m1,
            specs = ~treatment) |>
    multcomp::cld(Letters = letters, reversed = TRUE) |>
    as.data.frame() |>
    mutate(.group = trimws(.group))
tb_means$treatment
  treatment  emmean        SE df lower.CL upper.CL .group
2   Control 30.3590 0.3920397 92 29.58038 31.13762      a
4     24BBa 27.5510 0.3920397 92 26.77238 28.32962      b
3     48BBa 27.3610 0.3920397 92 26.58238 28.13962      b
1     48SBa 26.8375 0.3920397 92 26.05888 27.61612      b
5     24SBa 26.0535 0.3920397 92 25.27488 26.83212      b
Código
ggplot(data = tb_means$treatment,
       mapping = aes(x = treatment, y = emmean)) +
    geom_errorbar(mapping = aes(ymin = lower.CL, ymax = upper.CL),
                  width = 0) +
    geom_point() +
    geom_text(mapping = aes(label = sprintf("%0.1f %s", emmean, .group)),
              hjust = 0, nudge_x = 0.05) +
    labs(x = "Treatment",
         y = "Colony diameter (mm)")

2.2 Experimento 2

Código
#-----------------------------------------------------------------------
# Análise do experimento 2. --------------------------------------------

# Filtra para um dos experimentos.
tbi <- tb |>
    filter(experiment == "2")

# Ajuste do modelo aos dados.
m0 <- lm(diameter ~ treatment * isolated, data = tbi)

# Exame gráfico integrado dos pressupostos.
par(mfrow = c(2, 2))
plot(m0)

Código
layout(1)

# car::residualPlots(m0)
# car::qqPlot(m0)

# Quadro de análise de variância.
anova(m0)
Analysis of Variance Table

Response: diameter
                   Df Sum Sq Mean Sq F value    Pr(>F)    
treatment           4 375.71  93.927 25.0843 1.765e-13 ***
isolated            3 385.79 128.596 34.3430 2.289e-14 ***
treatment:isolated 12  54.57   4.547  1.2144     0.288    
Residuals          80 299.56   3.744                      
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Código
# Remove a interação já que foi não significativa.
m1 <- update(m0, . ~ . - treatment:isolated)
anova(m0, m1)
Analysis of Variance Table

Model 1: diameter ~ treatment * isolated
Model 2: diameter ~ treatment + isolated
  Res.Df    RSS  Df Sum of Sq      F Pr(>F)
1     80 299.56                            
2     92 354.12 -12   -54.568 1.2144  0.288
Código
# Comparar entre isolados de mesma espécie.
tb_iso <-
    tbi |>
    distinct(species, isolated) |>
    with({
        split(as.character(isolated), species)
    })
tb_iso
$`C. chrysophillum`
[1] "MdCc-Col33"  "MdCc-Col134"

$`C. nymphaeae`
[1] "MdCn-CA32M" "MdCn-179"  
Código
# Para armazenar as comparações de médias.
tb_means <- list(isolated = NULL, treatment = NULL)

# Aplica o teste de comparação de médias separado por espécie.
tb_means$isolated[["C. nymphaeae"]] <-
    emmeans(m1,
            specs = ~isolated,
            at = list(isolated = tb_iso[["C. nymphaeae"]])) |>
    multcomp::cld(Letters = letters, reversed = TRUE)
tb_means$isolated[["C. chrysophillum"]] <-
    emmeans(m1,
            specs = ~isolated,
            at = list(isolated = tb_iso[["C. chrysophillum"]])) |>
    multcomp::cld(Letters = letters, reversed = TRUE)
tb_means$isolated
$`C. nymphaeae`
 isolated   emmean    SE df lower.CL upper.CL .group
 MdCn-CA32M   33.0 0.392 92     32.2     33.8  a    
 MdCn-179     28.1 0.392 92     27.3     28.9   b   

Results are averaged over the levels of: treatment 
Confidence level used: 0.95 
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. 

$`C. chrysophillum`
 isolated    emmean    SE df lower.CL upper.CL .group
 MdCc-Col134   32.8 0.392 92       32     33.5  a    
 MdCc-Col33    31.8 0.392 92       31     32.6  a    

Results are averaged over the levels of: treatment 
Confidence level used: 0.95 
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. 
Código
# Junta os resultados em um única tabela para fazer os gráficos.
tb_means$isolated <-
    tb_means$isolated |>
    map(as.data.frame) |>
    bind_rows(.id = "species") |>
    mutate(.group = trimws(.group))
tb_means$isolated
           species    isolated  emmean        SE df lower.CL upper.CL .group
1     C. nymphaeae  MdCn-CA32M 32.9880 0.3923866 92 32.20869 33.76731      a
2     C. nymphaeae    MdCn-179 28.0968 0.3923866 92 27.31749 28.87611      b
3 C. chrysophillum MdCc-Col134 32.7560 0.3923866 92 31.97669 33.53531      a
4 C. chrysophillum  MdCc-Col33 31.8004 0.3923866 92 31.02109 32.57971      a
Código
ggplot(data = tb_means$isolated,
       mapping = aes(x = isolated, y = emmean)) +
    facet_wrap(facets = ~species, scales = "free_x") +
    geom_errorbar(mapping = aes(ymin = lower.CL, ymax = upper.CL),
                  width = 0) +
    geom_point() +
    geom_text(mapping = aes(label = sprintf("%0.2f %s", emmean, .group)),
              hjust = 0, nudge_x = 0.05) +
    labs(x = "Isolated",
         y = "Colony diameter (mm)")

Código
# Comparação entre os tratamentos.
tb_means$treatment <-
    emmeans(m1,
            specs = ~treatment) |>
    multcomp::cld(Letters = letters, reversed = TRUE) |>
    as.data.frame() |>
    mutate(.group = trimws(.group))
tb_means$treatment
  treatment  emmean        SE df lower.CL upper.CL .group
2   Control 34.0680 0.4387015 92  33.1967  34.9393      a
4     24BBa 32.0325 0.4387015 92  31.1612  32.9038      b
3     48BBa 31.9185 0.4387015 92  31.0472  32.7898      b
1     48SBa 30.9130 0.4387015 92  30.0417  31.7843      b
5     24SBa 28.1195 0.4387015 92  27.2482  28.9908      c
Código
ggplot(data = tb_means$treatment,
       mapping = aes(x = treatment, y = emmean)) +
    geom_errorbar(mapping = aes(ymin = lower.CL, ymax = upper.CL),
                  width = 0) +
    geom_point() +
    geom_text(mapping = aes(label = sprintf("%0.1f %s", emmean, .group)),
              hjust = 0, nudge_x = 0.05) +
    labs(x = "Treatment",
         y = "Colony diameter (mm)")

Código
#-----------------------------------------------------------------------