Comment Effectuer un Test-T Multiple dans R pour Différentes Variables

plot of chunk multiple-t-test-in-r-multi-panel-boxplots


Comment Effectuer un Test-T Multiple dans R pour Différentes Variables

Prérequis

# Charger les packages R requis
library(tidyverse)
library(rstatix)
library(ggpubr)
   
# Préparer les données et inspecter un échantillon aléatoire des données
mydata <- iris %>%
  filter(Species != "setosa") %>%
  as_tibble()
mydata %>% sample_n(6)
## # A tibble: 6 x 5
##   Sepal.Length Sepal.Width Petal.Length Petal.Width Species   
##          <dbl>       <dbl>        <dbl>       <dbl> <fct>     
## 1          6           2.9          4.5         1.5 versicolor
## 2          6.4         2.8          5.6         2.1 virginica 
## 3          5.5         2.6          4.4         1.2 versicolor
## 4          7.7         3            6.1         2.3 virginica 
## 5          6.7         3.1          5.6         2.4 virginica 
## 6          6.5         2.8          4.6         1.5 versicolor
# Transformer les données en format long
# Mettez toutes les variables dans la même colonne sauf `Species`, la variable de regroupement
mydata.long <- mydata %>%
  pivot_longer(-Species, names_to = "variables", values_to = "value")
mydata.long %>% sample_n(6)
## # A tibble: 6 x 3
##   Species    variables    value
##   <fct>      <chr>        <dbl>
## 1 virginica  Petal.Width    2.1
## 2 virginica  Sepal.Length   6.9
## 3 virginica  Petal.Width    2.2
## 4 versicolor Sepal.Width    3  
## 5 virginica  Petal.Length   5.7
## 6 versicolor Petal.Width    1.3

Effectuer plusieurs tests T

  • Regrouper les données par variables et comparer les groupes d’espèces
  • Ajuster les p-values et ajouter les niveaux de signification
stat.test <- mydata.long %>%
  group_by(variables) %>%
  t_test(value ~ Species) %>%
  adjust_pvalue(method = "BH") %>%
  add_significance()
stat.test
## # A tibble: 4 x 11
##   variables    .y.   group1     group2       n1    n2 statistic    df        p    p.adj p.adj.signif
##   <chr>        <chr> <chr>      <chr>     <int> <int>     <dbl> <dbl>    <dbl>    <dbl> <chr>       
## 1 Petal.Length value versicolor virginica    50    50    -12.6   95.6 4.90e-22 9.80e-22 ****        
## 2 Petal.Width  value versicolor virginica    50    50    -14.6   89.0 2.11e-25 8.44e-25 ****        
## 3 Sepal.Length value versicolor virginica    50    50     -5.63  94.0 1.87e- 7 2.49e- 7 ****        
## 4 Sepal.Width  value versicolor virginica    50    50     -3.21  97.9 1.82e- 3 1.82e- 3 **

Créer des Boxplots multi-panneaux avec des p-values du test t

# Créer le graphique
myplot <- ggboxplot(
  mydata.long, x = "Species", y = "value",
  fill = "Species", palette = "npg", legend = "none",
  ggtheme = theme_pubr(border = TRUE)
  ) +
  facet_wrap(~variables)
# Ajouter les p-values des tests statistiques
stat.test <- stat.test %>% add_xy_position(x = "Species")
myplot + stat_pvalue_manual(stat.test, label = "p.adj.signif")

plot of chunk multiple-t-test-in-r-multi-panel-boxplots

Créer des box-plots individuels avec des p-values du t-test

# Regroupez les données par variables et faites un graphique pour chaque variable
graphs <- mydata.long %>%
  group_by(variables) %>%
  doo(
    ~ggboxplot(
      data =., x = "Species", y = "value",
      fill = "Species", palette = "npg", legend = "none",
      ggtheme = theme_pubr()
      ), 
    result = "plots"
  )
graphs
## # A tibble: 4 x 2
##   variables    plots 
##   <chr>        <list>
## 1 Petal.Length <gg>  
## 2 Petal.Width  <gg>  
## 3 Sepal.Length <gg>  
## 4 Sepal.Width  <gg>
# Ajouter des tests statistiques à chaque graphique correspondant
variables <- graphs$variables
for(i in 1:length(variables)){
  graph.i <- graphs$plots[[i]] + 
    labs(title = variables[i]) +
    stat_pvalue_manual(stat.test[i, ], label = "p.adj.signif")
  print(graph.i)
}

plot of chunk multiple-t-test-in-r-individual-boxplotplot of chunk multiple-t-test-in-r-individual-boxplotplot of chunk multiple-t-test-in-r-individual-boxplotplot of chunk multiple-t-test-in-r-individual-boxplot



Version: English





No Comments

Give a comment

Want to post an issue with R? If yes, please make sure you have read this: How to Include Reproducible R Script Examples in Datanovia Comments