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)

knitr::opts_chunk$set(
    dev = "svg",
    # dev.args = list(family = "Helvetica Condensed"),
    cache = FALSE)

#-----------------------------------------------------------------------
# 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.
tbs <- 
    c(map(1:3, function(s) {
    readxl::read_excel("baseline.xlsx", sheet = s) |>
        mutate_at(c("isolate", "species"), factor) |>
        add_column(source = "baseline")
    }),
    map(1:3, function(s) {
    readxl::read_excel("sensib.xlsx", sheet = s) |>
        mutate_at(c("isolate", "species"), factor) |>
        add_column(source = "sensib")
    }))
str(tbs)
List of 6
 $ : tibble [120 × 5] (S3: tbl_df/tbl/data.frame)
  ..$ isolate: Factor w/ 6 levels "132PR","133PR",..: 3 3 3 3 3 3 3 3 3 3 ...
  ..$ species: Factor w/ 1 level "C. crisophylum": 1 1 1 1 1 1 1 1 1 1 ...
  ..$ dose   : num [1:120] 0 0 0 0 0.1 0.1 0.1 0.1 1 1 ...
  ..$ growth : num [1:120] 1.22 1.13 1 1.14 0.69 0.7 0.63 0.72 0 0 ...
  ..$ source : chr [1:120] "baseline" "baseline" "baseline" "baseline" ...
 $ : tibble [80 × 5] (S3: tbl_df/tbl/data.frame)
  ..$ isolate: Factor w/ 4 levels "29SP","34SP",..: 4 4 4 4 4 4 4 4 4 4 ...
  ..$ species: Factor w/ 1 level "C. melonis": 1 1 1 1 1 1 1 1 1 1 ...
  ..$ dose   : num [1:80] 0 0 0 0 0.1 0.1 0.1 0.1 1 1 ...
  ..$ growth : num [1:80] 0.93 0.78 0.7 0.7 0.41 0.5 0.54 0.49 0.5 0.5 ...
  ..$ source : chr [1:80] "baseline" "baseline" "baseline" "baseline" ...
 $ : tibble [300 × 5] (S3: tbl_df/tbl/data.frame)
  ..$ isolate: Factor w/ 15 levels "142PR","14PR",..: 2 2 2 2 2 2 2 2 2 2 ...
  ..$ species: Factor w/ 1 level "C. nymphaea": 1 1 1 1 1 1 1 1 1 1 ...
  ..$ dose   : num [1:300] 0 0 0 0 0.1 0.1 0.1 0.1 1 1 ...
  ..$ growth : num [1:300] 2.93 1.73 2.11 2.3 2.21 1.88 1.4 1.74 1.63 1.83 ...
  ..$ source : chr [1:300] "baseline" "baseline" "baseline" "baseline" ...
 $ : tibble [260 × 5] (S3: tbl_df/tbl/data.frame)
  ..$ isolate: Factor w/ 13 levels "14 SC","19 SC",..: 9 9 9 9 9 9 9 9 9 9 ...
  ..$ species: Factor w/ 1 level "C. crisophylum": 1 1 1 1 1 1 1 1 1 1 ...
  ..$ dose   : num [1:260] 0 0 0 0 0.1 0.1 0.1 0.1 1 1 ...
  ..$ growth : num [1:260] 2.21 2.23 2.25 2.22 1.83 1.94 1.65 1.72 0 0 ...
  ..$ source : chr [1:260] "sensib" "sensib" "sensib" "sensib" ...
 $ : tibble [380 × 5] (S3: tbl_df/tbl/data.frame)
  ..$ isolate: Factor w/ 19 levels "107J","123J",..: 18 18 18 18 18 18 18 18 18 18 ...
  ..$ species: Factor w/ 1 level "C. melonis": 1 1 1 1 1 1 1 1 1 1 ...
  ..$ dose   : num [1:380] 0 0 0 0 0.1 0.1 0.1 0.1 1 1 ...
  ..$ growth : num [1:380] 0.5 0.33 0.74 1.11 0.37 0.44 0.6 0.6 0.31 0.31 ...
  ..$ source : chr [1:380] "sensib" "sensib" "sensib" "sensib" ...
 $ : tibble [280 × 5] (S3: tbl_df/tbl/data.frame)
  ..$ isolate: Factor w/ 14 levels "125J","134J",..: 5 5 5 5 5 5 5 5 5 5 ...
  ..$ species: Factor w/ 1 level "C. nymphaea": 1 1 1 1 1 1 1 1 1 1 ...
  ..$ dose   : num [1:280] 0 0 0 0 0.1 0.1 0.1 0.1 1 1 ...
  ..$ growth : num [1:280] 1.6 1.7 0.45 0.46 0.93 0.96 0.97 0.66 0.73 0.7 ...
  ..$ source : chr [1:280] "sensib" "sensib" "sensib" "sensib" ...
Código
# NOTE: Cada experimento avaliou apenas uma espécie. Juntar em uma única
# tabela.
tb <- bind_rows(tbs)
tb$source <- factor(tb$source)

# 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(source, species, isolate) |>
    print(n = Inf)
# A tibble: 71 × 4
   source   species        isolate     n
   <fct>    <fct>          <chr>   <int>
 1 baseline C. crisophylum 132_PR     20
 2 baseline C. crisophylum 133_PR     20
 3 baseline C. crisophylum 48_PR      20
 4 baseline C. crisophylum 53_PR      20
 5 baseline C. crisophylum 55_PR      20
 6 baseline C. crisophylum 71_PR      20
 7 baseline C. melonis     29_SP      20
 8 baseline C. melonis     34_SP      20
 9 baseline C. melonis     35_SP      20
