Avaliação do efeito de produtos biológicos e químicos na inibição do crescimento micelial de Colletotrichum spp.

Autores

Prof. Dr. Walmes Zeviani

Débora Petermann

1 Sobre o experimento

Introdução

Neste estudo, realizamos experimentos para avaliar o efeito de diferentes produtos biológicos e dois produtos químicos quando misturados no meio de cultura e diretamente em contato com os fungos Colletotrichum nymphaeae e C. chrysophilum, incluindo cepas sensíveis e com sensibilidade reduzida a fungicidas. A variável resposta analisada foi o diâmetro da colônia, expresso em milímetros.

Materiais e Métodos

Os experimentos 1 e 2 foram conduzidos no Laboratório de Epidemiologia para o Manejo Integrado de Doenças de Plantas (LEMID) pela aluna de mestrado Débora Petermann, sob orientação da professora doutora Louise Larissa May De Mio.

  • Experimento 1:
    • Data de montagem: 15 de fevereiro de 2022.
    • Data de avaliação: 22 de fevereiro de 2022.
    • Estrutura do experimento: 9 tratamentos, 4 isolados e 4 repetições.
  • Experimento 2:
    • Data de montagem: 23 de fevereiro de 2022.
    • Data de avaliação: 02 de março de 2022.
    • Estrutura do experimento: 9 tratamentos, 4 isolados e 4 repetições.

Foram utilizados os seguintes tratamentos:

  1. Bacillus amyloliquefaciens na dosagem de 0,5g/L (Bam 0,5g/L) - produto biológico.
  2. Bacillus amyloliquefaciens na dosagem de 1,0g/L (Bam 1,0g/L) - produto biológico.
  3. Bacillus amyloliquefaciens na dosagem de 2,0g/L (Bam 2,0g/L) - produto biológico.
  4. Sobrenadante de Bacillus alcalophilus (SBa) - produto biológico.
  5. Biomassa de Bacillus alcalophilus (BBa) - produto biológico.
  6. Bacillus subtilis (Bs) - produto biológico.
  7. Delan - produto químico.
  8. CabrioTop - produto químico.
  9. Testemunha composta por água esterilizada (Controle).

Os isolados utilizados foram:

  • MdCn-142: C. nymphaeae sensível a fungicida.
  • MdCn-181: C. nymphaeae sensibilidade reduzida a fungicida.
  • MdCc-110: C. chrysophilum sensível a fungicida.
  • MdCc-55PR: C. chrysophilum sensibilidade reduzida a fungicida.

Análise Estatística

O objetivo da análise estatística é realizar uma análise fatorial, onde um dos fatores é composto pelos tratamentos (os 9) e o segundo fator pelos isolados (os 4). A análise focará na comparação entre os dois isolados de C. nymphaeae (sensível e sensibilidade reduzida) e os dois isolados de C. chrysophilum (sensível e sensibilidade reduzida). Além disso, os experimentos 1 e 2 serão analisados separadamente.

O crescimento apresentou vários zeros indicando que não houve germinação. Para contornar o muito provável afastamento dos pressupostos decorrente do excesso de valores iguais a zero, optou-se por cortar os valores em classe e análisar como resposta de sobreviência, ainda mantendo a suposição de distribuição normal. Dessa maneira, valores iguais a zero ou muito próximo de, que caírem na primeira classe, serão considerados censuras intervalares. Valores positivos que estiverem além da primeira classe, não serão considerados censurados. Para amplitude de classe considerou-se 2.5 mm.

Ao final, pode-se apresentar as médias amostrais de diâmetro ao lado das estimativas obtidas com o modelo de sobreviência.

2 Análise dos dados

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

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

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

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

# Nomes em caixa baixa.
tb <- tb |>
    rename_with(tolower) |>
    rename("diameter" = "colony diameter (mm)")
str(tb)
tibble [288 × 7] (S3: tbl_df/tbl/data.frame)
 $ experiment: num [1:288] 1 1 1 1 1 1 1 1 1 1 ...
 $ treatment : chr [1:288] "Bam 0,5g/L" "Bam 0,5g/L" "Bam 0,5g/L" "Bam 0,5g/L" ...
 $ isolated  : chr [1:288] "MdCn-181" "MdCn-181" "MdCn-181" "MdCn-181" ...
 $ species   : chr [1:288] "C. nymphaeae" "C. nymphaeae" "C. nymphaeae" "C. nymphaeae" ...
 $ phenotype : chr [1:288] "Reduced sensitivity" "Reduced sensitivity" "Reduced sensitivity" "Reduced sensitivity" ...
 $ repetition: num [1:288] 1 2 3 4 1 2 3 4 1 2 ...
 $ diameter  : num [1:288] 0 0 0 0 0 0 0 0 0 0 ...
