Chapitre 8 Les tests statistiques
En statistique, il existe plusieurs tests. Dans le cadre de ce cours, nous allons voir les tests suivants: le test de Student pour un échantillon, pour deux échantillons indépendants, pour des échantillons appariés,…
8.1 Le test de Student pour un échantillon
Le test t de Student pour un échantillon est une méthode d’inférence statistique utilisée pour déterminer si les données d’un échantillon sont significativement différentes d’une valeur hypothétique donnée. Il est utilisé pour comparer deux moyennes. Ce test est basé sur la distribution t de Student et est couramment utilisé lorsqu’on ne connaît pas la variance de la population. Il existe trois types principaux de tests t :
- Le test bilatéral: tester si la moyenne d’un échantillon est significativement différente d’une valeur donnée
- Le test unilatéral à droite: tester si la moyenne de l’échantillon est significativement plus grande qu’une valeur donnée
- Le test unilatéral à gauche: tester si la moyenne de l’échantillon est significativement plus petite qu’une valeur donnée
La fonction t.testpermet d’effectuer le test de Student. Pour effectuer correctement le test, nous devons remplir trois arguments dans la fonction, à savoir x, alternative, et mu qui correspondent respectivement aux données de l’échantillon, à l’hypothèse alternarive et à la moyenne hypothétique sous l’hypothèse nulle. Précisons que:
- Le test bilatéral:
alternative="two.sided" - Le test unilatéral à droite:
alternative="greater" - Le test unilatéral à gauche:
alternative="less"
Afin d’effectuer les tests, commençons par simuler des données issues d’un loi normale.
set.seed(123) # pour la reproductibilité
n <- 30 # taille de l'échantillon
data <- rnorm(n, mean = 55, sd = 10) # simulation des données Avant de commencer, nous pouvons calculer la moyenne empirique de l’échantillon
## [1] 54.52896
Fixons comme hypothèse nulle que la moyenne de l’échantillon est égale à 50: \(H_{0}\): \(\mu_{0}=50\). Dans ce cas, le test est bilatéral et s’effectue selon le code suivant
mu_0 <- 50 # moyenne hypothétique sous l'hypothèse nulle
t.test(x = data, mu = mu_0, alternative = "two.sided")##
## One Sample t-test
##
## data: data
## t = 2.5286, df = 29, p-value = 0.01715
## alternative hypothesis: true mean is not equal to 50
## 95 percent confidence interval:
## 50.86573 58.19219
## sample estimates:
## mean of x
## 54.52896
Fixons comme hypothèse nulle que la moyenne de l’échantillon est plus grande que 50: \(H_{0}\): \(\mu_{0}>50\). Dans ce cas, le test est unilatéral à droite et s’effectue selon le code suivant
mu_0 <- 50 # moyenne hypothétique sous l'hypothèse nulle
t.test(x = data, mu = mu_0, alternative = "greater")##
## One Sample t-test
##
## data: data
## t = 2.5286, df = 29, p-value = 0.008576
## alternative hypothesis: true mean is greater than 50
## 95 percent confidence interval:
## 51.48564 Inf
## sample estimates:
## mean of x
## 54.52896
Fixons comme hypothèse nulle que la moyenne de l’échantillon est égale à 50: \(H_{0}\): \(\mu_{0}<50\). Dans ce cas, le test est unilatéral à gauche et s’effectue selon le code suivant
mu_0 <- 50 # moyenne hypothétique sous l'hypothèse nulle
t.test(x = data, mu = mu_0, alternative = "less")##
## One Sample t-test
##
## data: data
## t = 2.5286, df = 29, p-value = 0.9914
## alternative hypothesis: true mean is less than 50
## 95 percent confidence interval:
## -Inf 57.57228
## sample estimates:
## mean of x
## 54.52896
L’interprétation du résultat du test se fait comme suit:
- t: statistique de test
- df: degrés de liberté
- p-value: pvaleur à comparer avec le seuil \(\alpha\) prédéterminé pour savoir si l’hypothèse nulle est rejetée (p-value\(<0.05\)) ou si l’hypothèse nulle n’est pas rejetée (p-value\(>0.05\)).
- 95 percent confidence interval: bornes inférieures et supérieures de l’intervalle de confiance
Il est possible d’extraire les informations du test selon le code suivant en utilisant le $
mu_0 <- 50 # moyenne hypothétique sous l'hypothèse nulle
test <- t.test(x = data, mu = mu_0, alternative = "less")
print(test)##
## One Sample t-test
##
## data: data
## t = 2.5286, df = 29, p-value = 0.9914
## alternative hypothesis: true mean is less than 50
## 95 percent confidence interval:
## -Inf 57.57228
## sample estimates:
## mean of x
## 54.52896
## t
## 2.52858
## [1] 0.9914243
## df
## 29
8.2 Le test de Student pour deux échantillons indépendants
Le test de Student pour deux échantillons indépendants (échantillons non appariés) est un test statistique utilisé pour comparer les moyennes de deux groupes indépendants afin de déterminer s’il existe une différence significative entre elles. Il est basé sur l’hypothèse que les données sont issues de distributions normales avec des variances égales ou inégales selon la version du test utilisée. Comme les deux groupes sont indépendants, il est nécessaire de spécifier si la variance entre les deux groupes est similaire ou si elle est différente. Cela se fait grâce à l’argument var.equal. Il est nécessaire de remplir l’argument alternative pour spécifier si le test est bilatéral, unilatéral à gauche ou unilatéral à droite. De plus, comme deux échantillons de données sont présents, il faut donc remplir les variables x et y.
Commençons par simuler un exemple avec des variances égales:
set.seed(123) # pour la reproductibilité
groupe1 <- rnorm(30, mean = 100, sd = 15) # 30 observations, moyenne de 100, écart-type de 15
groupe2 <- rnorm(30, mean = 110, sd = 15) # 30 observations, moyenne de 110, écart-type de 15
t_test <- t.test(x = groupe1, y = groupe2, alternative = "two.sided", var.equal = TRUE) # Test avec variances égales
print(t_test)##
## Two Sample t-test
##
## data: groupe1 and groupe2
## t = -3.7926, df = 58, p-value = 0.0003577
## alternative hypothesis: true difference in means is not equal to 0
## 95 percent confidence interval:
## -20.444305 -6.318958
## sample estimates:
## mean of x mean of y
## 99.29344 112.67508
Nous pouvons également simuler un exemple avec des variances inégales. Nous constatons que le test ci-dessous effectue un test t de Welch qui est l’adaptation du test t de Student lorsque les variances ne sont pas égales.
set.seed(123) # pour la reproductibilité
# Génération des données pour deux groupes avec variances inégales
groupe1 <- rnorm(30, mean = 100, sd = 15) # 30 observations, moyenne de 100, écart-type de 15
groupe2 <- rnorm(30, mean = 110, sd = 25) # 30 observations, moyenne de 100, écart-type de 25
t.test(x = groupe1, y = groupe2, alternative = "two.sided", var.equal = FALSE)##
## Welch Two Sample t-test
##
## data: groupe1 and groupe2
## t = -3.2519, df = 52.11, p-value = 0.002013
## alternative hypothesis: true difference in means is not equal to 0
## 95 percent confidence interval:
## -24.522521 -5.807509
## sample estimates:
## mean of x mean of y
## 99.29344 114.45846
Par défaut, l’argument var.equalest fixé à FALSE. Il n’est pas donc pas nécessaire de l’écrire à chaque fois, cependant, nous vous encourageons à le faire de façon à être consitant.
##
## Welch Two Sample t-test
##
## data: groupe1 and groupe2
## t = -3.2519, df = 52.11, p-value = 0.002013
## alternative hypothesis: true difference in means is not equal to 0
## 95 percent confidence interval:
## -24.522521 -5.807509
## sample estimates:
## mean of x mean of y
## 99.29344 114.45846
8.3 Le test de Student pour échantillons appariés
Le test de Student pour échantillons appariés est une autre version du test de Student permettant de comparer deux mesures effectuées sur les mêmes individus. Alors que le test pour deux échantillons indépendants permet de comparer deux groupes différents, comme les hommes et les femmes, ce test permet de comparer un échantillon dans deux conditions ou dans deux temps de mesure. Il est utilisé lorsqu’on veut déterminer si la différence moyenne entre deux conditions est significativement différente de zéro. Ce test est également très utile dans des cas tels que l’évaluation de l’effet d’un traitement avant/après sur un même groupe de sujets.
Comme deux échantillons de données sont présents, il faut donc remplir les variables x et y. De plus, comme les échantillons sont appariés, l’argument paired = TRUE doit être spécifié. Il est toujours nécessaire de spécifier l’argument alternativepour l’hypothèse alternative.
# simuler et organiser les données
set.seed(123)
n <- 30
t1 <- rnorm(n, mean = 50, sd = 10)
t2 <- t1 + rnorm(n, mean = 10, sd = 5)
df <- data.frame(
individu = 1:n,
avant = t1,
apres = t2
)
#test
t.test(x = df$avant, y = df$apres, alternative = "two.sided", paired = TRUE)##
## Paired t-test
##
## data: df$avant and df$apres
## t = -14.287, df = 29, p-value = 1.172e-14
## alternative hypothesis: true mean difference is not equal to 0
## 95 percent confidence interval:
## -12.450901 -9.332482
## sample estimates:
## mean difference
## -10.89169
8.4 La puissance d’un test de Student
La puissance statistique d’un test est la probabilité de détecter un effet réel lorsqu’il existe, c’est-à-dire de rejeter correctement l’hypothèse nulle. Une puissance élevée, généralement fixée à 80 % ou plus, est essentielle pour minimiser le risque d’erreur de type II, à savoir ne pas détecter un effet réel et garantir que les résultats d’une étude sont fiables et interprétables.
La fonction power.t.testpermet de calculer la puissance d’un test ou de déterminer des paramètres pour obtenir une puissance fixée. Les arguments à spécifier sont les suivants:
n: le nombre d’observation par groupedelta: la différence attendue entre les moyennessd: l’écart-type des données dans chaque groupesig.level: le seuil \(\alpha\), donc le risque d’erreur de type Ipower: la puissance souhaitéetype: le type de test donc “one.sample” pour un échantillon indépendant, “two.sample” pour deux échantillons indépendants, “paired” pour des échantillons appariésalternative: l’hypothèse alternative simplifiée, donc “two.sided” pour un test bilatéral, “one.sided” pour un test unilatéral.
Si l’argument power n’est pas spécifié, alors la fonction retourne la puissance du test. Si l’argument n n’est pas spécifié, alors la fonction retourne la taille de l’échantillon nécessaire pour détecter la différence souhaitée avec les paramètres spécifiés. Les exemples suivants permettent de comprendre comment travailler avec les arguments:
On veut déterminer combien de participants sont nécessaires pour détecter une différence moyenne de 5 points avec un écart-type de 10, une puissance de 80% et un seuil alpha de 0.05.
##
## One-sample t test power calculation
##
## n = 33.3672
## delta = 5
## sd = 10
## sig.level = 0.05
## power = 0.8
## alternative = two.sided
On veut déterminer la taille d’échantillon nécessaire pour comparer deux groupes avec une différence moyenne attendue de 5, un écart-type de 10 et une puissance de 80%. Le test compare deux groupes indépendants, donc l’échantillon total sera deux fois la taille renvoyée.
##
## Two-sample t test power calculation
##
## n = 63.76576
## delta = 5
## sd = 10
## sig.level = 0.05
## power = 0.8
## alternative = two.sided
##
## NOTE: n is number in *each* group
On veut calculer la puissance d’un test apparié avec 30 participants, une différence attendue de 3 et un écart-type de 8.
##
## Paired t test power calculation
##
## n = 30
## delta = 3
## sd = 8
## sig.level = 0.05
## power = 0.5102817
## alternative = two.sided
##
## NOTE: n is number of *pairs*, sd is std.dev. of *differences* within pairs