Estimação de EC50 para isolados Colletotrichum

Autores

Dra. Natasha Akemi Hamada

Dr. Walmes Zeviani

1 Informações da sessão

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

library(reactable)
library(segmented)
library(tidyverse)
library(broom)
library(janitor)

#-----------------------------------------------------------------------
# Tema.

custom_theme <- function() {
    theme_linedraw() +
        theme(
            panel.grid = element_blank(),
            strip.background = element_rect(fill = "gray90",
                                            color = "black"),
            strip.text = element_text(color = "black")
        )
}

# Configure globalmente o tema personalizado
theme_set(custom_theme())

2 Importação e preparo dos dados

2.1 Importação

Código
#-----------------------------------------------------------------------
# Importação e preparo dos dados.

# Importa todas as abas.
url <- "Cmel_nym_chr.xlsx"
tbs <- map(1:3, ~readxl::read_excel(url, sheet = .))

# Converte variáveis para fator.
tbs <- map(tbs, ~mutate_at(., c("isolate", "species"), factor))
# str(tbs)

# NOTE: Cada experimento avaliou apenas uma espécie. Juntar em uma única
# tabela.
tb <- bind_rows(tbs)

# Doses usadas.
tb |>
    distinct(dose) |>
    mutate(dose_log10 = log10(dose))
# A tibble: 5 × 2
   dose dose_log10
  <dbl>      <dbl>
1   0         -Inf
2   0.1         -1
3   1            0
4  10            1
5 100            2
Código
# Colocar um `_` após o número para separar número e origem.
tb <- tb |>
    mutate(isolate = str_replace(isolate, 
                                 "^(\\d+)\\s?(.*)",
                                 "\\1_\\2"))

# tb |>
#     count(species, isolate) |>
#     print(n = Inf)

# Isolados da amostra.
tb |>
    mutate(species = fct_reorder(species, species, length)) |>
    group_by(species) |>
    reframe(isolate = unique(isolate),
            i = 1:length(isolate)) |>
    pivot_wider(names_from = species, values_from = isolate) |>
    print(n = Inf)
# A tibble: 29 × 4
       i `C. crisophylum` `C. melonis` `C. nymphae`
   <int> <chr>            <chr>        <chr>       
 1     1 48_PR            9_PR         14_PR       
 2     2 53_PR            29_SP        15_PR       
 3     3 55_PR            34_SP        19_PR       
 4     4 71_PR            35_SP        20_PR       
 5     5 74_SC            6_J          21_PR       
 6     6 75_SC            9_J          65_PR       
 7     7 76_SC            21_J         66_PR       
 8     8 79_SC            28_J         69_PR       
 9     9 87_SC            32_J         70_PR       
10    10 132_PR           34_J         142_PR      
11    11 133_PR           38_J         179_PR      
12    12 14_SC            41_J         181_PR      
13    13 19_SC            52_J         20_RS       
14    14 27_SC            54_J         26_RS       
15    15 39_SC            56_J         47_RS       
16    16 60_SC            61_J         27_J        
17    17 62_SC            64_J         29_J        
18    18 69_SC            107_J        66_J        
19    19 70_SC            123_J        69_J        
20    20 <NA>             128_J        76_J        
21    21 <NA>             129_J        78_J        
22    22 <NA>             133_J        80_J        
23    23 <NA>             137_J        82_J        
24    24 <NA>             <NA>         83_J        
25    25 <NA>             <NA>         89_J        
26    26 <NA>             <NA>         125_J       
27    27 <NA>             <NA>         134_J       
28    28 <NA>             <NA>         138_J       
29    29 <NA>             <NA>         144_J       
Código
# Ordena isolados dentro de espécie.
tb <- tb |>
    arrange(species, isolate) |>
    mutate(isolate = factor(isolate, levels = unique(isolate)))

2.2 Transformação da escala da dose para ajuste dos modelos

Código
#-----------------------------------------------------------------------
# Transformação na escala da dose para ajuste das curvas.

# Experimenta transformações para ficar próximo de um equidistante pois
# isso é interessante para o ajuste de modelos polinomiais.
shift <- 0.01
tb |>
    distinct(dose) |>
    mutate(log_dose = log10(dose + shift) + 2)
# A tibble: 5 × 2
   dose log_dose
  <dbl>    <dbl>
1   0       0   
2   0.1     1.04
3   1       2.00
4  10       3.00
5 100       4.00
Código
# IMPORTANT: Praticamente equidistante. O valor `0` é a testemunha. Os
# valores de dose ficam positivos ao somar 2. Assim o intercepto será o
# crescimento na dose 0. Sabendo isso, é resolver em x para saber qual
# valor em x que retorna 0.5 * y(x = 0).

# Cria uma nova coluna com a dose na escala logarítmica.
tb <- tb |>
    mutate(log_dose = log10(dose + shift) + 2)
Código
ggplot(data = tb,
       mapping = aes(x = log_dose,
                     y = growth,
                     color = species)) +
    facet_wrap(~isolate, scale = "free_y") +
    geom_point(pch = 1) +
    # scale_y_log10() +
    # stat_summary(geom = "line", fun = "mean") +
    geom_smooth(method = "lm",
                formula = y ~ poly(x, degree = 3),
                se = FALSE,
                linewidth = 0.5) +
    labs(x = expression("Dose · " * log[10](x + 0.01) + 2),
         y = "Crescimento (mm)",
         color = "Espécie") +
    # Sem valores no eixo y.
    theme(legend.position = "bottom",
          # axis.ticks.y = element_blank(),
          axis.text.y = element_blank(),
          axis.title.y = element_blank())

Figura 1. Análise exploratória para o crescimento de isolados de Colletotrichum em função da dose de fungicida. Curvas ajustadas considerando um polinômio de terceiro grau.

3 Estimação de EC50

3.1 Ajuste dos modelos

Código
#-----------------------------------------------------------------------
# Funções para determinar a EC50.

find_ec50_polyroot <- function(tbi, k = 3) {
    m0 <- lm(y ~ poly(x, degree = k, raw = TRUE),
             data = tbi)
    betas <- coef(m0)
    roots <-
        (betas * c(0.5, rep(1, length(betas) - 1))) |>
        polyroot() |>
        Re() |>
        round(digits = 6) |>
        unique()
    result <- tibble(x = roots,
                     y = predict(m0, newdata = data.frame(x = roots)),
                     y0 = 0.5 * unname(betas[1])) |>
        mutate(model = list(m0)) |>
        filter(abs(y0 - y) < 0.01)
    return(result)
}

# # Teste.
# tb |>
#     filter(isolate == "128_J") |>
#     transmute(x = log_dose, y = growth) |>
#     find_ec50_polyroot(k = 1)
Código
#-----------------------------------------------------------------------
# Ajusta os modelos e calcula EC50.

# Calcula ec50 para cada isolado usando o modelo linear.
k <- 1
tb_ec50_1 <-
    tb |>
    group_by(species, isolate) |>
    transmute(x = log_dose, y = growth) |>
    summarise(result = list(
        find_ec50_polyroot(tibble(x = x, y = y), k = k)),
        .groups = "drop") |>
    unnest(result)