Código
# 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-110  C. chrysophillum Sensitive              72
2 MdCc-55PR C. chrysophillum Reduced sensitivity    72
3 MdCn-142  C. nymphaeae     Sensitive              72
4 MdCn-181  C. nymphaeae     Reduced sensitivity    72
Código
# Variável `experiment` é a repetição do experimento.
tb |>
    xtabs(formula = ~treatment + experiment)
            experiment
treatment     1  2
  Bam 0,5g/L 16 16
  Bam 1,0g/L 16 16
  Bam 2,0g/L 16 16
  BBa        16 16
  Bs         16 16
  CabrioTop® 16 16
  Control    16 16
  Delan®     16 16
  SBa        16 16
Código
# A frequência de cada combinação experimental.
tb |>
    xtabs(formula = ~experiment + isolated + treatment) |>
    ftable()
                     treatment Bam 0,5g/L Bam 1,0g/L Bam 2,0g/L BBa Bs CabrioTop® Control Delan® SBa
experiment isolated                                                                                 
1          MdCc-110                     4          4          4   4  4          4       4      4   4
           MdCc-55PR                    4          4          4   4  4          4       4      4   4
           MdCn-142                     4          4          4   4  4          4       4      4   4
           MdCn-181                     4          4          4   4  4          4       4      4   4
2          MdCc-110                     4          4          4   4  4          4       4      4   4
           MdCc-55PR                    4          4          4   4  4          4       4      4   4
           MdCn-142                     4          4          4   4  4          4       4      4   4
           MdCn-181                     4          4          4   4  4          4       4      4   4
Código
# Passa para fator.
tb <- tb |>
    mutate_at(c("treatment", "isolated", "experiment"), factor)

# Coloca em um ordem mais lógica.
# levels(tb$treatment) |> dput()
tb$treatment <- fct_relevel(tb$treatment,
                            "Control",
                            "Bam 0,5g/L",
                            "Bam 1,0g/L",
                            "Bam 2,0g/L",
                            "BBa",
                            "SBa",
                            "Bs",
                            "Delan®",
                            "CabrioTop®")

#-----------------------------------------------------------------------
# Visualização.

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

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

Código
# ggplot(data = tb,
#        mapping = aes(x = isolated, y = diameter,
#                      color = experiment, group = experiment)) +
#     facet_wrap(facets = ~treatment) +
#     geom_jitter(width = 0.1) +
#     stat_summary(fun = "mean", geom = "line")

# ATTENTION: Presença de zeros que corresponde a esporos que não
# germinaram.

# Qual a frequência de zeros?
tb |>
    mutate(zero = ifelse(diameter == 0, "zero", "positive")) |>
    count(treatment, experiment, isolated, zero) |>
    pivot_wider(names_from = zero,
                values_from = n,
                values_fill = 0) |>
    arrange(zero) |>
    print(n = Inf)
# A tibble: 72 × 5
   treatment  experiment isolated  positive  zero
   <fct>      <fct>      <fct>        <int> <int>
 1 Control    1          MdCc-110         4     0
 2 Control    1          MdCc-55PR        4     0
 3 Control    1          MdCn-142         4     0
 4 Control    1          MdCn-181         4     0
 5 Control    2          MdCc-110         4     0
 6 Control    2          MdCc-55PR        4     0
 7 Bam 0,5g/L 2          MdCc-55PR        4     0
 8 BBa        1          MdCc-110         4     0
 9 BBa        1          MdCc-55PR        4     0
