Test de Student ou test t

En langage R

L'essentiel de cette page !

Le test de Student permet de comparer deux moyennes d'échantillons afin de voir si ceux-ci sont vraisemblablement issues de la même population (hypothèse nulle H0) ou, au contraire, significativement différentes.

Plus simplement : ce test donne la probabilité qu'une différence observée soit due au hasard.

Cette probabilité s'appelle la p-value.

La commande t.test() permet de réaliser ce test.

Avant de faire des statistiques, je dois comprendre à quoi sert le résultat de sortie : la p-value.


Pourquoi ne pas le faire de façon ludique en regardant les statistiques expliquées à mon chat ?


1- Comparer deux échantillons par un test de Student

Pour connaître la démarche complète de comparaison de moyennes (ou médianes) de deux ou plusieurs échantillons :

lien vers la page "Comparaison de moyennes avec R ou alternatives quand la moyenne ne le permet pas"

Étape 0 - Vérifier la normalité puis comparer la variance

shapiro.test(vecteur1)

shapiro.test(vecteur2)

var.test(vecteur1, vecteur2)

Étape 1 - Réaliser un test de Student pour comparer deux échantillons

  • vecteur 1 et 2 sont les échantillons à comparer.

  • var.equal=T parmet d'indiquer l'égalité de variance entre les échantillons (à vérifier avant).

resultat = t.test(vecteur1, vecteur2, var.equal=F)

Étape 2 - Analyser les résultats d'un test de Student

    • p-value < 0.05 - différence significative avec une probabilité de 95%

    • p-value < 0.01 - différence significative avec une probabilité de 99%

    • p-value < 0.001 - différence significative avec une probabilité de 99‰

#Récupérer la p-value : probabilité que les deux échantillons soient d'une même population

resultat$p.value

#Afficher le nombre de degré de liberté (pour calcul du test manuellement), de l'intervalle de confiance à 95% par défaut, le résultat t du test

resultat$parameter

resultat$conf.int

resultat$statistic

Exemple de test de Student

# Comparaison de x et y

x = c(1,3,2,3,2,5,3,4,2,4,4)

y = c(3,2,8,8,3,2,3,5,6,7,5)

t.test(x,y)

2- Comparer un échantillon à une moyenne d'une population

# Voici l'âge d'étudiants

x <- c(18,19,20,21,18,19,18,19,18,18,18,18,18,18,18)

# On se demande si l'âge moyen des étudiants est de 18

t.test(x, mu=18) # La réponse est c'est possible ! (p-value > 0.05)

t.test(x, mu=20) # En revanche, ce ne peut être 20 ans (p-value < 0.05)

3- Généraliser une comparaisons de plus de 3 échantillons en faisant des tests de Student paire à paire

La fonction pairwise.t.test() permet de réaliser des comparaisons paire à paire.

Contrairement à une boucle, il tiendra compte de l'ensemble des p-values pour éviter les fausses significativités inhérentes à la répétition des tests de Student. C'est une solution simple qui tient donc compte de la tous les échantillons (ajustement de la p-value) pour éviter les différences faussement significatives dues au hasard.

data(mtcars)

mtcars$carb[mtcars$carb>=4] <- 4

pairwise.t.test(mtcars$mpg,mtcars$carb)-> mon_resultat ; mon_resultat

Et voilà! tous les tests de Student ont été fait en une ligne (on peut changer aussi la méthode d'ajustement de la p-value en jouant sur l'argument p.adjust.method de la fonction pariwise.t.test()).

On peut aussi déterminer les groupes de moyennes juste après en utilisant la fonction catego() de mon packages {KefiR}.

library(KefiR)

catego(mon_resultat)

Il en résulte des groupes de moyennes (à côté).

Remarque : on peut aussi définir un groupe control pour la fonction catego() (compaison avec des étoiles).

$groups

categories groups

"1" "a"

"2" "ab"

"3" "bc"

"4" "c"

Remarque, code pour installer KefiR :

install.packages("devtools")

require(devtools) # Risque d'erreur si RTools non installé.

devtools::install_github("Antoine-Masse/KefiR")

library("KefiR")

4- Comparer des données appariées

Lorsque l'on souhaite suivre une population sur le temps et comparer ses différentes moyennes obtenues, on doit tenir compte du fait que ces moyennes sont toujours faites avec les mêmes individus.

Tenir compte du fait que l'individu le plus bas a des chances de rester bas ou l'inverse.

# Comparaison de x et y

t0 = c(1,3,2,3,2,5,3,4,2,4,4)

tn = c(3,2,8,8,3,2,3,5,6,7,5)

t.test(t0,tn, paired=T)

Exercice pour s'entraîner

Exercice : Faire un test de Student