Identifier les classes de moyennes/d'échantillons après les avoir comparer

En langage R

L'essentiel de cette page

Lorsque l'on compare des échantillons (on parle de comparaison de moyennes), on peut identifier des échantillons qui se distinguent significativement ou non et donc des catégories de moyennes.

Comment distinguer ces catégories souvent indiquées par une lettre ?

1- Méthode manuelle :

2- Résultat d'un test réalisé avec une fonction automatique de multiples échantilons (pairwise...)

1- Partons d'un exemple de résultats d'une comparaison de voitures réalisées avec pairwise.t.test()

data(mtcars)
mtcars$carb[mtcars$carb>=4] <- 4 # Regrouper les autos qui ont plus de 4 carburateurs
pairwise.t.test(mtcars$mpg,mtcars$carb)-> mon_resultat ; mon_resultat

On voit ainsi différentes caractéristiques de consommation de carburant en fonction du nombre de carburateurs de chaque voiture.

p-values de comparaison deux à deux :

  1     2     3    
2 0.444 -     -    
3 0.042 0.189 -    
4 0.002 0.022 0.936

2- Copier-coller cette fonction tri.to.squ() qui permettra de regrouper les moyennes non significativement différentes

# Fonction réalisée par Fabio Marroni 
tri.to.squ<-function(x)
{
rn<-row.names(x)
cn<-colnames(x)
an<-unique(c(cn,rn))
myval<-x[!is.na(x)]
mymat<-matrix(1,nrow=length(an),ncol=length(an),dimnames=list(an,an))
for(ext in 1:length(cn))
{
 for(int in 1:length(rn))
 {
 if(is.na(x[row.names(x)==rn[int],colnames(x)==cn[ext]])) next
 mymat[row.names(mymat)==rn[int],colnames(mymat)==cn[ext]]<-x[row.names(x)==rn[int],colnames(x)==cn[ext]]
 mymat[row.names(mymat)==cn[ext],colnames(mymat)==rn[int]]<-x[row.names(x)==rn[int],colnames(x)==cn[ext]]
 }
}
return(mymat)
}

3- Appliquer le regroupement des échantillons/moyennes non significativement différent.e.s. en copiant-collant ce code à appliquer aux résultats de ma pairwise

library(corrplot)
corrplot((1-stud$p.value))
#install.packages("multcompView") # Exécuter cette ligne si nécessaire.
library(multcompView)
multcompLetters(mon_resultat$p.value)
mymat<-tri.to.squ(mon_resultat$p.value)
myletters<-multcompLetters(mymat,compare="<=",threshold=0.05,Letters=letters)
myletters

On voit ici que ma comparaison de voitures renvoie 3 catégories : a, b, c.

Certains échantillons ne se distinguent pas de l'une ou l'autre des catégories.

   1    2    3    4 
 "a" "ab" "bc"  "c

Ces catégories vont pouvoir être affichées sur les diagrammes en barres avec la fonction text.

by(mtcars$mpg,mtcars$carb,mean) -> moyennes
barplot(moyennes,
   ylim=c(0,max(moyennes)+2))->bp

text(bp,moyennes+1,myletters$Letters)

Pour réaliser des diagrammes en barres, afficher les catégories de barres et les intervalles de confiance (barres d'erreur) : il y a cette aide développée sur ce site.

3- Résultats d'autres fonctions comme les résultats du test de Newman-Keuls.

Page en cours d'évolution majeure. Voir cette page qui vous renseignera en attendant.