10 BBa        1          MdCn-142         4     0
11 BBa        1          MdCn-181         4     0
12 BBa        2          MdCc-55PR        4     0
13 SBa        1          MdCc-110         4     0
14 SBa        1          MdCc-55PR        4     0
15 SBa        1          MdCn-142         4     0
16 SBa        1          MdCn-181         4     0
17 SBa        2          MdCc-55PR        4     0
18 Bs         1          MdCc-55PR        4     0
19 Bs         2          MdCc-55PR        4     0
20 Delan®     1          MdCc-110         4     0
21 Delan®     1          MdCc-55PR        4     0
22 Delan®     1          MdCn-142         4     0
23 Delan®     1          MdCn-181         4     0
24 Delan®     2          MdCc-55PR        4     0
25 CabrioTop® 1          MdCc-55PR        4     0
26 CabrioTop® 2          MdCc-55PR        4     0
27 Control    2          MdCn-142         3     1
28 Control    2          MdCn-181         3     1
29 Bam 1,0g/L 2          MdCc-55PR        3     1
30 SBa        2          MdCc-110         3     1
31 SBa        2          MdCn-142         3     1
32 SBa        2          MdCn-181         3     1
33 Delan®     2          MdCc-110         3     1
34 Delan®     2          MdCn-142         3     1
35 Delan®     2          MdCn-181         3     1
36 BBa        2          MdCc-110         2     2
37 BBa        2          MdCn-181         2     2
38 Bs         1          MdCn-181         2     2
39 Bam 0,5g/L 1          MdCc-55PR        1     3
40 Bam 2,0g/L 2          MdCc-55PR        1     3
41 BBa        2          MdCn-142         1     3
42 Bs         2          MdCc-110         1     3
43 Bs         2          MdCn-142         1     3
44 Bs         2          MdCn-181         1     3
45 CabrioTop® 2          MdCc-110         1     3
46 CabrioTop® 2          MdCn-142         1     3
47 CabrioTop® 2          MdCn-181         1     3
48 Bam 0,5g/L 1          MdCc-110         0     4
49 Bam 0,5g/L 1          MdCn-142         0     4
50 Bam 0,5g/L 1          MdCn-181         0     4
51 Bam 0,5g/L 2          MdCc-110         0     4
52 Bam 0,5g/L 2          MdCn-142         0     4
53 Bam 0,5g/L 2          MdCn-181         0     4
54 Bam 1,0g/L 1          MdCc-110         0     4
55 Bam 1,0g/L 1          MdCc-55PR        0     4
56 Bam 1,0g/L 1          MdCn-142         0     4
57 Bam 1,0g/L 1          MdCn-181         0     4
58 Bam 1,0g/L 2          MdCc-110         0     4
59 Bam 1,0g/L 2          MdCn-142         0     4
60 Bam 1,0g/L 2          MdCn-181         0     4
61 Bam 2,0g/L 1          MdCc-110         0     4
62 Bam 2,0g/L 1          MdCc-55PR        0     4
63 Bam 2,0g/L 1          MdCn-142         0     4
64 Bam 2,0g/L 1          MdCn-181         0     4
65 Bam 2,0g/L 2          MdCc-110         0     4
66 Bam 2,0g/L 2          MdCn-142         0     4
67 Bam 2,0g/L 2          MdCn-181         0     4
68 Bs         1          MdCc-110         0     4
69 Bs         1          MdCn-142         0     4
70 CabrioTop® 1          MdCc-110         0     4
71 CabrioTop® 1          MdCn-142         0     4
72 CabrioTop® 1          MdCn-181         0     4

2.1 Análise de sobreviência para dados censurados

Código
#-----------------------------------------------------------------------
# Algumas combinações experimentais tem todas as repetições com zero de
# crescimento micelial. Isso corresponde a problemas com pressupostos.
# Seria interessante cortar em classes de crescimento micelial e
# analisar como uma resposta de sobreviência.

tb$diameter |>
    summary()
   Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
  0.000   0.000   4.678  10.458  14.450  56.000 
Código
# Faça um histograma da variável `diameter` por `experiment`.
ggplot(data = tb,
       aes(x = diameter)) +
    facet_wrap(facets = ~experiment, ncol = 1) +
    geom_histogram(breaks = seq(0,
                                max(tb$diameter) + 2.5,
                                by = 2.5),
                   color = "black") +
    geom_rug()

Código
#-----------------------------------------------------------------------
# Corta a resposta em classe.

# Seleciona variáveis até a coluna da resposta (caso tenha criado coisas
# a mais).
tb <- tb |>
    select(1:diameter)

# Cortar a resposta em classes.
binwidth <- 2.5
breaks <- seq(from = 0,
              to = max(tb$diameter) + binwidth,
              by = binwidth)