10 baseline C. melonis     9_PR       20
11 baseline C. nymphaea    142_PR     20
12 baseline C. nymphaea    14_PR      20
13 baseline C. nymphaea    15_PR      20
14 baseline C. nymphaea    179_PR     20
15 baseline C. nymphaea    181_PR     20
16 baseline C. nymphaea    19_PR      20
17 baseline C. nymphaea    20_PR      20
18 baseline C. nymphaea    20_RS      20
19 baseline C. nymphaea    21_PR      20
20 baseline C. nymphaea    26_RS      20
21 baseline C. nymphaea    47_RS      20
22 baseline C. nymphaea    65_PR      20
23 baseline C. nymphaea    66_PR      20
24 baseline C. nymphaea    69_PR      20
25 baseline C. nymphaea    70_PR      20
26 sensib   C. crisophylum 14_SC      20
27 sensib   C. crisophylum 19_SC      20
28 sensib   C. crisophylum 27_SC      20
29 sensib   C. crisophylum 39_SC      20
30 sensib   C. crisophylum 60_SC      20
31 sensib   C. crisophylum 62_SC      20
32 sensib   C. crisophylum 69_SC      20
33 sensib   C. crisophylum 70_SC      20
34 sensib   C. crisophylum 74_SC      20
35 sensib   C. crisophylum 75_SC      20
36 sensib   C. crisophylum 76_SC      20
37 sensib   C. crisophylum 79_SC      20
38 sensib   C. crisophylum 87_SC      20
39 sensib   C. melonis     107_J      20
40 sensib   C. melonis     123_J      20
41 sensib   C. melonis     128_J      20
42 sensib   C. melonis     129_J      20
43 sensib   C. melonis     133_J      20
44 sensib   C. melonis     137_J      20
45 sensib   C. melonis     21_J       20
46 sensib   C. melonis     28_J       20
47 sensib   C. melonis     32_J       20
48 sensib   C. melonis     34_J       20
49 sensib   C. melonis     38_J       20
50 sensib   C. melonis     41_J       20
51 sensib   C. melonis     52_J       20
52 sensib   C. melonis     54_J       20
53 sensib   C. melonis     56_J       20
54 sensib   C. melonis     61_J       20
55 sensib   C. melonis     64_J       20
56 sensib   C. melonis     6_J        20
57 sensib   C. melonis     9_J        20
58 sensib   C. nymphaea    125_J      20
59 sensib   C. nymphaea    134_J      20
60 sensib   C. nymphaea    138_J      20
61 sensib   C. nymphaea    144_J      20
62 sensib   C. nymphaea    27_J       20
63 sensib   C. nymphaea    29_J       20
64 sensib   C. nymphaea    66_J       20
65 sensib   C. nymphaea    69_J       20
66 sensib   C. nymphaea    76_J       20
67 sensib   C. nymphaea    78_J       20
68 sensib   C. nymphaea    80_J       20
69 sensib   C. nymphaea    82_J       20
70 sensib   C. nymphaea    83_J       20
71 sensib   C. nymphaea    89_J       20
Código
# 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. nymphaea`
   <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 132_PR           6_J          21_PR        
 6     6 133_PR           9_J          65_PR        
 7     7 74_SC            21_J         66_PR        
 8     8 75_SC            28_J         69_PR        
 9     9 76_SC            32_J         70_PR        
