Test t en programmation R : exemple à un échantillon et exemple apparié
⚡ Résumé intelligent
Le test t dans R compare les moyennes à l'aide de la fonction `t.test()`, pour un échantillon unique comparé à une variable cible fixe, deux groupes indépendants et des mesures répétées appariées. Ce guide explique comment exécuter chaque variante, interpréter correctement la p-valeur et vérifier les hypothèses sous-jacentes.

Qu’est-ce que l’inférence statistique ?
L'inférence statistique est l'art de tirer des conclusions sur la distribution des données. Un data scientist est souvent confronté à des questions qui ne peuvent être résolues que scientifiquement. L'inférence statistique est donc une stratégie permettant de vérifier la véracité d'une hypothèse, c'est-à-dire sa validation par les données.
Une stratégie courante pour évaluer une hypothèse est le test t, qui permet de déterminer si deux moyennes sont égales. Il est également connu sous le nom de test t de Student. Test étudiantUn test t peut être calculé pour :
- Un vecteur unique comparé à une valeur fixe (test t à un échantillon)
- Deux vecteurs provenant de deux groupes distincts (test t à deux échantillons indépendants)
- Deux vecteurs mesurés sur les mêmes sujets (test t apparié)
Tout test t suppose que les données sont issues d'un échantillon aléatoire et que les valeurs (ou, dans le cas d'un test apparié, les différences) proviennent d'une population suivant approximativement une loi normale. La version pour échantillons indépendants suppose en outre que les deux groupes sont indépendants l'un de l'autre, et la forme classique suppose que leurs variances sont égales.
Qu’est-ce que le test T dans la programmation R ?
L’idée de base d’un T-Test est d’utiliser des statistiques pour évaluer deux hypothèses contraires :
- H0: l'hypothèse nulle, selon laquelle la moyenne de la population est égale à la valeur testée
- H1: l'hypothèse alternative, selon laquelle la moyenne de la population diffère de cette valeur
Le test t est conçu pour les petits échantillons, pour lesquels l'approximation normale est peu fiable. Il suppose que les données suivent approximativement une distribution normale.
Syntaxe du test T dans R
La syntaxe de base de t.test() dans R est :
t.test(x, y = NULL, mu = 0, var.equal = FALSE) arguments: - x : A vector to compute the one-sample t-test - y: A second vector to compute the two sample t-test - mu: Mean of the population under the null hypothesis - var.equal: Specify whether the variances of the two vectors are equal. By default, set to `FALSE` - paired: Set to `TRUE` when the two vectors are repeated measures on the same subjects
Avant toute opération, assurez-vous que la structure de vos données corresponde à la variante de test appropriée.
Types de tests t dans R
Choisir la mauvaise variante est l'erreur la plus courante lors d'un test t ; commencez donc par adapter la structure de vos données à l'appel approprié.
| Type | Utilisez-le quand | Appel R |
|---|---|---|
| Un échantillon | Un groupe a été comparé à une valeur cible connue. | t.test(x, mu = valeur) |
| Deux échantillons indépendants (Welch) | Deux groupes distincts, variances potentiellement inégales | t.test(x, y) |
| Deux échantillons indépendants (combinés) | Deux groupes distincts avec une variance égale | t.test(x, y, var.equal = TRUE) |
| Jumelé | Les mêmes sujets ont été mesurés deux fois. | t.test(x, y, paired = TRUE) |
| Unilatéral | Vous ne vous souciez que d'une différence dans un seul sens. | t.test(x, mu = valeur, alternative = « supérieur ») |
Au-delà de trois groupes, un test t n'est plus approprié. Passez au Test ANOVA, ce qui maintient le taux d'erreur global à 5 % au lieu de l'augmenter au fil des comparaisons par paires répétées.
Un échantillon de test T dans R
Le test t One Sample, ou test de Student, compare la moyenne d'un vecteur à une moyenne théorique, . La formule utilisée pour calculer le test t est la suivante :
Ici,
fait référence à la moyenne
à la moyenne théorique
- s est l'écart type
- n le nombre d'observations.
Pour évaluer la signification statistique du test t, vous devez calculer le p-valeurL’ p-valeur varie de 0 à 1, et est interprété comme suit :
- Une valeur p inférieure à 0.05 signifie que l'on peut rejeter l'hypothèse nulle. Il est important de noter que rejeter H0 ne revient pas à prouver H1 ; cela signifie seulement que les données sont peu probables sous l'hypothèse H0.
- Une valeur p supérieure à 0.05 indique que vous ne disposez pas de suffisamment de preuves pour rejeter l'hypothèse nulle.
Vous pouvez construire la valeur p en regardant la valeur absolue correspondante du test t dans la distribution de Student avec des degrés de liberté égaux à
Par exemple, avec 5 observations, vous comparez votre valeur t à la distribution de Student à 4 degrés de liberté, avec un niveau de confiance de 95 %. Pour rejeter l'hypothèse nulle dans un test bilatéral, la valeur absolue de t doit être supérieure à 2.776.
Cf tableau ci-dessous :
Un exemple de test T dans R
Supposons que vous soyez une entreprise produisant des cookies. Chaque biscuit est censé contenir 10 grammes de sucre. Les biscuits sont fabriqués par une machine qui ajoute le sucre dans un bol avant de mélanger le tout. Vous pensez que la machine n'ajoute pas 10 grammes de sucre pour chaque cookie. Si votre hypothèse est vraie, la machine doit être réparée. Vous avez stocké le niveau de sucre de trente cookies.
Note: Vous pouvez créer un vecteur aléatoire avec la fonction rnorm(). Cette fonction génère des valeurs normalement distribuées. La syntaxe de base est la suivante :
rnorm(n, mean, sd) arguments - n: Number of observations to generate - mean: The mean of the distribution. Optional - sd: The standard deviation of the distribution. Optional
Vous pouvez créer une distribution avec 30 observations avec une moyenne de 9.99 et un écart type de 0.04.
set.seed(123) sugar_cookie <- rnorm(30, mean = 9.99, sd = 0.04) head(sugar_cookie)
Sortie :
## [1] 9.967581 9.980793 10.052348 9.992820 9.995172 10.058603
Vous pouvez utiliser un test t sur un échantillon pour vérifier si le niveau de sucre est différent de celui de la recette. Vous pouvez dessiner un test d'hypothèse :
- H0: Le taux moyen de sucre est égal à 10
- H1: Le taux moyen de sucre est différent de 10
Vous utilisez un niveau de signification de 0.05.
# H0 : mu = 10 t.test(sugar_cookie, mu = 10)
Voici la sortie:
La p-valeur du test t à un échantillon est de 0.1079, supérieure au seuil de 0.05. L'intervalle de confiance à 95 % pour la moyenne s'étend de 9.973 à 10.002 grammes et contient la valeur cible de 10. On ne peut donc pas rejeter H0 : les données sont insuffisantes pour conclure que la machine s'écarte de la recette.
Test t de Student pour échantillons indépendants dans R
Le test t à deux échantillons indépendants est la variante la plus fréquemment utilisée, et il s'applique chaque fois que les deux ensembles de mesures proviennent de sujets différents : deux magasins, deux machines, deux groupes de traitement.
Supposons qu'une usine possède deux lignes de production et que vous souhaitiez savoir si elles remplissent les bocaux au même poids.
set.seed(123) line_a <- rnorm(25, mean = 500, sd = 8) line_b <- rnorm(25, mean = 505, sd = 8) # Welch test, the safe default t.test(line_a, line_b) # Pooled test, only when the variances are equal t.test(line_a, line_b, var.equal = TRUE)
Lisez le résultat en quatre étapes.
- t Il s'agit de la taille normalisée de l'écart entre les deux moyennes. Son signe reflète uniquement l'ordre dans lequel vous avez passé les vecteurs.
- df Les degrés de liberté sont donnés par le test de Welch, qui donne une valeur fractionnaire ; le test combiné donne un nombre entier égal à n1 + n2 – 2.
- p-valeur représente la probabilité d'observer un écart aussi important si les moyennes réelles étaient identiques.
- Intervalle de confiance Elle encadre la différence réelle. Lorsqu'elle contient zéro, la différence n'est pas significative à ce niveau.
Si vos données se trouvent dans un seul cadre de données avec une colonne de valeurs et une colonne de facteurs, utilisez plutôt l'interface de formule, qui est plus facile à lire et évite de diviser les données manuellement :
t.test(weight ~ line, data = jars)
Quelle version utiliser ? Laissez la propriété `var.equal` à sa valeur par défaut `FALSE`, sauf si vous avez testé et confirmé l'égalité des variances. La correction de Welch n'entraîne quasiment aucune consommation de ressources lorsque les variances correspondent, et elle vous protège lorsqu'elles divergent.
Test T apparié dans R
Le test t apparié, également appelé test t pour échantillons dépendants, s'applique lorsque le même groupe est mesuré à deux reprises. Voici quelques exemples d'applications typiques :
- Test A / B: Comparez deux variantes
- études cas-témoins: avant et après un traitement sur les mêmes sujets
Exemple de test T apparié dans R
Une entreprise de boissons souhaite connaître les performances d’un programme de réduction sur les ventes. L'entreprise a décidé de suivre quotidiennement les ventes d'un de ses magasins où le programme est promu. À la fin du programme, l'entreprise souhaite savoir s'il existe une différence statistique entre les ventes moyennes du magasin avant et après le programme.
- La compagnie tracNous avons enregistré les ventes quotidiennes avant le début du programme. Voici notre premier vecteur.
- Le programme est promu pendant une semaine et les ventes sont enregistrées chaque jour. C'est notre deuxième vecteur.
- Vous effectuerez le test t pour juger de l’efficacité du programme. C'est ce qu'on appelle un test t apparié car les valeurs des deux vecteurs proviennent de la même distribution (c'est-à-dire du même magasin).
Le test d’hypothèse est le suivant :
- H0: Aucune différence de moyenne
- H1: Les deux moyens sont différents
N'oubliez pas que le test t classique suppose une variance inconnue mais égale dans les deux groupes. Or, les données réelles satisfont rarement exactement à cette condition, et ignorer cette différence peut fausser le résultat.
La solution consiste à utiliser le test t de Welch, qui assouplit l'hypothèse d'égalité des variances. R l'applique par défaut car `var.equal` est défini sur `FALSE` sauf indication contraire. Dans cet ensemble de données, les deux vecteurs ont été générés avec le même écart type ; vous pouvez donc définir `var.equal` sur `TRUE` sans risque.
Vous créez deux vecteurs aléatoires à partir d'une distribution gaussienne avec une moyenne plus élevée pour les ventes après le programme.
set.seed(123) # sales before the program sales_before <- rnorm(7, mean = 50000, sd = 50) # sales after the program.This has higher mean sales_after <- rnorm(7, mean = 50075, sd = 50) # draw the distribution t.test(sales_before, sales_after,var.equal = TRUE)
La p-valeur est de 0.04606, légèrement inférieure au seuil de 0.05 ; on rejette donc l’hypothèse nulle (H0) et on conclut que les deux moyennes diffèrent significativement. Le programme de réduction semble avoir stimulé les ventes.
⚠️ Important : L'appel ci-dessus compare les deux vecteurs comme indépendant échantillons. Étant donné que les deux séries correspondent à des mesures effectuées dans le même atelier, l'appel statistiquement correct ajoute apparié = VRAI:
t.test(sales_before, sales_after, paired = TRUE)
Le test par paires évalue la moyenne des différences quotidiennes plutôt que la différence entre deux moyennes. Il élimine la variation au niveau de l'atelier commune aux deux vecteurs et offre ainsi une puissance statistique supérieure.
Comment vérifier les hypothèses du test t dans R
La p-valeur d'un test t n'est significative que si ses hypothèses sont vérifiées. Chacune d'elles peut être directement vérifiée.
1. Normalité. Les tests à un échantillon et à deux échantillons supposent que les valeurs suivent approximativement une loi normale ; le test apparié suppose que différences sont. Examinez un graphique QQ et confirmez avec le test de Shapiro-Wilk :
qqnorm(sugar_cookie); qqline(sugar_cookie)
shapiro.test(sugar_cookie)
# for a paired design, test the differences
shapiro.test(sales_after - sales_before)
Une valeur p du test de Shapiro-Wilk supérieure à 0.05 signifie que l'hypothèse de normalité ne peut être rejetée. Avec plus d'une trentaine d'observations par groupe, le théorème central limite rend le test t robuste à une asymétrie modérée.
2. Variance égale. Seul le test combiné à deux échantillons nécessite cela. Testez-le avec un test F :
var.test(line_a, line_b)
Une valeur p supérieure à 0.05 confirme l'égalité des variances, ce qui justifie var.equal = TRUE.
3. Indépendance. Cela découle de la conception de l'étude et ne peut être vérifié a posteriori. Si un même sujet contribue aux deux vecteurs, le test indépendant est tout simplement inadapté et il faut impérativement définir les données appariées à VRAI.
Quand une hypothèse s'avère fausse. Pour des données manifestement non normales avec de petits échantillons, utilisez les alternatives basées sur les rangs : `wilcox.test(x, y)` remplace le test t à deux échantillons et `wilcox.test(x, y, paired = TRUE)` remplace sa version appariée. Aucune de ces méthodes ne requiert la normalité, mais elles perdent légèrement en puissance lorsque les données sont en réalité normales.
Test t dans R : Points clés et référence du test
- L'inférence statistique est l'art de générer des conclusions sur la distribution des données.
- Le T-Test appartient à la famille des statistiques inférentielles. Elle est couramment utilisée pour déterminer s'il existe une différence statistique entre les moyennes de deux groupes.
- Le test t à un échantillon, ou test de Student, compare la moyenne d'un vecteur à une moyenne théorique.
- Le test t apparié, ou test t pour échantillons dépendants, s'applique lorsque le même groupe est mesuré deux fois.
Le tableau ci-dessous récapitule chaque test abordé ci-dessus :
| Test | Hypothèse à tester | p-valeur | Code | Argument facultatif |
|---|---|---|---|---|
| test t sur un échantillon | La moyenne d'un vecteur est différente de la moyenne théorique | 0.05 |
t.test(x, mu = mean)
|
|
| test t pour échantillons appariés | La moyenne A est différente de la moyenne B pour les mêmes sujets | 0.05 |
t.test(A, B, paired = TRUE) |
var.equal = TRUE
|
Si vous acceptez de supposer des variances égales dans un test indépendant sur deux échantillons, définissez var.equal = TRUE. Laissez la valeur par défaut FALSE pour appliquer la correction de Welch, plus sûre.