tb$diameter_class <- cut(tb$diameter,
                         breaks = breaks,
                         include.lowest = TRUE)

# Separar valores para criar os limites do intervalo.
tb <-
    tb |>
    mutate(newvalue = as.character(diameter_class),
           newvalue = trimws(
               str_replace_all(newvalue,
                               pattern = "[\\[(\\]]",
                               replacement = " "))) |>
    separate(newvalue,
             into = c("left", "right"),
             sep = ",",
             convert = TRUE)
str(tb)
tibble [288 × 10] (S3: tbl_df/tbl/data.frame)
 $ experiment    : Factor w/ 2 levels "1","2": 1 1 1 1 1 1 1 1 1 1 ...
 $ treatment     : Factor w/ 9 levels "Control","Bam 0,5g/L",..: 2 2 2 2 3 3 3 3 4 4 ...
 $ isolated      : Factor w/ 4 levels "MdCc-110","MdCc-55PR",..: 4 4 4 4 4 4 4 4 4 4 ...
 $ species       : chr [1:288] "C. nymphaeae" "C. nymphaeae" "C. nymphaeae" "C. nymphaeae" ...
 $ phenotype     : chr [1:288] "Reduced sensitivity" "Reduced sensitivity" "Reduced sensitivity" "Reduced sensitivity" ...
 $ repetition    : num [1:288] 1 2 3 4 1 2 3 4 1 2 ...
 $ diameter      : num [1:288] 0 0 0 0 0 0 0 0 0 0 ...
 $ diameter_class: Factor w/ 23 levels "[0,2.5]","(2.5,5]",..: 1 1 1 1 1 1 1 1 1 1 ...
 $ left          : num [1:288] 0 0 0 0 0 0 0 0 0 0 ...
 $ right         : num [1:288] 2.5 2.5 2.5 2.5 2.5 2.5 2.5 2.5 2.5 2.5 ...
Código
#-----------------------------------------------------------------------
# Processamento 1: Tudo com censura intervalar -------------------------

# IMPORTANT: Aqui todos os registros são considerados censuras
# intervalares.

tb <- tb |>
    mutate(status = 3)

# tb |>
#     group_by(diameter_class) |>
#     slice_head(n = 1) |>
#     ungroup() |>
#     select(diameter_class, left, right, status) |>
#     with(survival::Surv(
#         time = left,
#         time2 = right,
#         event = status,
#         type = "interval"))

#-----------------------------------------------------------------------
# Processamento 2: Censura intervalar e cenrura à direita --------------

# IMPORTANT: Aqui foi feito censura intervalar para a primeira classe
# que é o intervalo que contém o 0. Valores positivos que cairam nas
# demais classes são declarados com eventos sem censura.

# `i` indica se é a classe que contém o 0 ou não.
tb <-
    tb |>
    mutate(i = diameter_class == levels(diameter_class)[1],
           status = ifelse(i, yes = 3, no = 1),
           right = ifelse(i, yes = right, no = diameter),
           left = ifelse(i, yes = left, no = diameter))

# tb |>
#     group_by(diameter_class) |>
#     slice_head(n = 1) |>
#     ungroup() |>
#     select(diameter_class, left, right, status) |>
#     with(survival::Surv(
#         time = left,
#         time2 = right,
#         event = status,
#         type = "interval"))

#=======================================================================
# Ajuste de sobreviência com resposta censurada. -----------------------

# Opções de distribuição:
# “extreme”, “logistic”, “gaussian”, “weibull”, “exponential”,
# “rayleigh”, “loggaussian”, “lognormal”, “loglogistic”, “t”

2.2 Experimento 1

Código
#-----------------------------------------------------------------------
# Experimento 1 --------------------------------------------------------

tbi <- tb |>
    filter(experiment == "1")

# Ajuste do modelo.
m0 <- survreg(
    formula = Surv(
        time = left + 0.01,
        time2 = right,
        event = status,
        type = "interval") ~ treatment * isolated,
    dist = "gaussian",
    # dist = "loggaussian",
    # dist = "loglogistic",
    # dist = "weibull",
    data = tbi)

# logLik(m0)
# AIC(m0)
# BIC(m0)

# Quadro de análise de deviance.
# anova(m0)
car::Anova(m0)
Analysis of Deviance Table (Type II tests)
                   LR Chisq Df Pr(>Chisq)    
