Test de Student : Est-il toujours correct de comparer des moyennes?

Cet article a été mis à jour, vous consultez ici une archive de cet article!

Conditions d?applications du test de Student

Le test de Student est g?n?ralement utilis? pour comparer les moyennes de deux groupes d??chantillons independents ou appari?s. C?est un test dit param?trique car il d?pend de la distribution des donn?es. Il n?est donc applicable que dans certaines conditions.

Avant de faire le test de Student, il faut s?assurer que les deux groupes d??chantillons ? comparer suivent des lois normales et que leurs variances sont homog?nes (homoc?dacit?).

Que faire lorsque les conditions ne sont pas remplies?

Lorsque les ?chantillons ? comparer ne sont pas distribu?s selon la loi normale, un test de type wilcoxon est pr?conis?. Le test de wilcoxon est un test non param?trique qui ne d?pend pas de la distribution des ?chantillons.

D?autres parts, lorsque les deux ?chantillons suivent la loi normale mais cette fois-ci de variances diff?rentes, le test t de Welch peut ?tre utilis?.

Objectif

L?objectif de cet article est de vous montrer comment faire le test de Student avec R en respectant bien les conditions d?application du test. Pour cela nous allons utiliser une fonction personnalis?e d?crite ci-apr?s. Il s?agit de la fonction rquery.t.test().

Fonction rquery.t.test

Cette fonction est une am?lioration de la fonction t.test() de base de R. Elle permet de faire le test de Student pour ?chantillon unique ainsi que le test de Student de comparaison de moyennes de deux s?ries ind?pendentes ou appari?es. Son avantage par rapport ? la fonction t.test() de R est qu?elle v?rifie automatiquement la distribution et l?homog?n?it? des variances des ?chantillons ? comparer.

Avant de calculer la statistique t de Student, la fonction rquery.t.test effectue les ?tapes ci-dessous:

  1. Tout d?abord, le test de Shapiro-Wilk est utilis? pour effectuer un test de normalit?. Si les ?chantillons ne sont pas distribu?s selon une loi normale, la fonction rquery.t.test vous averti et vous sugg?re de de faire un test de Wilcoxon.

  2. Un test de comparaison de variances est ?galement fait automatiquement :
  • Si les variances sont consid?r?es ?gales : le test de Student classique est effectu?
  • Si les variances sont significativement diff?rentes : le test t de Welch est appliqu?.

Le code R de la fonction est la suivante :

#++++++++++++++++++++++++
#rquery.t.test
#++++++++++++++++++++++++
# x : un vecteur de type numeric
# y : Un vecteur de type numeric (optionnel)
# paired : Indique si vous voulez faire
  # un test de Student appari? ou non
# ... : D'autres arguments ? passer ? la fonction basique t.test() de R
# 1. Le test de normalit? de Shapiro est utilis?
# 2. Le test F de comparaison des variances est utilis?
  # pour v?rifier l'?galit? des variances
  #Si les variances sont diff?rentes le test t de Welch est utilis? 
rquery.t.test<-function(x, y = NULL, paired = FALSE, ...)
{
  # 1. Test de normalit? des ?chantillons
  shapiro.px<-signif(shapiro.test(x)$p.value,4)
  if(shapiro.px < 0.05)
    warning("x is not normally distributed :",
            " Shapiro test p-value = ", shapiro.px, 
            ".\n Use a non parametric test like wilcoxon test.")
  
  if(!is.null(y)){
    shapiro.py<-signif(shapiro.test(y)$p.value,4)
    if(shapiro.py < 0.05)
      warning("y is not normally distributed :",
              " Shapiro test p-value = ", shapiro.py, 
              ".\n Use a non parametric test like wilcoxon test.")
    
    # 2. Test de comparaison des variances
    var.equal=FALSE # by default
    if(!paired & var.test(x,y)$p.value>=0.05) var.equal=TRUE
  }
  
  # 3. Test t de Student
  res <- t.test(x, y, paired=paired, var.equal=var.equal, ...)
  return(res)
}

Test de Student pour ?chantillon unique : Comparaison d?une moyenne observ?e ? une moyenne th?orique

rquery.t.test(1:10)

    One Sample t-test
data:  x
t = 5.745, df = 9, p-value = 0.0002782
alternative hypothesis: true mean is not equal to 0
95 percent confidence interval:
 3.334 7.666
sample estimates:
mean of x 
      5.5 

Test de Student non appari? : Comparaison de moyennes de deux groupes d??chantillons ind?pendents

Cas 1 - Les deux groupes d??chantillons suivent des lois normales de variances ?gales:

rquery.t.test(1:10, 7:20)

    Two Sample t-test
data:  x and y
t = -5.147, df = 22, p-value = 3.691e-05
alternative hypothesis: true difference in means is not equal to 0
95 percent confidence interval:
 -11.223  -4.777
sample estimates:
mean of x mean of y 
      5.5      13.5 

Le test de Student classique est utilis? automatiquement.

Cas 2 - Les ?chantillons suivent des lois normales mais de variances diff?rentes:

x<-1:10
y<-seq(from=100, to=1000, by=100)
rquery.t.test(x, y)

    Welch Two Sample t-test
data:  x and y
t = -5.687, df = 9.002, p-value = 0.000299
alternative hypothesis: true difference in means is not equal to 0
95 percent confidence interval:
 -761.1 -327.9
sample estimates:
mean of x mean of y 
      5.5     550.0 

Le test t de Welch est utilis? automatiquement.

Cas 3 - Les ?chantillons ne sont pas distribu?s selon une loi normale:

x<-c(1:10, 50, 200)
y<-c(7:20)
rquery.t.test(x, y)
Warning: x is not normally distributed : Shapiro test p-value = 9.672e-06.
 Use a non parametric test like wilcoxon test.

    Welch Two Sample t-test
data:  x and y
t = 0.7287, df = 11.1, p-value = 0.4813
alternative hypothesis: true difference in means is not equal to 0
95 percent confidence interval:
 -24.03  47.87
sample estimates:
mean of x mean of y 
    25.42     13.50 

Un message d?avertissement est affich? et la fonction rquery.t.test vous sugg?re de faire un test non-param?trique de type Wilcoxon.

Test de Student appari? : Compararaison de moyennes de deux s?ries dependantes

x<-rnorm(10, mean=10, sd=2)
y<-rnorm(10, mean=50, sd=3)
rquery.t.test(x, y, paired=TRUE)

    Paired t-test
data:  x and y
t = -33.68, df = 9, p-value = 8.839e-11
alternative hypothesis: true difference in means is not equal to 0
95 percent confidence interval:
 -43.92 -38.40
sample estimates:
mean of the differences 
                 -41.16 

Test de Student en ligne


Noter qu?un logiciel web est disponible ici pour faire le test de Student en ligne sans aucune installation.


Infos

Cette analyse a ?t? faite avec R (ver. 3.1.0).


Enjoyed this article? I’d be very grateful if you’d help it spread by emailing it to a friend, or sharing it on Twitter, Facebook or Linked In.

Show me some love with the like buttons below... Thank you and please don't forget to share and comment below!!
Avez vous aimé cet article? Je vous serais très reconnaissant si vous aidiez à sa diffusion en l'envoyant par courriel à un ami ou en le partageant sur Twitter, Facebook ou Linked In.

Montrez-moi un peu d'amour avec les like ci-dessous ... Merci et n'oubliez pas, s'il vous plaît, de partager et de commenter ci-dessous!





Licence - Pas d?Utilisation Commerciale - Partage dans les M?mes Conditions
Licence Creative Commons