Test T - L' Essentiel : Définition, Formule et Calcul

Comment Faire un Test-T à Deux Echantillons Indépendant dans R

Cet article décrit comment faire un test t à deux échantillons dans R (ou dans Rstudio). Notez que le test t à deux échantillons est aussi appelé:

  • test t indépendant,
  • test-t pour échantillons indépendants,
  • Test T non apparié ou
  • test t non apparenté.

Le t-test pour échantillons indépendants se présente sous deux formes différentes:

  • le test t standard de Student, qui suppose que la variance des deux groupes est égale.
  • le test t de Welch, qui est moins restrictif que le test original de Student. Il s’agit du test où vous ne présumez pas que la variance est la même dans les deux groupes, ce qui donne les degrés de liberté fractionnaires suivants.

Les deux méthodes donnent des résultats très semblables, à moins que la taille des groupes et les écarts-types ne soient très différents.

Vous apprendrez à:

  • Exécuter le test t indépendant dans R en utilisant les fonctions suivantes :
    • t_test() [paquet rstatix] : le résultat est une data frame pour une visualisation graphique facile en utilisant le paquet ggpubr.
    • t.test() [paquet stats] : fonction R de base.
  • Interpréter et rapporter le test t à deux échantillons
  • Ajouter des p-values et des niveaux de significativité à un graphe
  • Calculez et rapportez la taille de l’effet du test t pour échantillons indépendants en utilisant le d de Cohen. La statistique “d” redéfinit la différence de moyennes comme le nombre d’écarts-types qui sépare ces moyennes. Les tailles d’effet conventionnelles des tests T, proposées par Cohen, sont : 0,2 (petit effet), 0,5 (effet modéré) et 0,8 (effet important) (Cohen 1998).


Sommaire:

Livre Apparenté

Pratique des Statistiques dans R II - Comparaison de Groupes: Variables Numériques

Prérequis

Assurez-vous d’avoir installé les paquets R suivants:

  • tidyverse pour la manipulation et la visualisation des données
  • ggpubr pour créer facilement des graphiques prêts à la publication
  • rstatix contient des fonctions R facilitant les analyses statistiques.
  • datarium: contient les jeux de données requis pour ce chapitre.

Commencez par charger les packages requis suivants:

library(tidyverse)
library(ggpubr)
library(rstatix)

Données de démonstration

Jeu de données de démonstration : genderweight [package datarium] contenant le poids de 40 individus (20 femmes et 20 hommes).

Charger les données et afficher quelques lignes aléatoires par groupes:

# Charger les données
data("genderweight", package = "datarium")
# Afficher un échantillon des données par groupe
set.seed(123)
genderweight %>% sample_n_by(group, size = 2)
## # A tibble: 4 x 3
##   id    group weight
##   <fct> <fct>  <dbl>
## 1 6     F       65.0
## 2 15    F       65.9
## 3 29    M       88.9
## 4 37    M       77.0

Nous voulons savoir si les poids moyens sont différents d’un groupe à l’autre.

Statistiques descriptives

Calculer quelques statistiques descriptives par groupe : moyenne et sd (écart-type)

genderweight %>%
  group_by(group) %>%
  get_summary_stats(weight, type = "mean_sd")
## # A tibble: 2 x 5
##   group variable     n  mean    sd
##   <fct> <chr>    <dbl> <dbl> <dbl>
## 1 F     weight      20  63.5  2.03
## 2 M     weight      20  85.8  4.35

Calculs

Rappelons que, par défaut, R calcule le test t de Welch, qui est le plus prudent. Il s’agit du test où vous ne présumez pas que la variance est la même dans les deux groupes, ce qui donne les degrés de liberté fractionnaires suivants. Si vous voulez supposer l’égalité des variances (test t de Student), spécifiez l’option var.equal = TRUE.

Utilisation de la fonction de base R

Il existe deux options pour calculer le test t indépendant selon que les données des deux groupes soient enregistrées soit dans deux vecteurs différents, soit dans une data frame.

Option 1. Les données sont enregistrées dans deux vecteurs numériques différents:

# Enregistrer les données dans deux vecteurs différents
women_weight <- genderweight %>%
  filter(group == "F") %>%
  pull(weight)