tb_ec50_1
# A tibble: 71 × 6
   species    isolate     x     y    y0 model 
   <fct>      <fct>   <dbl> <dbl> <dbl> <list>
 1 C. melonis 107_J    4.74 0.552 0.552 <lm>  
 2 C. melonis 123_J    3.34 0.856 0.856 <lm>  
 3 C. melonis 128_J    5.47 1.02  1.02  <lm>  
 4 C. melonis 129_J    2.62 0.870 0.870 <lm>  
 5 C. melonis 133_J    7.03 0.933 0.933 <lm>  
 6 C. melonis 137_J    5.36 2.26  2.26  <lm>  
 7 C. melonis 21_J     2.92 0.555 0.555 <lm>  
 8 C. melonis 28_J     1.77 0.216 0.216 <lm>  
 9 C. melonis 29_SP    5.42 0.785 0.785 <lm>  
10 C. melonis 32_J     2.39 0.317 0.317 <lm>  
# ℹ 61 more rows
Código
# Calcula ec50 para cada isolado usando o modelo cúbico.
k <- 3
tb_ec50_3 <-
    tb |>
    group_by(species, isolate) |>
    transmute(x = log_dose, y = growth) |>
    summarise(result = list(
        find_ec50_polyroot(tibble(x = x, y = y), k = k)),
        .groups = "drop") |>
    unnest(result)
tb_ec50_3
# A tibble: 147 × 6
   species    isolate     x     y    y0 model 
   <fct>      <fct>   <dbl> <dbl> <dbl> <list>
 1 C. melonis 107_J    4.03 0.572 0.572 <lm>  
 2 C. melonis 123_J    3.38 0.901 0.901 <lm>  
 3 C. melonis 128_J   -3.66 1.01  1.01  <lm>  
 4 C. melonis 129_J   -1.26 0.867 0.867 <lm>  
 5 C. melonis 129_J    2.25 0.867 0.867 <lm>  
 6 C. melonis 129_J    4.48 0.867 0.867 <lm>  
 7 C. melonis 133_J    4.82 0.964 0.964 <lm>  
 8 C. melonis 137_J   -6.21 2.35  2.35  <lm>  
 9 C. melonis 21_J    -1.41 0.543 0.543 <lm>  
10 C. melonis 21_J     2.62 0.543 0.543 <lm>  
# ℹ 137 more rows
Código
# Juntar os dois ajustes para fazer o restante dos processos.
tb_ec50 <- bind_rows(list("1" = tb_ec50_1,
                          "3" = tb_ec50_3),
                     .id = "order")
# str(tb_ec50, max.level = 2, give.attr = FALSE)

#-----------------------------------------------------------------------
# Elimina soluções inválidas para EC50.

# Valida os valores de EC50 na escala em que foi estimada, ou seja, `x`.
tb_ec50 <-
    tb_ec50 |>
    group_by(order, species, isolate) |>
    # y e y0 devem ser próximos e x deve estar entre 0 e 8.
    mutate(x = if_else(between(x, 0, 8), x, NA_real_)) |>
    # Pega o menor valor quando houver vários válidos.
    mutate(x = if_else(x == min(x, na.rm = TRUE), x, NA_real_)) |>
    ungroup()

# Aplica a função inversa para obter a EC50.
tb_ec50 <-
    tb_ec50 |>
    mutate(ec50 = x - 2,
           ec50 = 10^ec50 - shift)

# Quais isolados não tiveram EC50 estimada?
tb_ec50 |>
    group_by(order, species, isolate) |>
    summarise(n = n(),
              n_ec50 = sum(!is.na(ec50)),
              .groups = "drop") |>
    filter(n_ec50 == 0) |>
    # droplevels() |>
    # pull(isolate) |>
    # as.character() |>
    # dput() |>
    identity()
# A tibble: 4 × 5
  order species        isolate     n n_ec50
  <chr> <fct>          <fct>   <int>  <int>
1 1     C. crisophylum 55_PR       1      0
2 3     C. melonis     128_J       1      0
3 3     C. melonis     137_J       1      0
4 3     C. nymphae     20_RS       1      0

3.2 Bondade do ajuste

Código
#-----------------------------------------------------------------------
# Medidas de ajuste dos modelos.

tb_gof <- tb_ec50 |>
    group_by(species, isolate, order) |>
    summarise(glance(model[[1]]), .groups = "drop") |>
    janitor::clean_names()

columns_def <- 
    sapply(c("df", "df_residual", "nobs"),
           simplify = FALSE,
           function(x) {
               reactable::colDef(
                   format = reactable::colFormat(digits = 0)
                   )
           })
Código
tb_gof |>
    knitr::kable()
