Aula 47. Tabela publicável em 5 minutos com gtsummary

Do resumo descritivo à tabela comparativa entre grupos, pronta para o artigo

Acompanhe o Café com R

  • Que cada gole desperte uma nova ideia.

  • Que cada script abra uma nova conversa.

  • Que o Café com R se torne um ponto de encontro nosso.

SITE OFICIAL > https://jenniferlopes.github.io/meu_site/

Objetivos da aula

  • Construir uma tabela descritiva básica com tbl_summary()
  • Comparar grupos em uma única tabela, com teste estatístico embutido
  • Personalizar rótulos, cabeçalhos e totais gerais
  • Exportar a tabela final para Word e HTML

Bloco 1

Fundamentos

Conceito, o que o gtsummary resolve

  • Contexto: amostras de solo de três regiões produtoras, pH, matéria orgânica e teor de argila, precisam compor a tabela descritiva de um artigo científico.

  • Construir essa tabela manualmente, calculando média, desvio padrão e formatando célula por célula, consome tempo e introduz risco de erro de transcrição.

  • O pacote gtsummary gera a tabela descritiva completa a partir do próprio data frame, com uma linha de código.

Código: tbl_summary() básico

Table 1
amostras_solo |>
  select(ph, materia_organica, argila) |>
  tbl_summary()

Output: tabela descritiva básica

Table 2
Characteristic N = 1201
ph 5.67 (5.31, 6.15)
materia_organica 2.93 (2.38, 3.27)
argila 32 (27, 42)
1 Median (Q1, Q3)
  • A tabela já apresenta mediana e intervalo interquartil por padrão, a medida mais apropriada quando não se assume normalidade previamente. O formato de saída já corresponde ao esperado por periódicos científicos.

Bloco 2

Comparação entre Grupos

Código: tbl_summary() por grupo com add_p()

Table 3
amostras_solo |>
  select(regiao, ph, materia_organica, argila) |>
  tbl_summary(by = regiao) |>
  add_p()

Output: tabela comparativa com teste estatístico

Table 4
Characteristic Região Norte
N = 401
Região Central
N = 401
Região Sul
N = 401
p-value2
ph 5.59 (5.32, 5.83) 6.22 (6.05, 6.38) 5.29 (5.08, 5.63) <0.001
materia_organica 2.68 (2.23, 3.09) 3.43 (3.08, 3.72) 2.43 (2.04, 2.87) <0.001
argila 30 (25, 37) 45 (41, 50) 29 (25, 32) <0.001
1 Median (Q1, Q3)
2 Kruskal-Wallis rank sum test
  • A função add_p() seleciona automaticamente um teste estatístico apropriado ao tipo de variável, ANOVA ou Kruskal-Wallis para variáveis contínuas comparadas entre três grupos, e adiciona o valor de p em uma coluna própria, sem cálculo manual separado.

Código: personalizações

Table 5
amostras_solo |>
  select(regiao, ph, materia_organica, argila) |>
  tbl_summary(
    by = regiao,
    label = list(
      ph                ~ "pH do solo",
      materia_organica  ~ "Matéria orgânica (%)",
      argila            ~ "Argila (%)")) |>
  add_p() |>
  add_overall() |>
  bold_labels() |>
  modify_header(label ~ "**Variável**")

Output: tabela final formatada

Table 6
Variável Overall
N = 1201
Região Norte
N = 401
Região Central
N = 401
Região Sul
N = 401
p-value2
pH do solo 5.67 (5.31, 6.15) 5.59 (5.32, 5.83) 6.22 (6.05, 6.38) 5.29 (5.08, 5.63) <0.001
Matéria orgânica (%) 2.93 (2.38, 3.27) 2.68 (2.23, 3.09) 3.43 (3.08, 3.72) 2.43 (2.04, 2.87) <0.001
Argila (%) 32 (27, 42) 30 (25, 37) 45 (41, 50) 29 (25, 32) <0.001
1 Median (Q1, Q3)
2 Kruskal-Wallis rank sum test
  • A coluna geral, adicionada por add_overall(), mostra o resumo de todas as regiões juntas, útil para o leitor comparar cada grupo ao conjunto total. Rótulos legíveis substituem os nomes técnicos das colunas do banco de dados.

Bloco 3

Exportação

Código: exportação para Word e HTML

tabela_final <- amostras_solo |>
  select(regiao, ph, materia_organica, argila) |>
  tbl_summary(by = regiao) |>
  add_p()

tabela_final |> as_gt() |> gt::gtsave("tabela_solo.html")

tabela_final |> as_flex_table() |>
  flextable::save_as_docx(path = "tabela_solo.docx")
  • as_gt() converte a tabela para o formato do pacote gt, adequado para exportação em HTML. as_flex_table() converte para o formato do pacote flextable, adequado para exportação direta em documento Word.

Boas práticas para tabela de publicação

  • Reportar mediana e intervalo interquartil para variáveis sem distribuição normal confirmada, e média com desvio padrão apenas quando a normalidade for verificada.

  • Incluir o teste estatístico utilizado em nota de rodapé da tabela, não apenas o valor de p isolado.

  • Manter os rótulos das variáveis em linguagem acessível ao leitor do artigo, evitando nomes técnicos de coluna do banco de dados.

Bloco 4

Erros Comuns

Erro comum 1, reportar apenas média quando a variável não é normal

  • O padrão do tbl_summary() já reporta mediana e IQR, mas trocar manualmente para média e desvio padrão sem verificar a normalidade da variável reintroduz o problema que o padrão do pacote evita.

  • Verificar a distribuição antes de decidir qual estatística de resumo faz mais sentido reportar.

Erro comum 2, não ajustar o teste estatístico ao tipo de variável

  • O add_p() escolhe um teste padrão razoável, mas esse padrão pode não ser o mais adequado para todas as situações, como dados pareados ou variáveis ordinais.

  • O argumento test de add_p() permite especificar manualmente o teste apropriado quando o padrão automático não se ajusta à estrutura dos dados.

Resumo: gtsummary

Função O que faz
tbl_summary() Gera a tabela descritiva a partir do data frame
add_p() Adiciona teste estatístico comparando os grupos
add_overall() Adiciona coluna com o resumo geral
bold_labels() Formata os rótulos das variáveis em negrito
as_gt(), as_flex_table() Preparam a tabela para exportação em HTML ou Word

Obrigada!

Continue praticando e explorando.

Esta aula é parte do projeto Café com R. É open source. Use, compartilhe e adapte.

Siga o Café com R

  • Que cada gole desperte uma nova ideia.

  • Que cada script abra uma nova conversa.

  • Que o Café com R se torne um ponto de encontro nosso.

SITE OFICIAL > https://jenniferlopes.github.io/meu_site/