Les barres d’erreur apparaissent fréquemment sur les graphiques illustrant les résultats d’expérimentations biologiques. Bien qu’elles soient très informatives, elles peuvent prêter à confusion, car elles peuvent représenter des informations très variées. En effet, les barres d’erreur peuvent représenter :
L’écart type (𝑠𝑑) des observations
L’erreur standard (s.e) d’une mesure statistique (très généralement une moyenne)
L’intervalle de confiance d’une mesure statistique (là encore très généralement une moyenne)
Dans ce tutoriel, je vous propose, dans un premier temps, de revisiter ces trois éléments : leur signification, leur mode de calcul, et leur utilisation, puis de vous montrer en pas à pas, comment afficher des barres d’erreur avec le package ggplot2.
L’écart type (standard deviation en anglais) est un indicateur statistique descriptif de la dispersion des observations.
Il est calculé comme ceci :
L’écart type des observations s’interprète comme un écart typique à la moyenne. Par exemple, si vous observez des poids de souris, que la moyenne est 250 grammes et que l’écart-type est de 10 grammes, alors cela signifie que l’écart typique des poids des souris par rapport à la moyenne est de 10 grammes.
Il y a également une règle qui dit que si les observations suivent une loi normale, alors :
Image : Michael Galarnyk
En d’autres termes, environ 68% des poids des souris se situeront entre 240 et 260 grammes, et environ 95% se situeront entre 230 et 270 grammes, et 99.7% se situeront entre 220 et 280 grammes.
L’erreur standard (standard error en anglais), quant à elle, est un indicateur statistique de la précision de l’estimation d’un paramètre à l’échelle de la population, à partir d’un échantillon. Il peut s’agir, par exemple, de l’erreur standard d’une moyenne.
Lorsqu’une expérimentation est réalisée, elle est menée sur un nombre limité d’individus. Ce nombre limité d’individus est un échantillon de l’ensemble des individus qui constitue une population. L’échantillon est généralement constitué à partir d’un tirage aléatoire de l’ensemble des individus. Lorsque nous calculons la moyenne des observations sur cet échantillon, il s’agit d’une estimation de la moyenne de la population. Si nous recommençons l’expérimentation avec un autre échantillon, nous obtenons une autre estimation de la moyenne de la population. C’est ce qu’on appelle la fluctuation d’échantillonnage.
Prenons un exemple. Imaginons que la population est constituée de 10 000 souris dont le poids moyen est 250g avec un écart type de 25g, que je réalise deux échantillons de 30 souris, et que j’estime la moyenne de leur poids :
# simulation des poids des 10 000 souris constituant la population avec
set.seed(123) # fixer le tirage pseudo aléatoire
x <- rnorm(n=10000, mean=250, sd=25)
# premier échantillon
x1 <- sample(x,30)
# moyenne des poids du premier échantillon
round(mean(x1),1)
[1] 249
# second échantillon
x2 <- sample(x,30)
# moyenne des poids du second échantillon
round(mean(x2),1)
[1] 253.9
La moyenne estimée de la population avec le premier échantillon est 249 g et 253.9 g avec le second échantillon.
L’erreur standard représente l’écart type des estimations de la moyenne. Recommençons nos tirages au sort pour réaliser 1000 échantillons de 30 souris, puis estimons la moyenne des poids de chacun de ces échantillons, et enfin l’écart type de ces moyennes.
# réalisation des 1000 échantillons de 3O souris à la partir de la population x et calcul de la moyenne
means <- replicate(1000, mean(sample(x,30)))
# calcul de l'écart type des moyennes
round(sd(means),1)
[1] 4.5
L’écart type des moyennes est de 4.5 g. C’est l’erreur standard de la moyenne. Cette valeur nous renseigne sur la variabilité des estimations de la moyenne d’un échantillon à l’autre.
L’erreur standard peut être calculée avec cette formule :
où sd est l’écart-type de l’échantillon et
est la taille de l’échantillon.
Si nous appliquons cette formule à notre exemple, nous obtenons :
, ce qui est très proche de la valeur calculée précédemment.
Cette formule nous dit que l’erreur standard est inversement proportionnelle à la racine carrée de la taille de l’échantillon. Autrement dit, l’erreur standard diminue lorsque la taille de l’échantillon augmente. C’est assez intuitif : imaginez que votre échantillon contienne l’ensemble des individus de la population, sauf un. Dans cette situation, la moyenne estimée sera très proche de la moyenne de la population. L’erreur standard sera donc très faible et la précision très grande. À l’inverse, si votre échantillon ne contient qu’un petit nombre d’individus, la moyenne estimée sera probablement assez éloignée de la moyenne de la population. L’erreur standard sera donc grande et la précision faible.
Faisons un exemple, en reprenant notre exemple de poids de souris, mais en considérant cette fois des échantillons de taille 10
# réalisation des 1000 échantillons de 10 souris à la partir de la population x et calcul de la moyenne
means <- replicate(1000, mean(sample(x,10)))
# calcul de l'écart type des moyennes
round(sd(means),1)
[1] 7.7
L’erreur standard est de 7.7 g. C’est une valeur plus grande que celle obtenue avec des échantillons de taille 30. Cela signifie que l’estimation de la moyenne de la population est moins précise avec des échantillons de taille 10 qu’avec des échantillons de taille 30.
En résumé, alors que l’écart-type mesure la dispersion des observations individuelles, l’erreur standard mesure la précision de l’estimation de la moyenne de la population.
L’intervalle de confiance (confidence interval en anglais) est un autre indicateur statistique de la précision de l’estimation d’un paramètre à l’échelle de la population, estimé à partir d’un échantillon.
L’intervalle de confiance est une plage de valeur dans laquelle on s’attend à ce que la moyenne de la population se situe avec un certain niveau de confiance (par exemple, 95%).
Il est calculé comme ceci pour un intervalle de confiance de 95% de la moyenne :
où
est la moyenne de l’échantillon,
Par exemple, si vous observez des poids de souris, que la moyenne est 250 grammes, l’écart-type est de 25 grammes, que vous avez un échantillon de 30 souris, et que vous souhaitez un intervalle de confiance à 95%, alors l’erreur standard serait de 4.56 grammes (comme calculé précédemment). L’intervalle de confiance serait :
Donc, l’intervalle de confiance est [241,06 ; 258,94] grammes.
Cela signifie que vous pouvez être confiant à 95% que la véritable moyenne des poids des souris dans la population se situe entre 246,08 et 253,92 grammes.
L’écart-type est un indicateur descriptif de la dispersion des observations, alors que l’erreur standard et l’intervalle de confiance sont des indicateurs inférentiels de la précision de l’estimation de la moyenne de la population.
Lorsque les moyennes de deux groupes d’individus indépendants sont représentées côte à côte sur un graphique avec des barres d’erreur indiquant l’intervalle de confiance, l’absence de chevauchement des barres d’erreur suggère qu’un test statistique adéquat révélera probablement une différence significative entre les moyennes des deux groupes.
En revanche, si les barres d’erreur se chevauchent, cela suggère qu’un test statistique approprié ne mettra probablement pas en évidence de différence significative entre les moyennes des deux groupes.
Néanmoins, Il est toujours crucial de réaliser le test statistique approprié pour tirer des conclusions définitives.
Pour réaliser un graphique avec les moyennes et des barres d’erreur, il est nécessaire au préalable de disposer d’une table de données (data frame) contenant les moyennes, et les quantités que vous souhaitez représenter à l’aide barres d’erreur (sd, se ou ci). Ensuite, vous n’aurez plus qu’à ajouter la couche geom_errorbar().
Et puisque les barres d’erreur peuvent représenter l’écart-type, l’erreur standard de la moyenne ou son intervalle de confiance, il est primordial de bien spécifier le type de barres d’erreur que vous représentez, soit dans le titre, soit dans la légende du graphique. Il est aussi important de faire apparaitre le nombre de données. Je vous montre comment faire cela
Imaginons un plan expérimental visant à évaluer l’effet de trois régimes sur la perte de poids.
# Définir les niveaux du facteur
Regime <- rep(c("RégimeA", "RégimeB", "RégimeC"), each = 30)
# Générer des poids poids perdu
set.seed(123) # pour reproductibilité
yA <- rnorm(30, mean = 5, sd = 2)
yB <- rnorm(30, mean =3, sd = 2)
yC<- rnorm(30, mean =7, sd = 2)
Poids_perdu <- c(yA, yB, yC)
# Création d'u numero d'identification
ID =paste("patient", 1:90, sep="_")
# Création d'un un data frame avec les variables
mydata <- data.frame(
ID,
Regime,
Poids_perdu
)
# Afficher les première ligne du data frame
head(mydata)
ID Regime Poids_perdu
1 patient_1 RégimeA 3.879049
2 patient_2 RégimeA 4.539645
3 patient_3 RégimeA 8.117417
4 patient_4 RégimeA 5.141017
5 patient_5 RégimeA 5.258575
6 patient_6 RégimeA 8.430130
Il est très facile de créer le data frame agrégé, contenant le nombre de données, la moyenne, l’écart type, l’erreur standard et la quantité à retrancher ou à ajouter à la moyenne pour former les bornes de l’intervalle de confiance, à partir du data frame des observations brutes, en utilisant la fonction summarySE
du package Rmisc :
library(Rmisc)
mydata.agg <- summarySE(mydata, measurevar = "Poids_perdu", groupvars = "Regime")
mydata.agg
Regime N Poids_perdu sd se ci
1 RégimeA 30 4.905792 1.962061 0.3582218 0.7326458
2 RégimeB 30 3.356677 1.670256 0.3049456 0.6236838
3 RégimeC 30 7.048841 1.739588 0.3176038 0.6495727
#Charger la bibliothèque ggplot2
library(ggplot2)
#Créer un graphique ggplot en spécifiant le data frame et les mappages esthétiques de base
ggplot(mydata.agg, aes(x = Regime, y = Poids_perdu, colour = Regime)) +
#Ajouter des points représentant les moyennes de poids perdu pour chaque régime
geom_point(size = 3) +
#Ajouter des barres d'erreur représentant l'écart type autour des moyennes
geom_errorbar(aes(ymin = Poids_perdu - sd, ymax = Poids_perdu + sd), width = 0.2) +
#Ajouter des annotations de texte pour indiquer le nombre de données (N)
geom_text(aes(y = min(Poids_perdu) - 1, label = paste("N =", N)), vjust = -0.5) +
Il suffit de remplacer sd par se dans la couche geom_errorbar()
:
ggplot(mydata.agg, aes(x = Regime, y = Poids_perdu, colour = Regime)) +
geom_point(size = 3) +
geom_errorbar(aes(ymin = Poids_perdu - se, ymax = Poids_perdu + se), width = 0.2) +
geom_text(aes(y = min(Poids_perdu) - 1, label = paste("N =", N)), vjust = -0.5) +
theme_minimal() +
labs(title = "Poids perdu par régime avec erreur standard",
x = "Régime",
y = "Poids perdu (kg)") +
theme(legend.position = "none")
Il suffit de remplacer sd par ci dans la couche geom_errorbar()
:
ggplot(mydata.agg, aes(x = Regime, y = Poids_perdu, colour = Regime)) +
geom_point(size = 3) +
geom_errorbar(aes(ymin = Poids_perdu - ci, ymax = Poids_perdu + ci), width = 0.2) +
geom_text(aes(y = min(Poids_perdu) - 1, label = paste("N =", N)), vjust = -0.5) +
theme_minimal() +
labs(title = "Poids perdu par régime avec intervalles de confiance",
x = "Régime",
y = "Poids perdu (kg)") +
theme(legend.position = "none")
Les barres d’erreur sont des outils puissants pour représenter la variabilité et l’incertitude dans les données expérimentales. Que ce soit pour illustrer l’écart type, l’erreur standard ou les intervalles de confiance, il est crucial de bien comprendre ce qu’elles représentent et comment les calculer. En utilisant les techniques et les outils présentés dans cet article, vous serez mieux équipé pour interpréter et communiquer vos résultats de manière claire et précise.
J’espère que cet article vous a aidé à mieux comprendre l’utilisation des barres d’erreur dans les graphiques. N’hésitez pas à laisser un commentaire ci-dessous si vous avez des questions, des suggestions ou des expériences à partager sur ce sujet. Vos retours sont précieux et m’aident à améliorer le contenu pour mieux répondre à vos attentes.
Retrouver le planning et les programmes de mes formations ici 👇👇👇
Retrouver mes propositions de services ici 👇👇👇
C’est possible en faisant un don sur la page Tipeee du blog
Enregistrez vous pour recevoir gratuitement mes fiches « aide mémoire » (ou cheat sheets) qui vous permettront de réaliser facilement les principales analyses biostatistiques avec le logiciel R et pour être informés des mises à jour du site.
6 Responses
Bonjour ! S’il vous plaît puis-je avoir les tables des lois de probabilité tabulées et leur mode d’utilisation bien expliquer ?
Bonjour
Je vous remercie infiniment pour cette publication
Est ce que je peux avoir la version pdf bien détaillé
Merci
Bonjour madame,
Toujours très ému et satisfait quand je lis vos articles. J’en ressors toujours plein le sac. Pas seulement avec des informations mais des connaissances très utiles et applicables dans notre quotidien.
Merci vraiment pour ce que vous faites.
Rodrigue, Québec
Merci claire pour ce tuto car elle nous évitera de confondre ces différents paramètres lors de la présentation de résultats sous forme de plot avec les barres d’erreurs.
Bonjour et merci pour cet excellent article qui remet bien les choses à plat.
Une question néanmoins : pourquoi dans l’exemple des régimes, où sd, se et ci sont calculés automatiquement par Rmisc, on n’a pas ci = 1,96*se ?
ci-dessous les valeurs pour le régime A :
se = 0.3582218, ci = 0.7326458, ce qui fait un facteur de 2,05.
Bonjour Véronique,
Merci pour cette excellente question.
Les Ci renvoyés par la fonction sont calculés en employant une distribution de Student. 2,05 devrait correspondre au percentile 97,5% avec n-1 (29) degrès de libertés.
Vous pouvez vérifier ici https://istats.shinyapps.io/tdist/; dans l’onglet « Find Percentile / Quantile », en choisissant 29 degrees of freedom, « Two -tailed » et Probability =95%.
Bonne continuation.