Tabela 1. Medidas relacionadas ao ajuste dos modelos aos dados conforme a ordem do polinômio.
species isolate order r_squared adj_r_squared sigma statistic p_value df log_lik aic bic deviance df_residual nobs
C. melonis 107_J 1 0.3891686 0.3552335 0.2168420 11.4680324 0.0032887 1 3.2465622 -0.4931244 2.4940724 0.8463680 18 20
C. melonis 107_J 3 0.4549216 0.3527194 0.2172643 4.4511924 0.0186536 3 4.3854764 1.2290472 6.2077085 0.7552606 16 20
C. melonis 123_J 1 0.3570575 0.3213385 0.5113507 9.9962834 0.0053981 1 -13.9111727 33.8223454 36.8095422 4.7066315 18 20
C. melonis 123_J 3 0.3695139 0.2512978 0.5370897 3.1257488 0.0551371 3 -13.7155304 37.4310609 42.4097222 4.6154448 16 20
C. melonis 128_J 1 0.7317007 0.7167952 0.1668448 49.0892510 0.0000015 1 8.4886649 -10.9773298 -7.9901329 0.5010691 18 20
C. melonis 128_J 3 0.7349737 0.6852812 0.1758829 14.7904520 0.0000710 3 8.6114044 -7.2228088 -2.2441475 0.4949566 16 20
C. melonis 129_J 1 0.7052591 0.6888846 0.3189131 43.0705825 0.0000036 1 -4.4684360 14.9368720 17.9240688 1.8307007 18 20
C. melonis 129_J 3 0.7598354 0.7148045 0.3053395 16.8736572 0.0000328 3 -2.4207143 14.8414286 19.8200900 1.4917153 16 20
C. melonis 133_J 1 0.5932410 0.5706432 0.1630168 26.2522446 0.0000711 1 8.9528770 -11.9057540 -8.9185572 0.4783405 18 20
C. melonis 133_J 3 0.6407953 0.5734444 0.1624841 9.5142819 0.0007632 3 10.1961619 -10.3923239 -5.4136625 0.4224176 16 20
C. melonis 137_J 1 0.8375797 0.8285564 0.2756205 92.8236097 0.0000000 1 -1.5505589 9.1011179 12.0883147 1.3674000 18 20
C. melonis 137_J 3 0.9084263 0.8912562 0.2195094 52.9075431 0.0000000 3 4.1798705 1.6402591 6.6189204 0.7709499 16 20
C. melonis 21_J 1 0.4610781 0.4311380 0.3050826 15.4000163 0.0009941 1 -3.5817123 13.1634245 16.1506214 1.6753573 18 20
C. melonis 21_J 3 0.4804924 0.3830848 0.3177070 4.9327987 0.0129804 3 -3.2148197 16.4296393 21.4083007 1.6150036 16 20
C. melonis 28_J 1 0.7509240 0.7370864 0.1044368 54.2670936 0.0000008 1 17.8583038 -29.7166076 -26.7294107 0.1963267 18 20
C. melonis 28_J 3 0.8416138 0.8119164 0.0883329 28.3396305 0.0000012 3 22.3855207 -34.7710414 -29.7923800 0.1248432 16 20
C. melonis 29_SP 1 0.7876907 0.7758957 0.1116981 66.7819496 0.0000002 1 16.5139374 -27.0278748 -24.0406780 0.2245766 18 20
C. melonis 29_SP 3 0.8709697 0.8467766 0.0923599 36.0006420 0.0000002 3 21.4939121 -32.9878242 -28.0091628 0.1364856 16 20
C. melonis 32_J 1 0.7727707 0.7601468 0.1065887 61.2151297 0.0000003 1 17.4503906 -28.9007811 -25.9135843 0.2045007 18 20
C. melonis 32_J 3 0.8977128 0.8785340 0.0758518 46.8074514 0.0000000 3 25.4321453 -40.8642905 -35.8856292 0.0920559 16 20
C. melonis 34_J 1 0.7766213 0.7642113 0.3361725 62.5806338 0.0000003 1 -5.5225489 17.0450977 20.0322945 2.0342152 18 20
C. melonis 34_J 3 0.8611174 0.8350769 0.2811522 33.0684045 0.0000004 3 -0.7701519 11.5403038 16.5189652 1.2647448 16 20
C. melonis 34_SP 1 0.4749335 0.4457631 0.3810575 16.2813707 0.0007768 1 -8.0290652 22.0581303 25.0453271 2.6136866 18 20
C. melonis 34_SP 3 0.6505313 0.5850059 0.3297340 9.9279290 0.0006165 3 -3.9579553 17.9159105 22.8945719 1.7395922 16 20
C. melonis 35_SP 1 0.7031602 0.6866690 0.2125262 42.6387591 0.0000039 1 3.6486317 -1.2972634 1.6899334 0.8130132 18 20
C. melonis 35_SP 3 0.7683822 0.7249538 0.1991194 17.6931049 0.0000246 3 6.1296726 -2.2593453 2.7193161 0.6343769 16 20
C. melonis 38_J 1 0.6617608 0.6429697 0.0711730 35.2167789 0.0000129 1 25.5276582 -45.0553164 -42.0681196 0.0911808 18 20
C. melonis 38_J 3 0.6963859 0.6394582 0.0715222 12.2328226 0.0002059 3 26.6076150 -43.2152299 -38.2365686 0.0818468 16 20
C. melonis 41_J 1 0.6297443 0.6091745 0.1480289 30.6150510 0.0000297 1 10.8817895 -15.7635790 -12.7763822 0.3944260 18 20
C. melonis 41_J 3 0.6850325 0.6259761 0.1448121 11.5996308 0.0002743 3 12.4990336 -14.9980673 -10.0194059 0.3355286 16 20
C. melonis 52_J 1 0.5649349 0.5407647 0.4349736 23.3731230 0.0001330 1 -10.6757680 27.3515360 30.3387329 3.4056370 18 20
C. melonis 52_J 3 0.8573662 0.8306224 0.2641638 32.0584692 0.0000005 3 0.4763855 9.0472290 14.0258903 1.1165199 16 20
C. melonis 54_J 1 0.4204157 0.3882166 0.1041192 13.0567425 0.0019870 1 17.9192174 -29.8384348 -26.8512379 0.1951344 18 20
C. melonis 54_J 3 0.5484250 0.4637547 0.0974796 6.4771828 0.0044634 3 20.4149146 -30.8298292 -25.8511678 0.1520363 16 20
C. melonis 56_J 1 0.8524818 0.8442864 0.1031668 104.0188586 0.0000000 1 18.1029915 -30.2059829 -27.2187861 0.1915811 18 20
C. melonis 56_J 3 0.9457672 0.9355985 0.0663475 93.0080948 0.0000000 3 28.1096424 -46.2192849 -41.2406235 0.0704319 16 20
C. melonis 61_J 1 0.7749685 0.7624667 0.1412302 61.9887949 0.0000003 1 11.8221105 -17.6442210 -14.6570241 0.3590277 18 20
C. melonis 61_J 3 0.8560655 0.8290777 0.1198022 31.7205469 0.0000006 3 16.2909289 -22.5818577 -17.6031964 0.2296411 16 20
C. melonis 64_J 1 0.6420365 0.6221496 0.2508702 32.2844578 0.0000218 1 0.3312280 5.3375439 8.3247407 1.1328453 18 20
C. melonis 64_J 3 0.6908025 0.6328280 0.2472999 11.9156208 0.0002374 3 1.7957360 6.4085280 11.3871893 0.9785158 16 20
C. melonis 6_J 1 0.3720866 0.3372025 0.2089732 10.6663737 0.0042919 1 3.9858178 -1.9716357 1.0155611 0.7860565 18 20
C. melonis 6_J 3 0.3760623 0.2590740 0.2209468 3.2145289 0.0510589 3 4.0493355 1.9013291 6.8799905 0.7810795 16 20
C. melonis 9_J 1 0.8458240 0.8372586 0.1260035 98.7496653 0.0000000 1 14.1037500 -22.2074999 -19.2203031 0.2857838 18 20
C. melonis 9_J 3 0.8703056 0.8459879 0.1225776 35.7889831 0.0000003 3 15.8328924 -21.6657849 -16.6871235 0.2404041 16 20
C. melonis 9_PR 1 0.8333342 0.8240750 0.1097678 90.0005476 0.0000000 1 16.8625982 -27.7251965 -24.7379997 0.2168814 18 20
C. melonis 9_PR 3 0.9560467 0.9478054 0.0597893 116.0074670 0.0000000 3 30.1912197 -50.3824394 -45.4037780 0.0571963 16 20
C. nymphae 125_J 1 0.4538095 0.4234656 0.1959613 14.9555340 0.0011289 1 5.2715954 -4.5431908 -1.5559940 0.6912150 18 20
C. nymphae 125_J 3 0.5164420 0.4257749 0.1955685 5.6960230 0.0075296 3 6.4895615 -2.9791229 1.9995384 0.6119523 16 20
C. nymphae 134_J 1 0.8583536 0.8504843 0.1583559 109.0769586 0.0000000 1 9.5330455 -13.0660910 -10.0788941 0.4513784 18 20
C. nymphae 134_J 3 0.8743217 0.8507570 0.1582114 37.1030410 0.0000002 3 10.7291288 -11.4582575 -6.4795962 0.4004935 16 20
C. nymphae 138_J 1 0.3411130 0.3045081 0.3050773 9.3187950 0.0068524 1 -3.5813667 13.1627334 16.1499302 1.6752994 18 20
C. nymphae 138_J 3 0.4004543 0.2880394 0.3086682 3.5622903 0.0380185 3 -2.6375684 15.2751368 20.2537982 1.5244170 16 20
C. nymphae 142_PR 1 0.7999931 0.7888816 0.1749283 71.9968804 0.0000001 1 7.5424218 -9.0848437 -6.0976469 0.5507981 18 20
C. nymphae 142_PR 3 0.8904075 0.8698589 0.1373422 43.3318110 0.0000001 3 13.5582555 -17.1165111 -12.1378497 0.3018062 16 20
C. nymphae 144_J 1 0.5685044 0.5445325 0.1513149 23.7153769 0.0001231 1 10.4426757 -14.8853515 -11.8981547 0.4121317 18 20
C. nymphae 144_J 3 0.5774807 0.4982583 0.1588156 7.2893629 0.0026781 3 10.6528957 -11.3057914 -6.3271300 0.4035583 16 20
C. nymphae 14_PR 1 0.6908557 0.6736811 0.3862528 40.2252437 0.0000056 1 -8.2999009 22.5998019 25.5869987 2.6854419 18 20
C. nymphae 14_PR 3 0.7042654 0.6488151 0.4006991 12.7008520 0.0001677 3 -7.8564463 25.7128926 30.6915540 2.5689566 16 20
C. nymphae 15_PR 1 0.8905134 0.8844308 0.1471137 146.4036988 0.0000000 1 11.0058314 -16.0116628 -13.0244660 0.3895637 18 20
C. nymphae 15_PR 3 0.8990809 0.8801585 0.1498082 47.5142635 0.0000000 3 11.8206572 -13.6413145 -8.6626531 0.3590798 16 20
C. nymphae 179_PR 1 0.8711565 0.8639986 0.1910911 121.7044058 0.0000000 1 5.7749332 -5.5498664 -2.5626696 0.6572846 18 20
C. nymphae 179_PR 3 0.8816411 0.8594488 0.1942612 39.7273436 0.0000001 3 6.6236980 -3.2473960 1.7312654 0.6037986 16 20
C. nymphae 181_PR 1 0.7145123 0.6986519 0.1933502 45.0499991 0.0000027 1 5.5398793 -5.0797587 -2.0925618 0.6729174 18 20
C. nymphae 181_PR 3 0.9002382 0.8815328 0.1212298 48.1273257 0.0000000 3 16.0540125 -22.1080249 -17.1293636 0.2351466 16 20
C. nymphae 19_PR 1 0.6833351 0.6657426 0.2003745 38.8424143 0.0000070 1 4.8261757 -3.6523515 -0.6651546 0.7226991 18 20
C. nymphae 19_PR 3 0.7369306 0.6876051 0.1937108 14.9401534 0.0000670 3 6.6804408 -3.3608816 1.6177797 0.6003822 16 20
C. nymphae 20_PR 1 0.6790788 0.6612499 0.5726621 38.0885402 0.0000079 1 -16.1759760 38.3519519 41.3391488 5.9029534 18 20
C. nymphae 20_PR 3 0.6809875 0.6211726 0.6055909 11.3849236 0.0003030 3 -16.1163244 42.2326488 47.2113101 5.8678462 16 20
C. nymphae 20_RS 1 0.4005613 0.3672591 0.2426109 12.0280911 0.0027440 1 1.0007611 3.9984779 6.9856747 1.0594809 18 20
C. nymphae 20_RS 3 0.4523204 0.3496304 0.2459674 4.4047196 0.0193338 3 1.9037931 6.1924139 11.1710753 0.9679991 16 20
C. nymphae 21_PR 1 0.7052544 0.6888797 0.3334203 43.0696238 0.0000036 1 -5.3581372 16.7162744 19.7034712 2.0010438 18 20
C. nymphae 21_PR 3 0.7216492 0.6694585 0.3436694 13.8271433 0.0001043 3 -4.7858334 19.5716667 24.5503281 1.8897387 16 20
C. nymphae 26_RS 1 0.8123544 0.8019296 0.1590586 77.9254999 0.0000001 1 9.4444881 -12.8889763 -9.9017795 0.4553934 18 20
C. nymphae 26_RS 3 0.9717482 0.9664510 0.0654617 183.4453753 0.0000000 3 28.3784777 -46.7569553 -41.7782940 0.0685637 16 20
C. nymphae 27_J 1 0.3084036 0.2699815 0.2985987 8.0267389 0.0110240 1 -3.1520712 12.3041425 15.2913393 1.6049014 18 20
C. nymphae 27_J 3 0.3273480 0.2012258 0.3123439 2.5954819 0.0884413 3 -2.8743260 15.7486520 20.7273134 1.5609394 16 20
C. nymphae 29_J 1 0.8754703 0.8685519 0.1322399 126.5437833 0.0000000 1 13.1375809 -20.2751618 -17.2879650 0.3147732 18 20
C. nymphae 29_J 3 0.8867119 0.8654704 0.1337810 41.7442794 0.0000001 3 14.0836853 -18.1673706 -13.1887092 0.2863578 16 20
C. nymphae 47_RS 1 0.8293102 0.8198274 0.1746821 87.4544351 0.0000000 1 7.5705830 -9.1411660 -6.1539692 0.5492492 18 20
C. nymphae 47_RS 3 0.9236221 0.9093013 0.1239381 64.4948992 0.0000000 3 15.6121307 -21.2242613 -16.2456000 0.2457703 16 20
C. nymphae 65_PR 1 0.9266418 0.9225664 0.1569508 227.3714760 0.0000000 1 9.7112865 -13.4225731 -10.4353762 0.4434042 18 20
C. nymphae 65_PR 3 0.9416364 0.9306932 0.1484864 86.0478276 0.0000000 3 11.9979003 -13.9958005 -9.0171392 0.3527715 16 20
C. nymphae 66_J 1 0.5236339 0.4971691 0.2095493 19.7860615 0.0003106 1 3.9307613 -1.8615226 1.1256742 0.7903962 18 20
C. nymphae 66_J 3 0.5432291 0.4575846 0.2176412 6.3428345 0.0048721 3 4.3508099 1.2983803 6.2770416 0.7578834 16 20
C. nymphae 66_PR 1 0.7258399 0.7106087 0.2610165 47.6550571 0.0000019 1 -0.4617354 6.9234708 9.9106677 1.2263334 18 20
C. nymphae 66_PR 3 0.9443840 0.9339560 0.1246930 90.5622826 0.0000000 3 15.4906742 -20.9813484 -16.0026870 0.2487736 16 20
C. nymphae 69_J 1 0.7322562 0.7173815 0.1955758 49.2284443 0.0000015 1 5.3109828 -4.6219655 -1.6347687 0.6884979 18 20
C. nymphae 69_J 3 0.8124605 0.7772968 0.1736113 23.1051206 0.0000047 3 8.8713941 -7.7427882 -2.7641268 0.4822541 16 20
C. nymphae 69_PR 1 0.8473639 0.8388841 0.1568460 99.9275396 0.0000000 1 9.7246556 -13.4493112 -10.4621144 0.4428118 18 20
C. nymphae 69_PR 3 0.8948860 0.8751772 0.1380547 45.4052447 0.0000000 3 13.4547705 -16.9095410 -11.9308797 0.3049456 16 20
C. nymphae 70_PR 1 0.5623607 0.5380474 0.1953448 23.1297593 0.0001405 1 5.3346147 -4.6692294 -1.6820325 0.6868727 18 20
C. nymphae 70_PR 3 0.6330492 0.5642459 0.1897247 9.2008587 0.0009006 3 7.0962880 -4.1925761 0.7860853 0.5759274 16 20
C. nymphae 76_J 1 0.2979542 0.2589517 0.1695265 7.6393534 0.0127862 1 8.1697601 -10.3395202 -7.3523234 0.5173059 18 20
C. nymphae 76_J 3 0.3000835 0.1688492 0.1795371 2.2866235 0.1177339 3 8.2001363 -6.4002726 -1.4216112 0.5157370 16 20
C. nymphae 78_J 1 0.3611349 0.3256423 0.2849865 10.1749601 0.0050748 1 -2.2188990 10.4377981 13.4249949 1.4619119 18 20
C. nymphae 78_J 3 0.4145447 0.3047719 0.2893629 3.7763864 0.0318558 3 -1.3458628 12.6917256 17.6703870 1.3396943 16 20
C. nymphae 80_J 1 0.6584325 0.6394566 0.2927405 34.6982276 0.0000141 1 -2.7557909 11.5115818 14.4987786 1.5425460 18 20
C. nymphae 80_J 3 0.9504702 0.9411833 0.1182372 102.3458756 0.0000000 3 16.5539093 -23.1078186 -18.1291573 0.2236807 16 20
C. nymphae 82_J 1 0.5999381 0.5777125 0.1887799 26.9930418 0.0000609 1 6.0183062 -6.0366125 -3.0494157 0.6414812 18 20
C. nymphae 82_J 3 0.6630789 0.5999062 0.1837522 10.4962869 0.0004638 3 7.7360098 -5.4720196 -0.4933582 0.5402379 16 20
C. nymphae 83_J 1 0.4690880 0.4395929 0.2615986 15.9039266 0.0008626 1 -0.5062833 7.0125666 9.9997634 1.2318086 18 20
C. nymphae 83_J 3 0.5625220 0.4804949 0.2518712 6.8577561 0.0034995 3 1.4294147 7.1411707 12.1198320 1.0150255 16 20
C. nymphae 89_J 1 0.6113711 0.5897806 0.2315317 28.3166767 0.0000466 1 1.9356032 2.1287937 5.1159905 0.9649248 18 20
C. nymphae 89_J 3 0.6789685 0.6187751 0.2231994 11.2797802 0.0003183 3 3.8464591 2.3070818 7.2857432 0.7970876 16 20
C. crisophylum 132_PR 1 0.8792307 0.8725213 0.1313923 131.0444913 0.0000000 1 13.2661886 -20.5323771 -17.5451803 0.3107509 18 20
C. crisophylum 132_PR 3 0.9635134 0.9566722 0.0766010 140.8392232 0.0000000 3 25.2355714 -40.4711427 -35.4924814 0.0938834 16 20
C. crisophylum 133_PR 1 0.8755969 0.8686856 0.1897914 126.6908793 0.0000000 1 5.9114241 -5.8228483 -2.8356515 0.6483742 18 20
C. crisophylum 133_PR 3 0.9212259 0.9064558 0.1601876 62.3708365 0.0000000 3 10.4808591 -10.9617182 -5.9830568 0.4105610 16 20
C. crisophylum 14_SC 1 0.7885340 0.7767859 0.4645032 67.1200842 0.0000002 1 -11.9894269 29.9788537 32.9660506 3.8837372 18 20
C. crisophylum 14_SC 3 0.9622813 0.9552091 0.2080765 136.0642967 0.0000000 3 5.2496562 -0.4993123 4.4793491 0.6927332 16 20
C. crisophylum 19_SC 1 0.8435049 0.8348108 0.2271885 97.0196086 0.0000000 1 2.3143349 1.3713302 4.3585270 0.9290634 18 20
C. crisophylum 19_SC 3 0.9666629 0.9604122 0.1112184 154.6484328 0.0000000 3 17.7778604 -25.5557208 -20.5770594 0.1979124 16 20
C. crisophylum 27_SC 1 0.7823089 0.7702149 0.2271238 64.6859584 0.0000002 1 2.3200314 1.3599371 4.3471339 0.9285343 18 20
C. crisophylum 27_SC 3 0.9726948 0.9675751 0.0853181 189.9899477 0.0000000 3 23.0800471 -36.1600942 -31.1814328 0.1164667 16 20
C. crisophylum 39_SC 1 0.7883332 0.7765740 0.2283874 67.0393317 0.0000002 1 2.2090738 1.5818525 4.5690493 0.9388945 18 20
C. crisophylum 39_SC 3 0.8748557 0.8513912 0.1862634 37.2841474 0.0000002 3 7.4645334 -4.9290668 0.0495945 0.5551049 16 20
C. crisophylum 48_PR 1 0.7926591 0.7811401 0.2234001 68.8135378 0.0000001 1 2.6506551 0.6986899 3.6858867 0.8983367 18 20
C. crisophylum 48_PR 3 0.9553595 0.9469894 0.1099465 114.1397093 0.0000000 3 18.0078902 -26.0157803 -21.0371190 0.1934118 16 20
C. crisophylum 53_PR 1 0.9465408 0.9435708 0.2225203 318.7052506 0.0000000 1 2.7295741 0.5408519 3.5280487 0.8912751 18 20
C. crisophylum 53_PR 3 0.9913941 0.9897804 0.0946965 614.3931161 0.0000000 3 20.9942298 -31.9884596 -27.0097982 0.1434788 16 20
C. crisophylum 55_PR 1 0.0701839 0.0185275 0.1666906 1.3586674 0.2589826 1 8.5071560 -11.0143120 -8.0271152 0.5001434 18 20
C. crisophylum 55_PR 3 0.1160693 -0.0496677 0.1723844 0.7003224 0.5654778 3 9.0132376 -8.0264751 -3.0478138 0.4754619 16 20
C. crisophylum 60_SC 1 0.7799425 0.7677171 0.1766392 63.7967956 0.0000003 1 7.3477558 -8.6955116 -5.7083148 0.5616253 18 20
C. crisophylum 60_SC 3 0.9172283 0.9017087 0.1149042 59.1009649 0.0000000 3 17.1257891 -24.2515782 -19.2729168 0.2112477 16 20
C. crisophylum 62_SC 1 0.7732593 0.7606626 0.2301627 61.3858303 0.0000003 1 2.0542085 1.8915830 4.8787798 0.9535479 18 20
C. crisophylum 62_SC 3 0.9679403 0.9619291 0.0917966 161.0227677 0.0000000 3 21.6162696 -33.2325392 -28.2538778 0.1348258 16 20
C. crisophylum 69_SC 1 0.9067831 0.9016044 0.2139668 175.0981080 0.0000000 1 3.5135254 -1.0270509 1.9601459 0.8240720 18 20
C. crisophylum 69_SC 3 0.9746202 0.9698614 0.1184186 204.8072352 0.0000000 3 16.5232616 -23.0465232 -18.0678618 0.2243673 16 20
C. crisophylum 70_SC 1 0.8892212 0.8830668 0.1957989 144.4859313 0.0000000 1 5.2881813 -4.5763626 -1.5891657 0.6900695 18 20
C. crisophylum 70_SC 3 0.9009900 0.8824257 0.1963349 48.5333066 0.0000000 3 6.4113339 -2.8226678 2.1559935 0.6167582 16 20
C. crisophylum 71_PR 1 0.9371119 0.9336181 0.1733061 268.2226681 0.0000000 1 7.7287569 -9.4575138 -6.4703170 0.5406298 18 20
C. crisophylum 71_PR 3 0.9764729 0.9720615 0.1124321 221.3552707 0.0000000 3 17.5607823 -25.1215647 -20.1429033 0.2022556 16 20
C. crisophylum 74_SC 1 0.7852065 0.7732735 0.4856023 65.8014205 0.0000002 1 -12.8778575 31.7557149 34.7429117 4.2445718 18 20
C. crisophylum 74_SC 3 0.9234370 0.9090814 0.3075077 64.3260380 0.0000000 3 -2.5622314 15.1244628 20.1031242 1.5129757 16 20
C. crisophylum 75_SC 1 0.9018454 0.8963924 0.3829398 165.3841792 0.0000000 1 -8.1276136 22.2552272 25.2424240 2.6395714 18 20
C. crisophylum 75_SC 3 0.9821711 0.9788282 0.1731065 293.8069736 0.0000000 3 8.9296339 -7.8592678 -2.8806064 0.4794536 16 20
C. crisophylum 76_SC 1 0.8801869 0.8735307 0.4401472 132.2340391 0.0000000 1 -10.9122446 27.8244892 30.8116861 3.4871322 18 20
C. crisophylum 76_SC 3 0.9794019 0.9755398 0.1935689 253.5903469 0.0000000 3 6.6950987 -3.3901974 1.5884640 0.5995028 16 20
C. crisophylum 79_SC 1 0.8347934 0.8256153 0.4787166 90.9545104 0.0000000 1 -12.5922335 31.1844670 34.1716638 4.1250517 18 20
C. crisophylum 79_SC 3 0.9547490 0.9462645 0.2657388 112.5278470 0.0000000 3 0.3574901 9.2850198 14.2636812 1.1298741 16 20
C. crisophylum 87_SC 1 0.7976832 0.7864434 0.5499217 70.9693883 0.0000001 1 -15.3655789 36.7311578 39.7183547 5.4434503 18 20
C. crisophylum 87_SC 3 0.9478140 0.9380291 0.2962363 96.8651820 0.0000000 3 -1.8153778 13.6307555 18.6094169 1.4040950 16 20