men_weight <- genderweight %>%
  filter(group == "M") %>%
  pull(weight)
# Calculer le test t
res <- t.test(women_weight, men_weight)
res
## 
##  Welch Two Sample t-test
## 
## data:  women_weight and men_weight
## t = -20, df = 30, p-value <2e-16
## alternative hypothesis: true difference in means is not equal to 0
## 95 percent confidence interval:
##  -24.5 -20.1
## sample estimates:
## mean of x mean of y 
##      63.5      85.8

Option 2. Les données sont enregistrées dans une data frame.

# Calculer le test t
res <- t.test(weight ~ group, data = genderweight)
res
## 
##  Welch Two Sample t-test
## 
## data:  weight by group
## t = -20, df = 30, p-value <2e-16
## alternative hypothesis: true difference in means is not equal to 0
## 95 percent confidence interval:
##  -24.5 -20.1
## sample estimates:
## mean in group F mean in group M 
##            63.5            85.8

Comme vous pouvez le voir, les deux méthodes donnent les mêmes résultats.

Dans le résultat ci-dessus :

  • t est la valeur de la statistique du test t (t = -20.79),
  • df est le degré de liberté (df= 26.872),
  • p-value est le niveau de significativité du test t (p-value = 4.29810^{-18}).
  • conf.int est l’intervalle de confiance de la différence de moyennes à 95% (conf.int = [-24.5314, -20.1235]);
  • sample estimates est la valeur moyenne de l’échantillon (moyenne = 63.499, 85.826).

Utilisation du paquet rstatix

Nous utiliserons le système pipe-compatible t_test() function [rstatix package], a wrapper around the R base function t.test(). Les résultats peuvent être facilement ajoutés à un graphique en utilisant le paquet Rggpubr.

stat.test <- genderweight %>% 
  t_test(weight ~ group) %>%
  add_significance()
stat.test
## # A tibble: 1 x 9
##   .y.    group1 group2    n1    n2 statistic    df        p p.signif
##   <chr>  <chr>  <chr>  <int> <int>     <dbl> <dbl>    <dbl> <chr>   
## 1 weight F      M         20    20     -20.8  26.9 4.30e-18 ****

Si vous voulez supposer l’égalité des variances (test t de Student), spécifiez l’option var.equal = TRUE:

stat.test2 <- genderweight %>%
  t_test(weight ~ group, var.equal = TRUE) %>%
  add_significance()
stat.test2

Les résultats ci-dessus montrent les composantes suivantes:

  • .y.: la variable y utilisée dans le test.
  • group1,group2: les groupes comparés dans les tests par paires.
  • statistic: Statistique de test utilisée pour calculer la p-value.
  • df: degrés de liberté.
  • p: p-value.

Notez que, vous pouvez obtenir un résultat détaillé en spécifiant l’option detailed = TRUE.

genderweight %>%
  t_test(weight ~ group, detailed = TRUE) %>%
  add_significance()
## # A tibble: 1 x 16
##   estimate estimate1 estimate2 .y.    group1 group2    n1    n2 statistic        p    df conf.low conf.high method alternative p.signif
##      <dbl>     <dbl>     <dbl> <chr>  <chr>  <chr>  <int> <int>     <dbl>    <dbl> <dbl>    <dbl>     <dbl> <chr>  <chr>       <chr>   
## 1    -22.3      63.5      85.8 weight F      M         20    20     -20.8 4.30e-18  26.9    -24.5     -20.1 T-test two.sided   ****

Interprétation

La p-value du test est 4.310^{-18}, ce qui est inférieur au seuil de significativité alpha = 0,05. Nous pouvons conclure que le poids moyen des hommes est significativement différent de celui des femmes avec une p-value = 4.310^{-18}.

Taille de l’effet

d de Cohen pour le test t de Student

Il existe plusieurs versions du d de Cohen pour le test t de Student. La version la plus couramment utilisée de la taille de l’effet du test t de Student, qui compare deux groupes (\(A\) et \(B\)), est calculée en divisant la différence des moyennes des deux groupes par l’écart-type commun.

La formule du d de Cohen:

\[
d = \frac{m_A - m_B}{SD_{pooled}}
\]