treatment            401.61  8  < 2.2e-16 ***
isolated              49.11  3  1.234e-10 ***
treatment:isolated    72.28 24  9.816e-07 ***
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Código
# summary(m0)
# m0[["scale"]]
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-110"  "MdCc-55PR"

$`C. nymphaeae`
[1] "MdCn-181" "MdCn-142"
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(m0,
            specs = ~isolated | treatment,
            at = list(isolated = tb_iso[["C. nymphaeae"]])) |>
    multcomp::cld(Letters = letters, reversed = TRUE) |>
    as.data.frame() |>
    mutate(.group = trimws(.group))
tb_means$isolated[["C. chrysophillum"]] <-
    emmeans(m0,
            specs = ~isolated | treatment,
            at = list(isolated = tb_iso[["C. chrysophillum"]])) |>
    multcomp::cld(Letters = letters, reversed = TRUE) |>
    as.data.frame() |>
    mutate(.group = trimws(.group))
tb_means$isolated <- bind_rows(tb_means$isolated, .id = "Specie")

if (m0$dist == "weibull") {
    tb_means$isolated <-
        tb_means$isolated |>
        mutate(weibull_shape = 1/m0[["scale"]]) |>
        mutate_at(c("emmean", "lower.CL", "upper.CL"),
                  ~exp(.) * gamma(1 + 1/weibull_shape)) |>
        mutate(weibull_shape = NULL)
}

ggplot(data = tb_means$isolated,
       mapping = aes(y = isolated, x = emmean)) +
    facet_grid(facets = treatment ~ .) +
    geom_errorbarh(mapping = aes(xmin = lower.CL, xmax = upper.CL),
                   height = 0) +
    geom_point(mapping = aes(color = Specie)) +
    geom_text(mapping = aes(label = sprintf("%0.1f %s", emmean, .group)),
              vjust = 0, nudge_y = 0.10, size = 2.5) +
    labs(y = "Isolated",
         x = "Colony diameter (mm)")

Código
# Comparação entre os tratamentos.
tb_means$treatment <-
    emmeans(m0,
            specs = ~treatment | isolated) |>
    multcomp::cld(Letters = letters, reversed = TRUE) |>
    as.data.frame() |>
    mutate(.group = trimws(.group)) |>
    identity()
tb_means$treatment
    treatment  isolated    emmean       SE  df   lower.CL  upper.CL .group