3.3 Gráfico com ajustes

Código
#-----------------------------------------------------------------------
# Faz o gráfico com as curvas.

# Gera os valores preditos para fazer as curvas no gráfico.
tb_ec50_pred <-
    tb_ec50 |>
    drop_na(ec50) |>
    rowwise() |>
    do(pred = {
        if (is.na(.$ec50)) {
            tibble(species = .$species,
                   isolate = .$isolate,
                   x = NA_real_,
                   y = NA_real_)
        } else {
            s0 <- .$model
            er <-
                c(c(s0$model[[2]][, 1]), .$x) |>
                range(na.rm = TRUE) |>
                extendrange(f = 0.025)
            x_seq <- seq(er[1], er[2], length.out = 51)
            pred <- tibble(order = .$order,
                           species = .$species,
                           isolate = .$isolate,
                           x = x_seq)
            pred$y <- predict(s0, newdata = pred)
            pred
        }
    }) |>
    unnest(pred)
# tb_ec50_pred
Código
ggplot(data = tb,
       mapping = aes(x = log_dose,
                     y = growth,
                     color = species)) +
    facet_wrap(~isolate, scale = "free", ncol = 6) +
    geom_point(pch = 1) +
    geom_line(data = tb_ec50_pred,
              mapping = aes(x = x, y = y, linetype = order),
              size = 0.5) +
    geom_vline(data = tb_ec50,
               mapping = aes(xintercept = x, # x = log10(ec50 + 0.01),
                             linetype = order),
               color = "gray30",
               linewidth = 0.25,
               show.legend = FALSE) +
    geom_hline(data = tb_ec50,
               mapping = aes(yintercept = y0,
                             linetype = order),
               color = "gray30",
               linewidth = 0.25,
               show.legend = FALSE) +
    expand_limits(y = 0) +
    theme(legend.position = "bottom",
          axis.text.x = element_blank(),
          # axis.title.x = element_blank(),
          # axis.ticks.y = element_blank(),
          # axis.title.y = element_blank(),
          axis.text.y = element_blank()) +
    labs(x = expression("Dose · " * log[10](x + 0.01) + 2),
         y = "Crescimento (mm)",
         color = "Espécie",
         linetype = "Modelo",
         title = expression("Ajuste com os modelos linear e cúbico para determinação da" ~ EC[50]))