où,

  • \(m_A\) et \(m_B\) représentent la valeur moyenne des groupes A et B, respectivement.
  • \(n_A\) et \(n_B\) représentent les tailles des groupes A et B, respectivement.
  • \(SD_{pooled}\) est un estimateur de l’écart-type mis en commun des deux groupes. Il peut être calculé comme suit :
    \[
    SD_{pooled} = \sqrt{\frac{\sum{(x-m_A)^2}+\sum{(x-m_B)^2}}{n_A+n_B-2}}
    \]

Calculs. Si l’option var.equal = TRUE, alors le SD groupé est utilisé pour calculer le d de Cohen.

genderweight %>%  cohens_d(weight ~ group, var.equal = TRUE)
## # A tibble: 1 x 7
##   .y.    group1 group2 effsize    n1    n2 magnitude
## * <chr>  <chr>  <chr>    <dbl> <int> <int> <ord>    
## 1 weight F      M        -6.57    20    20 large

L’ampleur de l’effet est importante, d = 6,57.

Notez que, pour un échantillon de petite taille (< 50), le d de Cohen a tendance à gonfler les résultats. Il existe une version corrigée de Hedge du d de Cohen (???), qui réduit la taille de l’effet pour les petits échantillons de quelques points de pourcentage. La correction est introduite en multipliant la valeur habituelle de d par (N-3)/(N-2.25) (pour le test t non apparié) et par (n1-2)/(n1-1.25) pour le test t apparié ; où N est la taille totale des deux groupes comparés (N = n1 + n2).

Le d de Cohen pour le test t de Welch

Le test de Welch est une variante du test t utilisé lorsque l’égalité de variance ne peut être présumée. La valeur de l’effet peut être calculée en divisant la différence moyenne entre les groupes par l’écart type “moyen”.

La formule du d de Cohen:

\[
d = \frac{m_A - m_B}{\sqrt{(Var_1 + Var_2)/2}}
\]

où,

  • \(m_A\) et \(m_B\) représentent la valeur moyenne des groupes A et B, respectivement.
  • \(Var_1\) et \(Var_2\) sont la variance des deux groupes.

Calculs:

genderweight %>% cohens_d(weight ~ group, var.equal = FALSE)
## # A tibble: 1 x 7
##   .y.    group1 group2 effsize    n1    n2 magnitude
## * <chr>  <chr>  <chr>    <dbl> <int> <int> <ord>    
## 1 weight F      M        -6.57    20    20 large

Notez que, lorsque la taille des groupes est égale et que les variances des groupes sont homogènes, le d de Cohen pour les tests t standard de Student et de Welch sont identiques.

Rapporter

Nous pourrions rapporter le résultat comme suit:

Le poids moyen dans le groupe des femmes était de 63,5 (SD = 2,03), alors que la moyenne dans le groupe des hommes était de 85,8 (SD = 4,3). Le test t de Welch a montré que la différence était statistiquement significative, t(26.9) = -20.8, p < 0.0001, d = 6.57 ; où, t(26.9) est une notation abrégée pour une statistique t de Welch qui a 26.9 degrés de liberté.

Visualiser les résultats:

# Créer un box-plot
bxp <- ggboxplot(
  genderweight, x = "group", y = "weight", 
  ylab = "Weight", xlab = "Groups", add = "jitter"
  )

# Ajouter la p-value et les niveaux de significativité
stat.test <- stat.test %>% add_xy_position(x = "group")
bxp + 
  stat_pvalue_manual(stat.test, tip.length = 0) +
  labs(subtitle = get_test_label(stat.test, detailed = TRUE))

Résumé

Cet article montre comment effectuer le t-test à deux échantillons indépendant dans R/Rstudio en utilisant deux manières différentes : la fonction de base R t.test() et la fonction t_test() dans le paquet rstatix. Nous décrivons également comment interpréter et communiquer les résultats du test t.

References

Cohen, J. 1998. Statistical Power Analysis for the Behavioral Sciences. 2nd ed. Hillsdale, NJ: Lawrence Erlbaum Associates.



Version: English

Comment Faire un test T à Echantillon Unique dans R (Prev Lesson)
(Next Lesson) Comment Faire le Test T Apparié dans R
Back to Test T – L’ Essentiel : Définition, Formule et Calcul

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