2     Control  MdCc-110 41.347500 1.319975 107 38.7308037 43.964196      a
3         SBa  MdCc-110 12.705000 1.319975 107 10.0883037 15.321696      b
4      Delan®  MdCc-110 12.271250 1.319975 107  9.6545537 14.887946      b
7         BBa  MdCc-110  7.898750 1.319975 107  5.2820537 10.515446      b
9  CabrioTop®  MdCc-110  1.255000 1.370195 107 -1.4612524  3.971252      c
5          Bs  MdCc-110  1.255000 1.370195 107 -1.4612524  3.971252      c
8  Bam 2,0g/L  MdCc-110  1.255000 1.370195 107 -1.4612524  3.971252      c
6  Bam 1,0g/L  MdCc-110  1.255000 1.370195 107 -1.4612524  3.971252      c
1  Bam 0,5g/L  MdCc-110  1.255000 1.370195 107 -1.4612524  3.971252      c
12    Control MdCc-55PR 47.838750 1.319975 107 45.2220537 50.455446      a
13        SBa MdCc-55PR 24.713750 1.319975 107 22.0970537 27.330446      b
11     Delan® MdCc-55PR 15.287875 1.319975 107 12.6711787 17.904571      c
16 CabrioTop® MdCc-55PR 14.151250 1.319975 107 11.5345537 16.767946      c
14        BBa MdCc-55PR 13.300000 1.319975 107 10.6833037 15.916696     cd
18         Bs MdCc-55PR  7.718750 1.319975 107  5.1020537 10.335446     de
17 Bam 0,5g/L MdCc-55PR  2.857283 1.356552 107  0.1680774  5.546488     ef
15 Bam 2,0g/L MdCc-55PR  1.255000 1.370195 107 -1.4612524  3.971252      f
10 Bam 1,0g/L MdCc-55PR  1.255000 1.370195 107 -1.4612524  3.971252      f
21    Control  MdCn-142 45.078750 1.319975 107 42.4620537 47.695446      a
22     Delan®  MdCn-142 12.375000 1.319975 107  9.7583037 14.991696      b
20        SBa  MdCn-142 11.235000 1.319975 107  8.6183037 13.851696      b
25        BBa  MdCn-142  7.063750 1.319975 107  4.4470537  9.680446     bc
27 CabrioTop®  MdCn-142  1.255000 1.370195 107 -1.4612524  3.971252      c
23         Bs  MdCn-142  1.255000 1.370195 107 -1.4612524  3.971252      c
24 Bam 0,5g/L  MdCn-142  1.255000 1.370195 107 -1.4612524  3.971252      c
26 Bam 2,0g/L  MdCn-142  1.255000 1.370195 107 -1.4612524  3.971252      c
19 Bam 1,0g/L  MdCn-142  1.255000 1.370195 107 -1.4612524  3.971252      c
30    Control  MdCn-181 46.911250 1.319975 107 44.2945537 49.527946      a
31     Delan®  MdCn-181 15.548750 1.319975 107 12.9320537 18.165446      b
36        SBa  MdCn-181 12.832500 1.319975 107 10.2158037 15.449196     bc
29        BBa  MdCn-181  7.080000 1.319975 107  4.4633037  9.696696     cd
34         Bs  MdCn-181  3.464996 1.343691 107  0.8012845  6.128707      d
32 Bam 0,5g/L  MdCn-181  1.255000 1.370195 107 -1.4612524  3.971252      d
33 CabrioTop®  MdCn-181  1.255000 1.370195 107 -1.4612524  3.971252      d
35 Bam 2,0g/L  MdCn-181  1.255000 1.370195 107 -1.4612524  3.971252      d
28 Bam 1,0g/L  MdCn-181  1.255000 1.370195 107 -1.4612524  3.971252      d
Código
if (m0$dist == "weibull") {
    tb_means$treatment <-
        tb_means$treatment |>
        mutate(weibull_shape = 1/m0[["scale"]]) |>
        mutate_at(c("emmean", "lower.CL", "upper.CL"),
                  ~exp(.) * gamma(1 + 1/weibull_shape)) |>
        mutate(weibull_shape = NULL)
}

ggplot(data = tb_means$treatment,
       mapping = aes(y = treatment, x = emmean)) +
    facet_grid(facets = isolated ~ .) +
    geom_errorbarh(mapping = aes(xmin = lower.CL, xmax = upper.CL),
                   height = 0) +
    geom_point() +
    geom_text(mapping = aes(label = sprintf("%0.1f %s", emmean, .group)),
              vjust = 0, nudge_y = 0.10, size = 2.5) +
    labs(y = "Treatment",
         x = "Colony diameter (mm)")

Código
#-----------------------------------------------------------------------
# Comparando com estimativas amostrais.

tbi |>
    group_by(treatment, isolated) |>
    summarise_at("diameter", "mean") |>
    left_join(tb_means$treatment,
              by = c("treatment", "isolated")) |>
    select(treatment, isolated, diameter, emmean) |>
    # arrange(diameter) |>
    print(n = Inf)
# A tibble: 36 × 4
# Groups:   treatment [9]
   treatment  isolated  diameter emmean
   <fct>      <fct>        <dbl>  <dbl>
 1 Control    MdCc-110     41.3   41.3 
 2 Control    MdCc-55PR    47.8   47.8 
 3 Control    MdCn-142     45.1   45.1 
 4 Control    MdCn-181     46.9   46.9 
 5 Bam 0,5g/L MdCc-110      0      1.26
 6 Bam 0,5g/L MdCc-55PR     1.83   2.86
 7 Bam 0,5g/L MdCn-142      0      1.26
 8 Bam 0,5g/L MdCn-181      0      1.26
 9 Bam 1,0g/L MdCc-110      0      1.26