Figura 2. EC50 para os isolados de Colletotrichum a partir dos ajuste dos modelos polinomiais de order 1 (linear) e 3 (cúbico) aos dados de crescimento em função da dose de fungicida. Linhas verticais indicam o valor da EC50 e linhas horizontais indicam o crescimento estimado quando a dose é a EC50.

3.4 Ajustes finais

Código
#-----------------------------------------------------------------------
# Pegar o ajuste mais apropriado.

# Escolhe o ajuste.
tb_ec50_final <-
    tb_ec50 |>
    drop_na(ec50) |>
    group_by(species, isolate) |>
    arrange(order) |>
    do({
        if (nrow(.) <= 1) {
            # Se tem uma linha ou menos, retornar isso.
            .
        } else {
            # Usa o LRT para decidir qual modelo usar.
            p_value <- anova(.$model[[1]], .$model[[2]])[2, "Pr(>F)"]
            if (p_value < 0.05) {
                .[2, ]
            } else {
                .[1, ]
            }
        }
    }) |>
    ungroup()
tb_ec50_final
# A tibble: 71 × 8
   order species    isolate     x     y    y0 model        ec50
   <chr> <fct>      <fct>   <dbl> <dbl> <dbl> <list>      <dbl>
 1 1     C. melonis 107_J    4.74 0.552 0.552 <lm>      545.   
 2 1     C. melonis 123_J    3.34 0.856 0.856 <lm>       21.6  
 3 1     C. melonis 128_J    5.47 1.02  1.02  <lm>     2954.   
 4 1     C. melonis 129_J    2.62 0.870 0.870 <lm>        4.15 
 5 1     C. melonis 133_J    7.03 0.933 0.933 <lm>   108166.   
 6 1     C. melonis 137_J    5.36 2.26  2.26  <lm>     2309.   
 7 1     C. melonis 21_J     2.92 0.555 0.555 <lm>        8.30 
 8 3     C. melonis 28_J     1.82 0.208 0.208 <lm>        0.654
 9 3     C. melonis 29_SP    5.37 0.830 0.830 <lm>     2369.   