10    10 79_SC            34_J         142_PR       
11    11 87_SC            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(source, 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
gg <- 
tb |>
    group_split(source) |>
    map(function(tbi) {
        title <- switch(as.character(tbi$source[1]),
                        "baseline" = "Antes da utilização do fungicida a campo (2010-2015)",
                        "sensib" = "Após a utilização do fungicida a campo (2016-2017)")
        show_legend <- as.character(tbi$source[1]) == "sensib"
        ggplot(data = tbi,
               mapping = aes(x = log_dose,
                             y = growth,
                             color = species)) +
            facet_wrap(~isolate, scale = "free_y", ncol = 7) +
            geom_point(pch = 1, show.legend = show_legend) +
            # scale_y_log10() +
            # stat_summary(geom = "line", fun = "mean") +
            geom_smooth(method = "lm",
                        formula = y ~ poly(x, degree = 3),
                        se = FALSE,
                        show.legend = show_legend,
                        linewidth = 0.5) +
            labs(title = title,
                 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())        
    })

gridExtra::grid.arrange(grobs = gg,
                        ncol = 1,
                        heights = c(38, 62))

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.

# Número de ajustes.
tb |>
    distinct(source, species, isolate) |>
    nrow()
[1] 71
Código
# Calcula ec50 para cada isolado usando o modelo linear.
k <- 1
tb_ec50_1 <-
    tb |>
    group_by(source, 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)
str(tb_ec50_1, max.level = 2, give.attr = FALSE)
tibble [71 × 7] (S3: tbl_df/tbl/data.frame)
 $ source : Factor w/ 2 levels "baseline","sensib": 1 1 1 1 1 1 1 1 1 1 ...
 $ species: Factor w/ 3 levels "C. crisophylum",..: 1 1 1 1 1 1 2 2 2 2 ...
 $ isolate: Factor w/ 71 levels "132_PR","133_PR",..: 1 2 3 4 5 6 7 8 9 10 ...
 $ x      : num [1:71] 1.71 1.77 1.62 1.78 35.05 ...
 $ y      : Named num [1:71] 0.408 0.599 0.476 1.124 1.081 ...
 $ y0     : num [1:71] 0.408 0.599 0.476 1.124 1.081 ...
 $ model  :List of 71
Código
# Ajustes que não tiveram solução.
tb_ec50_1 |>
    count(is.na(x))
# A tibble: 1 × 2
  `is.na(x)`     n
  <lgl>      <int>
1 FALSE         71
Código
# O polinômio de grau 1 tem apenas uma raíz.
tb_ec50_1 |>
    filter(isolate == isolate[1])
# A tibble: 1 × 7
  source   species        isolate     x     y    y0 model 
  <fct>    <fct>          <fct>   <dbl> <dbl> <dbl> <list>
1 baseline C. crisophylum 132_PR   1.71 0.408 0.408 <lm>  
Código
# Calcula ec50 para cada isolado usando o modelo cúbico.
k <- 3
tb_ec50_3 <-
    tb |>
    group_by(source, 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)
str(tb_ec50_3, max.level = 2, give.attr = FALSE)
tibble [147 × 7] (S3: tbl_df/tbl/data.frame)
 $ source : Factor w/ 2 levels "baseline","sensib": 1 1 1 1 1 1 1 1 1 1 ...
 $ species: Factor w/ 3 levels "C. crisophylum",..: 1 1 1 1 1 1 1 1 1 1 ...
 $ isolate: Factor w/ 71 levels "132_PR","133_PR",..: 1 1 1 2 2 2 3 3 3 4 ...
 $ x      : num [1:147] 1.32 -3.1 5.1 1.29 7.83 ...
 $ y      : Named num [1:147] 0.454 0.454 0.454 0.664 0.664 ...
 $ y0     : num [1:147] 0.454 0.454 0.454 0.664 0.664 ...
 $ model  :List of 147
Código
# O polinômio cúbico tem 3 raízes.
tb_ec50_3 |>
    filter(isolate == isolate[1])
# A tibble: 3 × 7
  source   species        isolate     x     y    y0 model 
  <fct>    <fct>          <fct>   <dbl> <dbl> <dbl> <list>
1 baseline C. crisophylum 132_PR   1.32 0.454 0.454 <lm>  
2 baseline C. crisophylum 132_PR  -3.10 0.454 0.454 <lm>  
3 baseline C. crisophylum 132_PR   5.10 0.454 0.454 <lm>  
Código
tb_ec50_3 |>
    count(is.na(x))
# A tibble: 1 × 2
  `is.na(x)`     n
  <lgl>      <int>
1 FALSE        147
Código
tb_ec50_3 |>
    count(is.finite(x))
# A tibble: 1 × 2
  `is.finite(x)`     n
  <lgl>          <int>
1 TRUE             147
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.

min(c(1, -Inf, NA), na.rm = TRUE)
[1] -Inf
Código
# Valida os valores de EC50 na escala em que foi estimada, ou seja, `x`.
tb_ec50 <-
    tb_ec50 |>
    # drop_na(x) |>
    group_by(order, source, species, isolate) |>
    # y e y0 devem ser próximos e x deve estar entre 0 e 8.
    mutate(x = if_else(between(x, 0, 7.4), x, NA_real_)) |>
    # Pega o menor valor quando houver vários válidos.
    filter(is.finite(x), !is.na(x)) |>
    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)

tb_ec50 |>
    count(order, source, species, isolate) |>
    pivot_wider(names_from = order,
                values_from = n) |>
    print(n = Inf)
# A tibble: 71 × 5
   source   species        isolate   `1`   `3`
   <fct>    <fct>          <fct>   <int> <int>
 1 baseline C. crisophylum 132_PR      1     2
 2 baseline C. crisophylum 133_PR      1     1
 3 baseline C. crisophylum 48_PR       1     2
 4 baseline C. crisophylum 53_PR       1     2
 5 baseline C. crisophylum 71_PR       1     2
 6 baseline C. melonis     29_SP       1     1
 7 baseline C. melonis     34_SP       1     1
 8 baseline C. melonis     35_SP       1     2
 9 baseline C. melonis     9_PR        1     1