10 Bam 1,0g/L MdCc-55PR     0      1.26
11 Bam 1,0g/L MdCn-142      0      1.26
12 Bam 1,0g/L MdCn-181      0      1.26
13 Bam 2,0g/L MdCc-110      0      1.26
14 Bam 2,0g/L MdCc-55PR     0      1.26
15 Bam 2,0g/L MdCn-142      0      1.26
16 Bam 2,0g/L MdCn-181      0      1.26
17 BBa        MdCc-110      7.89   7.90
18 BBa        MdCc-55PR    13.3   13.3 
19 BBa        MdCn-142      7.05   7.06
20 BBa        MdCn-181      7.07   7.08
21 SBa        MdCc-110     12.7   12.7 
22 SBa        MdCc-55PR    24.7   24.7 
23 SBa        MdCn-142     11.2   11.2 
24 SBa        MdCn-181     12.8   12.8 
25 Bs         MdCc-110      0      1.26
26 Bs         MdCc-55PR     7.71   7.72
27 Bs         MdCn-142      0      1.26
28 Bs         MdCn-181      2.75   3.46
29 Delan®     MdCc-110     12.3   12.3 
30 Delan®     MdCc-55PR    15.3   15.3 
31 Delan®     MdCn-142     12.4   12.4 
32 Delan®     MdCn-181     15.5   15.5 
33 CabrioTop® MdCc-110      0      1.26
34 CabrioTop® MdCc-55PR    14.1   14.2 
35 CabrioTop® MdCn-142      0      1.26
36 CabrioTop® MdCn-181      0      1.26

2.3 Experimento 2

Código
#-----------------------------------------------------------------------
# Experimento 2 --------------------------------------------------------

tbi <- tb |>
    filter(experiment == "2")

# Ajuste do modelo.
m0 <- survreg(
    formula = Surv(
        time = left + 0.01,
        time2 = right,
        event = status,
        type = "interval") ~ treatment * isolated,
    dist = "gaussian",
    # dist = "loggaussian",
    # dist = "loglogistic",
    # dist = "weibull",
    data = tbi)

# logLik(m0)
# AIC(m0)
# BIC(m0)

# Quadro de análise de deviance.
# anova(m0)
Anova(m0)
Analysis of Deviance Table (Type II tests)
                   LR Chisq Df Pr(>Chisq)    
treatment           124.799  8  < 2.2e-16 ***
isolated             31.035  3  8.359e-07 ***
treatment:isolated   15.517 24     0.9047    
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Código
# summary(m0)
# m0[["scale"]]

# Testa a nulidade dos termos abandonados.
m1 <- update(m0, formula = . ~ . - treatment:isolated)
anova(m1, m0)
                 Terms Resid. Df    -2*LL Test Df Deviance  Pr(>Chi)
1 treatment + isolated       131 927.9161      NA       NA        NA
2 treatment * isolated       107 912.3991    = 24 15.51705 0.9047145
Código
# fig-height: 9

# 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-110"  "MdCc-55PR"

$`C. nymphaeae`
[1] "MdCn-181" "MdCn-142"
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) |>
    as.data.frame() |>
    mutate(.group = trimws(.group))
tb_means$isolated[["C. chrysophillum"]] <-
    emmeans(m1,
            specs = ~isolated,
            at = list(isolated = tb_iso[["C. chrysophillum"]])) |>
    multcomp::cld(Letters = letters, reversed = TRUE) |>
    as.data.frame() |>
    mutate(.group = trimws(.group))
tb_means$isolated <- bind_rows(tb_means$isolated, .id = "Specie")

if (m0$dist == "weibull") {
    tb_means$isolated <-
        tb_means$isolated |>
        mutate(weibull_shape = 1/m0[["scale"]]) |>
        mutate_at(c("emmean", "lower.CL", "upper.CL"),
                  ~exp(.) * gamma(1 + 1/weibull_shape)) |>
        mutate(weibull_shape = NULL)
}

ggplot(data = tb_means$isolated,
       mapping = aes(y = isolated, x = emmean)) +
    geom_errorbarh(mapping = aes(xmin = lower.CL, xmax = upper.CL),
                   height = 0) +
    geom_point(mapping = aes(color = Specie)) +
    geom_text(mapping = aes(label = sprintf("%0.1f %s", emmean, .group)),
              vjust = 0, nudge_y = 0.10, size = 2.5) +
    labs(y = "Isolated",
         x = "Colony diameter (mm)")

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 <-
    emmeans(m1,
            specs = ~isolated) |>
    multcomp::cld(Letters = letters, reversed = TRUE, adjust = "fdr") |>
    as.data.frame() |>
    mutate(.group = trimws(.group))
tb_means$isolated
   isolated    emmean       SE  df  lower.CL upper.CL .group