10 3     C. melonis 32_J     3.19 0.308 0.308 <lm>       15.6  
# ℹ 61 more rows
Código
# Filtra os pontos.
tb_ec50_pred <-
    left_join(tb_ec50_final[, c("order", "species", "isolate")],
              tb_ec50_pred)

# Exibir ordenando pela EC50 dentro de cada espécie.
tb_ec50_final <-
    tb_ec50_final |>
    arrange(species, ec50) |>
    mutate(isolate = as.character(isolate),
           isolate = factor(isolate,
                            levels = isolate))
tb <-
    tb |>
    mutate(isolate = factor(isolate,
                            levels = tb_ec50_final$isolate))

# Cria os rótulos para exibir no gráfico.
tb_ec50_final <-
    tb_ec50_final |>
    mutate(ec50_label = sprintf(
        fmt = case_when(ec50 < 0.1 ~ "EC[50] == %0.4f",
                        ec50 < 1 ~ "EC[50] == %0.2f",
                        ec50 < 100 ~ "EC[50] == %0.1f",
                        TRUE ~ "EC[50] == %0.0f"),
        ec50))
Código
ggplot(data = tb,
       mapping = aes(x = log_dose,
                     y = growth,
                     color = species)) +
    # facet_wrap(~isolate) +
    facet_wrap(~isolate, scale = "free", ncol = 6) +
    geom_point(pch = 1) +
    geom_line(data = tb_ec50_pred,
              mapping = aes(x = x, y = y),
              size = 0.5) +
    geom_vline(data = tb_ec50_final,
               mapping = aes(xintercept = x),
               color = "gray30",
               linewidth = 0.25,
               show.legend = FALSE) +
    geom_hline(data = tb_ec50_final,
               mapping = aes(yintercept = y0),
               color = "gray30",
               linewidth = 0.25,
               show.legend = FALSE) +
    geom_text(data = tb_ec50_final,
              mapping = aes(x = Inf, y = Inf,
                            label = ec50_label,
                            hjust = 1.1, vjust = 2),
              parse = TRUE,
              size = 3) +
    expand_limits(y = 0) +
    scale_x_continuous(breaks = seq(-2, 5, 2),
                       labels = function(x) {
                           # sprintf("10^%d", x)
                           10^x
                       }) +
    scale_y_continuous(breaks = seq(0, 5, 1)) +
    # scale_x_continuous(breaks = seq(-2, 5, 2),
    #                    labels = scales::label_math(10^.x)) +
    theme(legend.position = "bottom",
          # axis.text.x = element_text(angle = 90, hjust = 1, vjust = 0.5),
          # axis.ticks.y = element_blank(),
          axis.text.x = element_blank(),
          # axis.title.x = element_blank(),
          # axis.title.y = element_blank(),
          axis.text.y = element_blank()) +
    labs(x = expression("Dose · " * log[10](x + 0.01) + 2),
         y = "Crescimento (mm)",
         color = "Espécie",
         linetype = "Modelo",
         title = expression("Ajuste com os modelos linear e cúbico para determinação da" ~ EC[50]))