10 baseline C. nymphaea    142_PR      1     1
11 baseline C. nymphaea    14_PR       1     1
12 baseline C. nymphaea    15_PR       1     1
13 baseline C. nymphaea    179_PR      1     2
14 baseline C. nymphaea    181_PR      1     1
15 baseline C. nymphaea    19_PR       1     1
16 baseline C. nymphaea    20_PR       1     1
17 baseline C. nymphaea    20_RS       1    NA
18 baseline C. nymphaea    21_PR       1     2
19 baseline C. nymphaea    26_RS       1     1
20 baseline C. nymphaea    47_RS       1     1
21 baseline C. nymphaea    65_PR       1     1
22 baseline C. nymphaea    66_PR       1     2
23 baseline C. nymphaea    69_PR       1     1
24 baseline C. nymphaea    70_PR       1     1
25 sensib   C. crisophylum 14_SC       1     1
26 sensib   C. crisophylum 19_SC       1     2
27 sensib   C. crisophylum 27_SC       1     2
28 sensib   C. crisophylum 39_SC       1     2
29 sensib   C. crisophylum 60_SC       1     2
30 sensib   C. crisophylum 62_SC       1     2
31 sensib   C. crisophylum 69_SC       1     2
32 sensib   C. crisophylum 70_SC       1     2
33 sensib   C. crisophylum 74_SC       1     2
34 sensib   C. crisophylum 75_SC       1     2
35 sensib   C. crisophylum 76_SC       1     2
36 sensib   C. crisophylum 79_SC       1     2
37 sensib   C. crisophylum 87_SC       1     2
38 sensib   C. melonis     107_J       1     1
39 sensib   C. melonis     123_J       1     1
40 sensib   C. melonis     128_J       1    NA
41 sensib   C. melonis     129_J       1     2
42 sensib   C. melonis     133_J       1     1
43 sensib   C. melonis     137_J       1    NA
44 sensib   C. melonis     21_J        1     2
45 sensib   C. melonis     28_J        1     2
46 sensib   C. melonis     32_J        1     1
47 sensib   C. melonis     34_J        1     2
48 sensib   C. melonis     38_J        1     1
49 sensib   C. melonis     41_J        1     2
50 sensib   C. melonis     52_J        1     1
51 sensib   C. melonis     54_J        1     1
52 sensib   C. melonis     56_J        1     1
53 sensib   C. melonis     61_J        1     1
54 sensib   C. melonis     64_J        1     2
55 sensib   C. melonis     6_J         1     1
56 sensib   C. melonis     9_J         1     1
57 sensib   C. nymphaea    125_J       1     1
58 sensib   C. nymphaea    134_J       1     2
59 sensib   C. nymphaea    138_J       1     1
60 sensib   C. nymphaea    144_J       1     1
61 sensib   C. nymphaea    27_J        1     1
62 sensib   C. nymphaea    29_J        1     2
63 sensib   C. nymphaea    66_J        1     1
64 sensib   C. nymphaea    69_J        1     2
65 sensib   C. nymphaea    76_J        1     1
66 sensib   C. nymphaea    78_J        1     1
67 sensib   C. nymphaea    80_J        1     3
68 sensib   C. nymphaea    82_J        1     1
69 sensib   C. nymphaea    83_J        1     1
70 sensib   C. nymphaea    89_J        1     1
71 baseline C. crisophylum 55_PR      NA     1
Código
# Quais isolados não tiveram EC50 estimada?
tb_ec50 |>
    group_by(order, source, 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: 0 × 6
# ℹ 6 variables: order <chr>, source <fct>, species <fct>, isolate <fct>,
#   n <int>, n_ec50 <int>

3.2 Bondade do ajuste

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

tb_gof <- tb_ec50 |>
    group_by(source, 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.
source species isolate order r_squared adj_r_squared sigma statistic p_value df log_lik aic bic deviance df_residual nobs
baseline 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
baseline 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
baseline 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
baseline 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
baseline 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
baseline 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
baseline 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
baseline 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
baseline 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
baseline 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
baseline 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
baseline 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
baseline 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
baseline 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
baseline 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
baseline 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
baseline 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
baseline 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
baseline 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
baseline C. nymphaea 142_PR 1 0.7999931 0.7888816 0.1749283 71.9968804 0.0000001 1 7.5424218 -9.0848437 -6.0976469 0.5507981 18 20
baseline C. nymphaea 142_PR 3 0.8904075 0.8698589 0.1373422 43.3318110 0.0000001 3 13.5582555 -17.1165111 -12.1378497 0.3018062 16 20
baseline C. nymphaea 14_PR 1 0.6908557 0.6736811 0.3862528 40.2252437 0.0000056 1 -8.2999009 22.5998019 25.5869987 2.6854419 18 20
baseline C. nymphaea 14_PR 3 0.7042654 0.6488151 0.4006991 12.7008520 0.0001677 3 -7.8564463 25.7128926 30.6915540 2.5689566 16 20
baseline C. nymphaea 15_PR 1 0.8905134 0.8844308 0.1471137 146.4036988 0.0000000 1 11.0058314 -16.0116628 -13.0244660 0.3895637 18 20
baseline C. nymphaea 15_PR 3 0.8990809 0.8801585 0.1498082 47.5142635 0.0000000 3 11.8206572 -13.6413145 -8.6626531 0.3590798 16 20
baseline C. nymphaea 179_PR 1 0.8711565 0.8639986 0.1910911 121.7044058 0.0000000 1 5.7749332 -5.5498664 -2.5626696 0.6572846 18 20
baseline C. nymphaea 179_PR 3 0.8816411 0.8594488 0.1942612 39.7273436 0.0000001 3 6.6236980 -3.2473960 1.7312654 0.6037986 16 20
baseline C. nymphaea 181_PR 1 0.7145123 0.6986519 0.1933502 45.0499991 0.0000027 1 5.5398793 -5.0797587 -2.0925618 0.6729174 18 20
baseline C. nymphaea 181_PR 3 0.9002382 0.8815328 0.1212298 48.1273257 0.0000000 3 16.0540125 -22.1080249 -17.1293636 0.2351466 16 20
baseline C. nymphaea 19_PR 1 0.6833351 0.6657426 0.2003745 38.8424143 0.0000070 1 4.8261757 -3.6523515 -0.6651546 0.7226991 18 20
baseline C. nymphaea 19_PR 3 0.7369306 0.6876051 0.1937108 14.9401534 0.0000670 3 6.6804408 -3.3608816 1.6177797 0.6003822 16 20
baseline C. nymphaea 20_PR 1 0.6790788 0.6612499 0.5726621 38.0885402 0.0000079 1 -16.1759760 38.3519519 41.3391488 5.9029534 18 20
baseline C. nymphaea 20_PR 3 0.6809875 0.6211726 0.6055909 11.3849236 0.0003030 3 -16.1163244 42.2326488 47.2113101 5.8678462 16 20
baseline C. nymphaea 20_RS 1 0.4005613 0.3672591 0.2426109 12.0280911 0.0027440 1 1.0007611 3.9984779 6.9856747 1.0594809 18 20
baseline C. nymphaea 21_PR 1 0.7052544 0.6888797 0.3334203 43.0696238 0.0000036 1 -5.3581372 16.7162744 19.7034712 2.0010438 18 20
baseline C. nymphaea 21_PR 3 0.7216492 0.6694585 0.3436694 13.8271433 0.0001043 3 -4.7858334 19.5716667 24.5503281 1.8897387 16 20
baseline C. nymphaea 26_RS 1 0.8123544 0.8019296 0.1590586 77.9254999 0.0000001 1 9.4444881 -12.8889763 -9.9017795 0.4553934 18 20
baseline C. nymphaea 26_RS 3 0.9717482 0.9664510 0.0654617 183.4453753 0.0000000 3 28.3784777 -46.7569553 -41.7782940 0.0685637 16 20
baseline C. nymphaea 47_RS 1 0.8293102 0.8198274 0.1746821 87.4544351 0.0000000 1 7.5705830 -9.1411660 -6.1539692 0.5492492 18 20
baseline C. nymphaea 47_RS 3 0.9236221 0.9093013 0.1239381 64.4948992 0.0000000 3 15.6121307 -21.2242613 -16.2456000 0.2457703 16 20
baseline C. nymphaea 65_PR 1 0.9266418 0.9225664 0.1569508 227.3714760 0.0000000 1 9.7112865 -13.4225731 -10.4353762 0.4434042 18 20
baseline C. nymphaea 65_PR 3 0.9416364 0.9306932 0.1484864 86.0478276 0.0000000 3 11.9979003 -13.9958005 -9.0171392 0.3527715 16 20
baseline C. nymphaea 66_PR 1 0.7258399 0.7106087 0.2610165 47.6550571 0.0000019 1 -0.4617354 6.9234708 9.9106677 1.2263334 18 20
baseline C. nymphaea 66_PR 3 0.9443840 0.9339560 0.1246930 90.5622826 0.0000000 3 15.4906742 -20.9813484 -16.0026870 0.2487736 16 20
baseline C. nymphaea 69_PR 1 0.8473639 0.8388841 0.1568460 99.9275396 0.0000000 1 9.7246556 -13.4493112 -10.4621144 0.4428118 18 20
baseline C. nymphaea 69_PR 3 0.8948860 0.8751772 0.1380547 45.4052447 0.0000000 3 13.4547705 -16.9095410 -11.9308797 0.3049456 16 20
baseline C. nymphaea 70_PR 1 0.5623607 0.5380474 0.1953448 23.1297593 0.0001405 1 5.3346147 -4.6692294 -1.6820325 0.6868727 18 20
baseline C. nymphaea 70_PR 3 0.6330492 0.5642459 0.1897247 9.2008587 0.0009006 3 7.0962880 -4.1925761 0.7860853 0.5759274 16 20
sensib 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
sensib 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
sensib 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
sensib 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
sensib 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
sensib 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
sensib 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
sensib 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
sensib 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
sensib 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
sensib 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
sensib 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
sensib 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
sensib 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
sensib 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
sensib 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
sensib 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
sensib 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
sensib 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
sensib 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
sensib 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
sensib 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
sensib 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
sensib 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
sensib 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
sensib 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
sensib 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
sensib 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
sensib 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
sensib 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
sensib 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
sensib 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
sensib 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
sensib 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
sensib 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
sensib 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
sensib 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
sensib 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
sensib 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
sensib 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
sensib 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
sensib 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
sensib 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
sensib 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
sensib 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
sensib 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
sensib 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
sensib 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
sensib 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
sensib 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
sensib 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
sensib 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
sensib 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
sensib 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
sensib 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
sensib 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
sensib 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
sensib 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
sensib 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
sensib 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
sensib 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
sensib 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
sensib C. nymphaea 125_J 1 0.4538095 0.4234656 0.1959613 14.9555340 0.0011289 1 5.2715954 -4.5431908 -1.5559940 0.6912150 18 20
sensib C. nymphaea 125_J 3 0.5164420 0.4257749 0.1955685 5.6960230 0.0075296 3 6.4895615 -2.9791229 1.9995384 0.6119523 16 20
sensib C. nymphaea 134_J 1 0.8583536 0.8504843 0.1583559 109.0769586 0.0000000 1 9.5330455 -13.0660910 -10.0788941 0.4513784 18 20
sensib C. nymphaea 134_J 3 0.8743217 0.8507570 0.1582114 37.1030410 0.0000002 3 10.7291288 -11.4582575 -6.4795962 0.4004935 16 20
sensib C. nymphaea 138_J 1 0.3411130 0.3045081 0.3050773 9.3187950 0.0068524 1 -3.5813667 13.1627334 16.1499302 1.6752994 18 20
sensib C. nymphaea 138_J 3 0.4004543 0.2880394 0.3086682 3.5622903 0.0380185 3 -2.6375684 15.2751368 20.2537982 1.5244170 16 20
sensib C. nymphaea 144_J 1 0.5685044 0.5445325 0.1513149 23.7153769 0.0001231 1 10.4426757 -14.8853515 -11.8981547 0.4121317 18 20
sensib C. nymphaea 144_J 3 0.5774807 0.4982583 0.1588156 7.2893629 0.0026781 3 10.6528957 -11.3057914 -6.3271300 0.4035583 16 20
sensib C. nymphaea 27_J 1 0.3084036 0.2699815 0.2985987 8.0267389 0.0110240 1 -3.1520712 12.3041425 15.2913393 1.6049014 18 20
sensib C. nymphaea 27_J 3 0.3273480 0.2012258 0.3123439 2.5954819 0.0884413 3 -2.8743260 15.7486520 20.7273134 1.5609394 16 20
sensib C. nymphaea 29_J 1 0.8754703 0.8685519 0.1322399 126.5437833 0.0000000 1 13.1375809 -20.2751618 -17.2879650 0.3147732 18 20
sensib C. nymphaea 29_J 3 0.8867119 0.8654704 0.1337810 41.7442794 0.0000001 3 14.0836853 -18.1673706 -13.1887092 0.2863578 16 20
sensib C. nymphaea 66_J 1 0.5236339 0.4971691 0.2095493 19.7860615 0.0003106 1 3.9307613 -1.8615226 1.1256742 0.7903962 18 20
sensib C. nymphaea 66_J 3 0.5432291 0.4575846 0.2176412 6.3428345 0.0048721 3 4.3508099 1.2983803 6.2770416 0.7578834 16 20
sensib C. nymphaea 69_J 1 0.7322562 0.7173815 0.1955758 49.2284443 0.0000015 1 5.3109828 -4.6219655 -1.6347687 0.6884979 18 20
sensib C. nymphaea 69_J 3 0.8124605 0.7772968 0.1736113 23.1051206 0.0000047 3 8.8713941 -7.7427882 -2.7641268 0.4822541 16 20
sensib C. nymphaea 76_J 1 0.2979542 0.2589517 0.1695265 7.6393534 0.0127862 1 8.1697601 -10.3395202 -7.3523234 0.5173059 18 20
sensib C. nymphaea 76_J 3 0.3000835 0.1688492 0.1795371 2.2866235 0.1177339 3 8.2001363 -6.4002726 -1.4216112 0.5157370 16 20
sensib C. nymphaea 78_J 1 0.3611349 0.3256423 0.2849865 10.1749601 0.0050748 1 -2.2188990 10.4377981 13.4249949 1.4619119 18 20
sensib C. nymphaea 78_J 3 0.4145447 0.3047719 0.2893629 3.7763864 0.0318558 3 -1.3458628 12.6917256 17.6703870 1.3396943 16 20
sensib C. nymphaea 80_J 1 0.6584325 0.6394566 0.2927405 34.6982276 0.0000141 1 -2.7557909 11.5115818 14.4987786 1.5425460 18 20
sensib C. nymphaea 80_J 3 0.9504702 0.9411833 0.1182372 102.3458756 0.0000000 3 16.5539093 -23.1078186 -18.1291573 0.2236807 16 20
sensib C. nymphaea 82_J 1 0.5999381 0.5777125 0.1887799 26.9930418 0.0000609 1 6.0183062 -6.0366125 -3.0494157 0.6414812 18 20
sensib C. nymphaea 82_J 3 0.6630789 0.5999062 0.1837522 10.4962869 0.0004638 3 7.7360098 -5.4720196 -0.4933582 0.5402379 16 20
sensib C. nymphaea 83_J 1 0.4690880 0.4395929 0.2615986 15.9039266 0.0008626 1 -0.5062833 7.0125666 9.9997634 1.2318086 18 20
sensib C. nymphaea 83_J 3 0.5625220 0.4804949 0.2518712 6.8577561 0.0034995 3 1.4294147 7.1411707 12.1198320 1.0150255 16 20
sensib C. nymphaea 89_J 1 0.6113711 0.5897806 0.2315317 28.3166767 0.0000466 1 1.9356032 2.1287937 5.1159905 0.9649248 18 20
sensib C. nymphaea 89_J 3 0.6789685 0.6187751 0.2231994 11.2797802 0.0003183 3 3.8464591 2.3070818 7.2857432 0.7970876 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
gg <- 
tb |>
    distinct(source, isolate) |>
    group_split(source) |>
    map(function(tbi) {
        title <- switch(as.character(tbi$source[1]),
                        "baseline" = "Antes da utilização do fungicida a campo (2010-2015)",
                        "sensib" = "Após a utilização do fungicida a campo (2016-2017)")
        show_legend <- as.character(tbi$source[1]) == "sensib"
        ggplot(data = filter(tb, isolate %in% tbi$isolate),
               mapping = aes(x = log_dose,
                             y = growth,
                             color = species)) +
            facet_wrap(~isolate, scale = "free", ncol = 6) +
            geom_point(pch = 1, show.legend = show_legend) +
            geom_line(data = filter(tb_ec50_pred, isolate %in% tbi$isolate),
                      show.legend = show_legend,
                      mapping = aes(x = x, y = y, linetype = order),
                      size = 0.5) +
            geom_vline(data = filter(tb_ec50, isolate %in% tbi$isolate),
                       mapping = aes(xintercept = x, # x = log10(ec50 + 0.01),
                                     linetype = order),
                       color = "gray30",
                       linewidth = 0.25,
                       show.legend = FALSE) +
            geom_hline(data = filter(tb_ec50, isolate %in% tbi$isolate),
                       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 = title,
                 subtitle = expression("Ajuste com os modelos linear e cúbico para determinação da" ~ EC[50]))
    })

gridExtra::grid.arrange(grobs = gg,
                        ncol = 1,
                        heights = c(37, 63))

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 × 9
   order source   species        isolate     x     y    y0 model         ec50
   <chr> <fct>    <fct>          <fct>   <dbl> <dbl> <dbl> <list>       <dbl>
 1 3     baseline C. crisophylum 132_PR  1.32  0.454 0.454 <lm>        0.201 
 2 3     baseline C. crisophylum 133_PR  1.29  0.664 0.664 <lm>        0.186 
 3 3     baseline C. crisophylum 48_PR   1.07  0.572 0.572 <lm>        0.108 
 4 3     baseline C. crisophylum 53_PR   1.66  1.15  1.15  <lm>        0.452 
 5 3     baseline C. crisophylum 55_PR   7.25  1.11  1.11  <lm>   178799.    
 6 3     baseline C. crisophylum 71_PR   1.65  0.828 0.828 <lm>        0.438 
 7 3     sensib   C. crisophylum 14_SC   0.750 1.28  1.28  <lm>        0.0463
 8 3     sensib   C. crisophylum 19_SC   1.11  0.695 0.695 <lm>        0.119 
 9 3     sensib   C. crisophylum 27_SC   0.918 0.582 0.582 <lm>        0.0729
10 3     sensib   C. crisophylum 39_SC   1.16  0.582 0.582 <lm>        0.133 
# ℹ 61 more rows
Código
# Filtra os pontos.
tb_ec50_pred <-
    left_join(tb_ec50_final[, c("order", "source", "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_grid(species ~ source) +
#     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"))

ggplot(data = tb_ec50_final,
       mapping = aes(x = ec50, color = source, fill = source)) +
    # facet_wrap(~species, ncol = 1, scale = "free") +
    facet_wrap(~species, ncol = 1, scale = "free_y") +
    geom_density(alpha = 0.3) +
    geom_rug() +
    scale_x_log10() +
    guides(fill = "none") +
    # Trocar o rótulo dos níveis de source na legenda das cores.
    scale_color_discrete(labels = c("2010-2015", "2016-2017")) +
    labs(x = expression(EC[50] * "· escala" ~ log[10]),
         y = "Densidade",
         color = "Fonte",
         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
# Gráficos de densidade da ec50.
ggplot(data = tb_ec50_final,
       mapping = aes(x = ec50, color = source)) +
    facet_wrap(~species, ncol = 1) +
    # facet_wrap(~species, ncol = 1, scale = "free_x") + 
    stat_ecdf() +
    geom_rug() +
    scale_x_log10() +
    scale_color_discrete(labels = c("2010-2015", "2016-2017")) +
    labs(x = expression(EC[50] * "· escala" ~ log[10]),
         y = "Distribuição acumulada",
         color = "Fonte",
         title = expression("Distribuição da" ~ EC[50] ~ "por espécie"))

Figura 6. 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) |>
    arrange(source, species, isolate)
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.
source species isolate ec50 growth50 order r_squared sigma p_value signif
baseline C. crisophylum 48_PR 1.080788e-01 0.5724553 3 0.9553595 0.1099465 0.0000000 ***
baseline C. crisophylum 133_PR 1.857501e-01 0.6640324 3 0.9212259 0.1601876 0.0000000 ***
baseline C. crisophylum 132_PR 2.011159e-01 0.4537399 3 0.9635134 0.0766010 0.0000000 ***
baseline C. crisophylum 71_PR 4.380351e-01 0.8278752 3 0.9764729 0.1124321 0.0000000 ***
baseline C. crisophylum 53_PR 4.522767e-01 1.1513610 3 0.9913941 0.0946965 0.0000000 ***
baseline C. crisophylum 55_PR 1.787990e+05 1.1054739 3 0.1160693 0.1723844 0.5654778 ns
baseline C. melonis 34_SP 1.372845e-01 0.8138156 3 0.6505313 0.3297340 0.0006165 ***
baseline C. melonis 9_PR 1.140306e+01 0.3885165 3 0.9560467 0.0597893 0.0000000 ***
baseline C. melonis 35_SP 2.937786e+01 0.7640799 1 0.7031602 0.2125262 0.0000039 ***
baseline C. melonis 29_SP 2.368821e+03 0.8298349 3 0.8709697 0.0923599 0.0000002 ***
baseline C. nymphaea 66_PR 5.002570e-02 0.5933033 3 0.9443840 0.1246930 0.0000000 ***
baseline C. nymphaea 26_RS 6.969130e-02 0.4538523 3 0.9717482 0.0654617 0.0000000 ***
baseline C. nymphaea 20_PR 1.040560e+00 1.1341647 1 0.6790788 0.5726621 0.0000079 ***
baseline C. nymphaea 65_PR 1.171928e+00 0.7786978 1 0.9266418 0.1569508 0.0000000 ***
baseline C. nymphaea 21_PR 2.974853e+00 0.8597318 1 0.7052544 0.3334203 0.0000036 ***
baseline C. nymphaea 15_PR 9.273869e+00 0.8386427 1 0.8905134 0.1471137 0.0000000 ***
baseline C. nymphaea 14_PR 9.625827e+00 1.1604525 1 0.6908557 0.3862528 0.0000056 ***
baseline C. nymphaea 179_PR 1.349800e+01 1.0477164 1 0.8711565 0.1910911 0.0000000 ***
baseline C. nymphaea 181_PR 2.181981e+01 0.4865023 3 0.9002382 0.1212298 0.0000000 ***
baseline C. nymphaea 142_PR 2.480796e+01 0.9328072 3 0.8904075 0.1373422 0.0000001 ***
baseline C. nymphaea 19_PR 2.558269e+01 0.6756686 1 0.6833351 0.2003745 0.0000070 ***
baseline C. nymphaea 47_RS 2.733633e+01 0.7695176 3 0.9236221 0.1239381 0.0000000 ***
baseline C. nymphaea 69_PR 3.725455e+02 1.1378082 1 0.8473639 0.1568460 0.0000000 ***
baseline C. nymphaea 20_RS 4.452144e+02 0.6209442 1 0.4005613 0.2426109 0.0027440 **
baseline C. nymphaea 70_PR 2.142491e+03 0.7950848 1 0.5623607 0.1953448 0.0001405 ***
sensib C. crisophylum 14_SC 4.625850e-02 1.2837552 3 0.9622813 0.2080765 0.0000000 ***
sensib C. crisophylum 62_SC 6.817630e-02 0.5779970 3 0.9679403 0.0917966 0.0000000 ***
sensib C. crisophylum 27_SC 7.286840e-02 0.5822949 3 0.9726948 0.0853181 0.0000000 ***
sensib C. crisophylum 19_SC 1.188428e-01 0.6953102 3 0.9666629 0.1112184 0.0000000 ***
sensib C. crisophylum 39_SC 1.328953e-01 0.5819034 3 0.8748557 0.1862634 0.0000002 ***
sensib C. crisophylum 87_SC 1.425085e-01 1.3998425 3 0.9478140 0.2962363 0.0000000 ***
sensib C. crisophylum 79_SC 1.972641e-01 1.3558964 3 0.9547490 0.2657388 0.0000000 ***
sensib C. crisophylum 74_SC 2.189344e-01 1.1472207 3 0.9234370 0.3075077 0.0000000 ***
sensib C. crisophylum 60_SC 2.197540e-01 0.4107578 3 0.9172283 0.1149042 0.0000000 ***
sensib C. crisophylum 76_SC 2.548616e-01 1.4855140 3 0.9794019 0.1935689 0.0000000 ***
sensib C. crisophylum 75_SC 4.784465e-01 1.3856756 3 0.9821711 0.1731065 0.0000000 ***
sensib C. crisophylum 69_SC 4.793223e-01 0.8028608 3 0.9746202 0.1184186 0.0000000 ***
sensib C. crisophylum 70_SC 7.018246e-01 0.6921102 1 0.8892212 0.1957989 0.0000000 ***
sensib C. melonis 52_J 5.209530e-02 1.0857784 3 0.8573662 0.2641638 0.0000005 ***
sensib C. melonis 64_J 5.303311e-01 0.3920875 1 0.6420365 0.2508702 0.0000218 ***
sensib C. melonis 28_J 6.544970e-01 0.2080487 3 0.8416138 0.0883329 0.0000012 ***
sensib C. melonis 41_J 7.244631e-01 0.2426289 1 0.6297443 0.1480289 0.0000297 ***
sensib C. melonis 9_J 1.501057e+00 0.4331988 1 0.8458240 0.1260035 0.0000000 ***
sensib C. melonis 34_J 2.543366e+00 1.3369059 3 0.8611174 0.2811522 0.0000004 ***
sensib C. melonis 129_J 4.151855e+00 0.8703013 1 0.7052591 0.3189131 0.0000036 ***
sensib C. melonis 21_J 8.302947e+00 0.5549428 1 0.4610781 0.3050826 0.0009941 ***
sensib C. melonis 6_J 1.066046e+01 0.3280989 1 0.3720866 0.2089732 0.0042919 **
sensib C. melonis 61_J 1.105840e+01 0.3956014 3 0.8560655 0.1198022 0.0000006 ***
sensib C. melonis 56_J 1.123988e+01 0.3703465 3 0.9457672 0.0663475 0.0000000 ***
sensib C. melonis 32_J 1.560928e+01 0.3077080 3 0.8977128 0.0758518 0.0000000 ***
sensib C. melonis 123_J 2.164230e+01 0.8560977 1 0.3570575 0.5113507 0.0053981 **
sensib C. melonis 38_J 2.840539e+02 0.2986121 1 0.6617608 0.0711730 0.0000129 ***
sensib C. melonis 107_J 5.445804e+02 0.5521151 1 0.3891686 0.2168420 0.0032887 **
sensib C. melonis 54_J 9.389844e+02 0.2970031 1 0.4204157 0.1041192 0.0019870 **
sensib C. melonis 137_J 2.308746e+03 2.2610122 1 0.8375797 0.2756205 0.0000000 ***
sensib C. melonis 128_J 2.953681e+03 1.0151865 1 0.7317007 0.1668448 0.0000015 ***
sensib C. melonis 133_J 1.081658e+05 0.9327112 1 0.5932410 0.1630168 0.0000711 ***
sensib C. nymphaea 80_J 3.479274e-01 1.1241160 3 0.9504702 0.1182372 0.0000000 ***
sensib C. nymphaea 66_J 4.820054e+00 0.3971590 1 0.5236339 0.2095493 0.0003106 ***
sensib C. nymphaea 78_J 5.691433e+00 0.3977326 1 0.3611349 0.2849865 0.0050748 **
sensib C. nymphaea 29_J 6.663567e+00 0.6670011 1 0.8754703 0.1322399 0.0000000 ***
sensib C. nymphaea 69_J 1.406178e+01 0.6858509 1 0.7322562 0.1955758 0.0000015 ***
sensib C. nymphaea 89_J 5.673636e+01 0.7342474 1 0.6113711 0.2315317 0.0000466 ***
sensib C. nymphaea 27_J 5.872798e+01 0.5061720 1 0.3084036 0.2985987 0.0110240 *
sensib C. nymphaea 134_J 6.996614e+01 1.0095203 1 0.8583536 0.1583559 0.0000000 ***
sensib C. nymphaea 144_J 1.702737e+02 0.4949728 1 0.5685044 0.1513149 0.0001231 ***
sensib C. nymphaea 138_J 4.102602e+02 0.6820303 1 0.3411130 0.3050773 0.0068524 **
sensib C. nymphaea 76_J 6.198720e+02 0.3564793 1 0.2979542 0.1695265 0.0127862 *
sensib C. nymphaea 83_J 1.312084e+03 0.8476345 1 0.4690880 0.2615986 0.0008626 ***
sensib C. nymphaea 82_J 1.644668e+03 0.8121752 1 0.5999381 0.1887799 0.0000609 ***
sensib C. nymphaea 125_J 1.332919e+04 0.7368639 1 0.4538095 0.1959613 0.0011289 **
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)