3 MdCc-55PR 19.514960 1.604723 131 15.450736 23.57918      a
4  MdCc-110 10.759083 1.606959 131  6.689194 14.82897      b
1  MdCn-181  8.278235 1.607079 131  4.208043 12.34843      b
2  MdCn-142  7.743821 1.607204 131  3.673312 11.81433      b
Código
if (m0$dist == "weibull") {
    tb_means$isolated <-
        tb_means$isolated |>
        mutate(weibull_shape = 1/m0[["scale"]]) |>
        mutate_at(c("emmean", "lower.CL", "upper.CL"),
                  ~exp(.) * gamma(1 + 1/weibull_shape)) |>
        mutate(weibull_shape = NULL)
}

ggplot(data = tb_means$isolated,
       mapping = aes(y = isolated, x = emmean)) +
    # facet_grid(facets = treatment ~ .) +
    geom_errorbarh(mapping = aes(xmin = lower.CL, xmax = upper.CL),
                   height = 0) +
    geom_point() +
    geom_text(mapping = aes(label = sprintf("%0.1f %s", emmean, .group)),
              vjust = 0, nudge_y = 0.10, size = 3) +
    labs(y = "Isolated",
         x = "Colony diameter (mm)")

Código
# Comparação entre os tratamentos.
tb_means$treatment <-
    emmeans(m1,
            specs = ~treatment) |>
    multcomp::cld(Letters = letters, reversed = TRUE, adjust = "fdr") |>
    as.data.frame() |>
    mutate(.group = trimws(.group))
tb_means$treatment
   treatment    emmean       SE  df   lower.CL  upper.CL .group
3    Control 40.645482 2.407143 131 33.8582516 47.432712      a
2 CabrioTop® 16.262991 2.410100 131  9.4674238 23.058558      b
4     Delan® 12.671328 2.407594 131  5.8828249 19.459830     bc
7        SBa 10.990516 2.407595 131  4.2020098 17.779022     bc
5        BBa  9.448711 2.409273 131  2.6554744 16.241948    bcd
6         Bs  7.551106 2.410115 131  0.7554969 14.346716     cd
8 Bam 2,0g/L  2.294528 2.412638 131 -4.5081964  9.097252      d
9 Bam 0,5g/L  2.212952 2.411378 131 -4.5862203  9.012124      d
1 Bam 1,0g/L  2.088607 2.411798 131 -4.7117483  8.888962      d
Código
if (m0$dist == "weibull") {
    tb_means$treatment <-
        tb_means$treatment |>
        mutate(weibull_shape = 1/m0[["scale"]]) |>
        mutate_at(c("emmean", "lower.CL", "upper.CL"),
                  ~exp(.) * gamma(1 + 1/weibull_shape)) |>
        mutate(weibull_shape = NULL)
}

ggplot(data = tb_means$treatment,
       mapping = aes(y = treatment, x = emmean)) +
    geom_errorbarh(mapping = aes(xmin = lower.CL, xmax = upper.CL),
                   height = 0) +
    geom_point() +
    geom_text(mapping = aes(label = sprintf("%0.1f %s", emmean, .group)),
              vjust = 0, nudge_y = 0.10, size = 3) +
    labs(y = "Treatment",
         x = "Colony diameter (mm)")

Código
#-----------------------------------------------------------------------
# Comparando com estimativas amostrais.

tbi |>
    group_by(treatment) |>
    summarise_at("diameter", "mean") |>
    left_join(tb_means$treatment,
              by = "treatment") |>
    select(treatment, diameter, emmean)
# A tibble: 9 × 3
  treatment  diameter emmean
  <fct>         <dbl>  <dbl>
1 Control       40.5   40.6 
2 Bam 0,5g/L     1.28   2.21
3 Bam 1,0g/L     1.07   2.09
4 Bam 2,0g/L     1.11   2.29
5 BBa            8.88   9.45
6 SBa           10.7   11.0 
7 Bs             6.83   7.55
8 Delan®        12.4   12.7 
9 CabrioTop®    15.5   16.3 
Código
tbi |>
    group_by(isolated) |>
    summarise_at("diameter", "mean") |>
    left_join(tb_means$isolated,
              by = "isolated") |>
    select(isolated, diameter, emmean)
# A tibble: 4 × 3
  isolated  diameter emmean
  <fct>        <dbl>  <dbl>
1 MdCc-110      9.97  10.8 
2 MdCc-55PR    19.4   19.5 
3 MdCn-142      6.89   7.74
4 MdCn-181      7.46   8.28