Figura 3. EC50 para os isolados de Colletotrichum de acordo com o modelo polinomial mais apropriado quando ajustado aos dados de crescimento em função da dose de fungicida. Linhas verticais indicam o valor da EC50 e linhas horizontais indicam o crescimento estimado quando a dose é a EC50.

Código
ggs <-
    map(levels(tb$species),
        function(s) {
            tb <- tb |>
                filter(species == s)
            tb_ec50_final <- tb_ec50_final |>
                filter(species == s)
            tb_ec50_pred <- tb_ec50_pred |>
                filter(species == s)
            ggplot(data = tb,
                   mapping = aes(x = log_dose,
                                 y = growth)) +
                # facet_wrap(~isolate) +
                facet_wrap(~isolate, 
                           scale = "free_y",
                           ncol = 6) +
                geom_point(pch = 1) +
                geom_line(data = tb_ec50_pred,
                          mapping = aes(x = x, y = y),
                          size = 0.5) +
                geom_vline(data = tb_ec50_final,
                           mapping = aes(xintercept = x),
                           color = "gray30",
                           linewidth = 0.25,
                           show.legend = FALSE) +
                geom_hline(data = tb_ec50_final,
                           mapping = aes(yintercept = y0),
                           color = "gray30",
                           linewidth = 0.25,
                           show.legend = FALSE) +
                geom_text(data = tb_ec50_final,
                          mapping = aes(x = Inf, y = Inf,
                                        label = ec50_label,
                                        hjust = 1.1, vjust = 2),
                          parse = TRUE,
                          size = 3) +
                expand_limits(y = 0) +
                scale_x_continuous(breaks = seq(-2, 5, 2),
                                   labels = function(x) {
                                       10^x
                                   }) +
                theme(axis.text.y = element_blank(),
                      axis.text.x = element_blank()) +
                labs(x = expression("Dose · " * log[10](x + 0.01)),
                     y = "Crescimento (mm)",
                     title = bquote(EC[50] * " para a espécie " * italic(.(s))))
        })

gridExtra::grid.arrange(grobs = ggs,
                        ncol = 1,
                        heights = c(5, 6, 5))

Figura 4. EC50 para os isolados de Colletotrichum de acordo com o modelo polinomial mais apropriado quando ajustado aos dados de crescimento em função da dose de fungicida. Linhas verticais indicam o valor da EC50 e linhas horizontais indicam o crescimento estimado quando a dose é a EC50.

Código
# Gráficos de densidade da ec50.
ggplot(data = tb_ec50_final,
       mapping = aes(x = ec50)) +
    facet_wrap(~species, scale = "free_y", ncol = 1) +
    geom_density(fill = "gray30", alpha = 0.3) +
    geom_rug() +
    scale_x_log10() +
    labs(x = expression(EC[50] * "· escala" ~ log[10]),
         y = "Densidade",
         title = expression("Distribuição da" ~ EC[50] ~ "por espécie"))

Figura 5. Distribuição da EC50 para as espécies de isolados de Colletotrichum.

Código
# Tabela final.
tb_stats <- 
    tb_ec50_final |>
    mutate(map_dfr(model, glance)) |>
    janitor::clean_names() |>
    select(-c(x, y, model, ec50_label)) |>
    select(-c(adj_r_squared, statistic, df, log_lik,
              aic, bic, deviance, df_residual, nobs)) |>
    rename("growth50" = "y0") |>
    mutate(signif = cut(p_value,
                        breaks = c(0, 0.001, 0.01, 0.05, 0.10, 1),
                        labels = c("***", "**", "*", ".", "ns"))) |>
    relocate(growth50, order, .after = ec50)
tb_stats |>
    knitr::kable()
