R/letras_tukey.R

Defines functions letras_tukey

Documented in letras_tukey

#'Representación del test de Tukey mediante letras
#'
#'Crea de un compact letter display a partir de un objeto con comparaciones dos a dos de las muestras
#'
#'@param comparaciones Los datos que debe recibir son un data frame con term, filtrada para muestra_id, group1, group2 y p.adj
#'@param confianza Por defecto 0.05, ajusta el umbral a partir del cual se considera que el p valor es significativo.
#'@return El resultado es un data frame con muestra_id y letras_tukey
#'@export


letras_tukey <- function(comparaciones,confianza = 0.05){

  library(multcompView)
  library(tidyverse)

  # Se eliminan NAs y las columnas no necesarias
  comparaciones_limpio <- comparaciones %>%
    filter(!is.na(term)) %>%
    select(group1, group2, p.adj)

  # Se revierten las comparaciones (a-b -> b-a)
  comparaciones_espejo <- tibble("group1" = comparaciones_limpio$group2,
                                 "group2" = comparaciones_limpio$group1,
                                 "p.adj" = comparaciones_limpio$p.adj)

  # Se crea un objeto con todas las comparaciones para poder montar una matriz
  # de correlacion
  comparaciones_completo <- bind_rows(comparaciones_limpio,
                                      comparaciones_espejo) %>%
    pivot_wider(names_from = "group1",
                values_from = "p.adj")

  # Se crea un string de muestras
  orden <- comparaciones_completo %>%
    select(!any_of("group2")) %>%
    colnames() %>%
    data.frame() %>%
    rename("group2" = ".")

  # Se utiliza el string de muestras para ordenar los dos ejes de la matriz con
  # el mismo criterio
  comparaciones_ordenado <- full_join(orden,
                                      comparaciones_completo,
                                      by = "group2") %>%
    column_to_rownames("group2") %>%
    mutate(across(everything(),~replace_na(.x,1)))

  # Se crea la matriz de correlación para alimentar a la función multcompLetters
  comparaciones_matriz <- as.matrix(comparaciones_ordenado)

  # Se generan las letras
  letras <- multcompLetters(
    comparaciones_matriz,
    compare = "<",
    threshold = confianza,
    Letters = letters,
    reversed = FALSE
  )

  letras_comodo <- letras[["Letters"]] %>%
    as.data.frame() %>%
    rownames_to_column(var = "muestra_id") %>%
    rename("letras_tukey" = ".")

  return(letras_comodo)

}
anmarsan/sandres documentation built on Sept. 20, 2022, 2:01 p.m.