Tabela 2. Estimativas de EC50 para os isolados de Colletotrichum acompanhados de medidas de ajuste para os modelos ajustados aos dados de crescimento em função da dose de fungicida. ec50 é a estimativa da concentração para obter a metade do crescimento estimado na ausência de fungicida (EC50), growth50 é o crescimento estimado para a EC50, order corresponde a ordem do polinômio empregado (1 = linear, 3 = cúbico), r_squared é o coeficiente de determinação ajustado, p_value é o valor-p do teste F para o hipótese nula de que o modelo não difere do modelo trivial e stars são sinais gráficos para indicar a classe de significância.
species isolate ec50 growth50 order r_squared sigma p_value signif
C. melonis 52_J 5.209530e-02 1.0857784 3 0.8573662 0.2641638 0.0000005 ***
C. melonis 34_SP 1.372845e-01 0.8138156 3 0.6505313 0.3297340 0.0006165 ***
C. melonis 64_J 5.303311e-01 0.3920875 1 0.6420365 0.2508702 0.0000218 ***
C. melonis 28_J 6.544970e-01 0.2080487 3 0.8416138 0.0883329 0.0000012 ***
C. melonis 41_J 7.244631e-01 0.2426289 1 0.6297443 0.1480289 0.0000297 ***
C. melonis 9_J 1.501057e+00 0.4331988 1 0.8458240 0.1260035 0.0000000 ***
C. melonis 34_J 2.543366e+00 1.3369059 3 0.8611174 0.2811522 0.0000004 ***
C. melonis 129_J 4.151855e+00 0.8703013 1 0.7052591 0.3189131 0.0000036 ***
C. melonis 21_J 8.302947e+00 0.5549428 1 0.4610781 0.3050826 0.0009941 ***
C. melonis 6_J 1.066046e+01 0.3280989 1 0.3720866 0.2089732 0.0042919 **
C. melonis 61_J 1.105840e+01 0.3956014 3 0.8560655 0.1198022 0.0000006 ***
C. melonis 56_J 1.123988e+01 0.3703465 3 0.9457672 0.0663475 0.0000000 ***
C. melonis 9_PR 1.140306e+01 0.3885165 3 0.9560467 0.0597893 0.0000000 ***
C. melonis 32_J 1.560928e+01 0.3077080 3 0.8977128 0.0758518 0.0000000 ***
C. melonis 123_J 2.164230e+01 0.8560977 1 0.3570575 0.5113507 0.0053981 **
C. melonis 35_SP 2.937786e+01 0.7640799 1 0.7031602 0.2125262 0.0000039 ***
C. melonis 38_J 2.840539e+02 0.2986121 1 0.6617608 0.0711730 0.0000129 ***
C. melonis 107_J 5.445804e+02 0.5521151 1 0.3891686 0.2168420 0.0032887 **
C. melonis 54_J 9.389844e+02 0.2970031 1 0.4204157 0.1041192 0.0019870 **
C. melonis 137_J 2.308746e+03 2.2610122 1 0.8375797 0.2756205 0.0000000 ***
C. melonis 29_SP 2.368821e+03 0.8298349 3 0.8709697 0.0923599 0.0000002 ***
C. melonis 128_J 2.953681e+03 1.0151865 1 0.7317007 0.1668448 0.0000015 ***
C. melonis 133_J 1.081658e+05 0.9327112 1 0.5932410 0.1630168 0.0000711 ***
C. nymphae 66_PR 5.002570e-02 0.5933033 3 0.9443840 0.1246930 0.0000000 ***
C. nymphae 26_RS 6.969130e-02 0.4538523 3 0.9717482 0.0654617 0.0000000 ***
C. nymphae 80_J 3.479274e-01 1.1241160 3 0.9504702 0.1182372 0.0000000 ***
C. nymphae 20_PR 1.040560e+00 1.1341647 1 0.6790788 0.5726621 0.0000079 ***
C. nymphae 65_PR 1.171928e+00 0.7786978 1 0.9266418 0.1569508 0.0000000 ***
C. nymphae 21_PR 2.974853e+00 0.8597318 1 0.7052544 0.3334203 0.0000036 ***
C. nymphae 66_J 4.820054e+00 0.3971590 1 0.5236339 0.2095493 0.0003106 ***
C. nymphae 78_J 5.691433e+00 0.3977326 1 0.3611349 0.2849865 0.0050748 **
C. nymphae 29_J 6.663567e+00 0.6670011 1 0.8754703 0.1322399 0.0000000 ***
C. nymphae 15_PR 9.273869e+00 0.8386427 1 0.8905134 0.1471137 0.0000000 ***
C. nymphae 14_PR 9.625827e+00 1.1604525 1 0.6908557 0.3862528 0.0000056 ***
C. nymphae 179_PR 1.349800e+01 1.0477164 1 0.8711565 0.1910911 0.0000000 ***
C. nymphae 69_J 1.406178e+01 0.6858509 1 0.7322562 0.1955758 0.0000015 ***
C. nymphae 181_PR 2.181981e+01 0.4865023 3 0.9002382 0.1212298 0.0000000 ***
C. nymphae 142_PR 2.480796e+01 0.9328072 3 0.8904075 0.1373422 0.0000001 ***
C. nymphae 19_PR 2.558269e+01 0.6756686 1 0.6833351 0.2003745 0.0000070 ***
C. nymphae 47_RS 2.733633e+01 0.7695176 3 0.9236221 0.1239381 0.0000000 ***
C. nymphae 89_J 5.673636e+01 0.7342474 1 0.6113711 0.2315317 0.0000466 ***
C. nymphae 27_J 5.872798e+01 0.5061720 1 0.3084036 0.2985987 0.0110240 *
C. nymphae 134_J 6.996614e+01 1.0095203 1 0.8583536 0.1583559 0.0000000 ***
C. nymphae 144_J 1.702737e+02 0.4949728 1 0.5685044 0.1513149 0.0001231 ***
C. nymphae 69_PR 3.725455e+02 1.1378082 1 0.8473639 0.1568460 0.0000000 ***
C. nymphae 138_J 4.102602e+02 0.6820303 1 0.3411130 0.3050773 0.0068524 **
C. nymphae 20_RS 4.452144e+02 0.6209442 1 0.4005613 0.2426109 0.0027440 **
C. nymphae 76_J 6.198720e+02 0.3564793 1 0.2979542 0.1695265 0.0127862 *
C. nymphae 83_J 1.312084e+03 0.8476345 1 0.4690880 0.2615986 0.0008626 ***
C. nymphae 82_J 1.644668e+03 0.8121752 1 0.5999381 0.1887799 0.0000609 ***
C. nymphae 70_PR 2.142491e+03 0.7950848 1 0.5623607 0.1953448 0.0001405 ***
C. nymphae 125_J 1.332919e+04 0.7368639 1 0.4538095 0.1959613 0.0011289 **
C. crisophylum 14_SC 4.625850e-02 1.2837552 3 0.9622813 0.2080765 0.0000000 ***
C. crisophylum 62_SC 6.817630e-02 0.5779970 3 0.9679403 0.0917966 0.0000000 ***
C. crisophylum 27_SC 7.286840e-02 0.5822949 3 0.9726948 0.0853181 0.0000000 ***
C. crisophylum 48_PR 1.080788e-01 0.5724553 3 0.9553595 0.1099465 0.0000000 ***
C. crisophylum 19_SC 1.188428e-01 0.6953102 3 0.9666629 0.1112184 0.0000000 ***
C. crisophylum 39_SC 1.328953e-01 0.5819034 3 0.8748557 0.1862634 0.0000002 ***
C. crisophylum 87_SC 1.425085e-01 1.3998425 3 0.9478140 0.2962363 0.0000000 ***
C. crisophylum 133_PR 1.857501e-01 0.6640324 3 0.9212259 0.1601876 0.0000000 ***
C. crisophylum 79_SC 1.972641e-01 1.3558964 3 0.9547490 0.2657388 0.0000000 ***
C. crisophylum 132_PR 2.011159e-01 0.4537399 3 0.9635134 0.0766010 0.0000000 ***
C. crisophylum 74_SC 2.189344e-01 1.1472207 3 0.9234370 0.3075077 0.0000000 ***
C. crisophylum 60_SC 2.197540e-01 0.4107578 3 0.9172283 0.1149042 0.0000000 ***
C. crisophylum 76_SC 2.548616e-01 1.4855140 3 0.9794019 0.1935689 0.0000000 ***
C. crisophylum 71_PR 4.380351e-01 0.8278752 3 0.9764729 0.1124321 0.0000000 ***
C. crisophylum 53_PR 4.522767e-01 1.1513610 3 0.9913941 0.0946965 0.0000000 ***
C. crisophylum 75_SC 4.784465e-01 1.3856756 3 0.9821711 0.1731065 0.0000000 ***
C. crisophylum 69_SC 4.793223e-01 0.8028608 3 0.9746202 0.1184186 0.0000000 ***
C. crisophylum 70_SC 7.018246e-01 0.6921102 1 0.8892212 0.1957989 0.0000000 ***
C. crisophylum 55_PR 1.787990e+05 1.1054739 3 0.1160693 0.1723844 0.5654778 ns
Código
# columns_def <- 
#     sapply(c("df", "df_residual", "nobs"),
#            simplify = FALSE,
#            function(x) {
#                reactable::colDef(
#                    format = reactable::colFormat(digits = 0)
#                    )
#            })
# columns_def
# 
# tb_stats |>
#     reactable::reactable(
#         pagination = FALSE,
#         sortable = FALSE,
#         defaultColDef = reactable::colDef(
#             format = reactable::colFormat(digits = 3)),
#         columns = columns_def
#     ) |>
#     reactablefmtr::add_title(title = "Resultados finais.",
#                              font_size = 16)