Accéder au contenu principal

Introduction aux tests t en Python

Apprenez à réaliser des tests t en Python avec ce tutoriel. Comprenez les différents types de tests t — test à un échantillon, test à deux échantillons, test apparié et test de Welch — et quand les utiliser.
Actualisé 19 sept. 2026  · 13 min lire

Explorer avec l’IA

ChatGPTClaudePerplexity

Dans un monde guidé par les données, les entreprises ne peuvent plus se fier à l’intuition pour prendre des décisions critiques. Elles doivent s’appuyer sur des méthodes statistiques comme les tests d’hypothèse pour étayer leurs actions par des preuves solides. L’un des tests les plus utilisés est le test t, qui permet de comparer les moyennes de deux groupes et de déterminer si elles diffèrent significativement.

Mais comment appliquer concrètement un test t et comment en interpréter les résultats ? Dans ce tutoriel, nous allons répondre à ces questions et à d’autres. Nous vous guiderons à travers un scénario où vous souhaitez évaluer le succès d’une nouvelle fonctionnalité lancée par une entreprise. Nous verrons comment utiliser les tests t en Python et ses bibliothèques puissantes pour analyser les résultats.

À la fin de ce tutoriel, vous aurez une compréhension solide des tests t et saurez les appliquer à vos propres données en toute confiance.

Dans ce tutoriel, nous passerons en revue les différents types de tests t – test à un échantillon, test à deux échantillons, test apparié et test de Welch – ainsi que leurs applications et les cas d’usage recommandés.  

Terminologie expliquée

Avant d’entrer dans le détail des tests t, revoyons rapidement quelques termes associés qui renforceront votre compréhension conceptuelle de ce test statistique.

Test d’hypothèse

Le test d’hypothèse consiste à partir d’une supposition, appelée hypothèse nulle, et à rechercher des éléments permettant de la rejeter. L’hypothèse nulle représente l’état de référence, tandis que l’hypothèse alternative exprime l’opposé de l’hypothèse nulle. 

Par exemple, on peut utiliser un test d’hypothèse pour déterminer si une nouvelle fonctionnalité lancée par une entreprise reçoit un bon accueil client, ce qui se reflète dans l’indicateur de succès. Consultez notre cours sur les tests d’hypothèse pour aller plus loin.

Valeur p 

La valeur p est la probabilité d’obtenir des résultats au moins aussi extrêmes que ceux observés, en supposant que l’hypothèse nulle est vraie. Une petite valeur p indique que la probabilité d’observer un tel résultat est très faible si l’hypothèse nulle est correcte.

Niveau de signification

Le niveau de signification, noté alpha, représente la probabilité de rejeter l’hypothèse nulle alors qu’elle est vraie. On parle aussi d’erreur de type I.

Significativité statistique

La significativité statistique correspond au degré de confiance indiquant que le résultat observé n’est pas dû au hasard. Attention, significatif statistiquement ne signifie pas nécessairement pertinent en pratique : l’effet peut rester négligeable opérationnellement. Une erreur d’échantillonnage peut aussi conduire à une significativité si l’échantillon ne représente pas fidèlement la population cible. 

Hypothèses des tests t

Comprendre les hypothèses d’un test statistique est essentiel pour garantir des résultats fiables. Les tests t n’échappent pas à la règle. Toute violation de ces hypothèses peut mener à des conclusions trompeuses. Examinons en détail les quatre hypothèses des tests t :

Indépendance des observations

Premièrement, l’indépendance stipule que les observations ne sont pas influencées par un facteur implicite dans les données et ne sont pas corrélées dans le temps. Pour garantir l’indépendance, on peut appliquer diverses techniques de traitement des données dépendantes, comme l’explique l’Université du Texas à Austin.

Identiquement distribuées 

Deuxièmement, la présence de valeurs aberrantes (données anormales) peut diminuer la statistique t et accroître la variance, ce qui affecte la probabilité de rejeter l’hypothèse nulle. Il est donc crucial d’identifier et de comprendre les causes de ces comportements anormaux pour déterminer s’il s’agit de données légitimes ou d’erreurs. Solliciter un expert métier peut aider à cerner la dynamique réelle des données.

Distribution normale 

Troisièmement, le test t est valable pour des données suivant une loi normale. Des données asymétriques peuvent conduire à un rejet erroné de l’hypothèse nulle. Avec un nombre limité de points, il est difficile de tester la normalité. Dans ce cas, on peut recourir à des tests non paramétriques ne supposant pas de distribution particulière, ou effectuer une transformation des données pour se rapprocher de la normalité.

Variances égales 

Enfin, pour que le test t classique s’applique, les deux populations comparées doivent avoir des variances égales. Cela peut être évalué graphiquement avec un Q-Q plot.

Maintenant que nous avons clarifié les hypothèses, explorons les différents types de tests t à l’aide d’un exemple en Python. À l’issue, vous saurez réaliser des tests t et interpréter leurs résultats avec assurance.

Test t à un échantillon 

Le test t à un échantillon est un test d’hypothèse statistique qui permet de déterminer si une moyenne populationnelle inconnue (mu) est différente d’une valeur revendiquée. 

t-test equation

Où :

x = moyenne de l’échantillon

𝝁 = moyenne de la population

S = écart-type de l’échantillon

n = taille de l’échantillon

t = statistique t

Illustrons par un exemple. Une entreprise affirme produire des roulements à billes de 10 cm de diamètre (hypothèse nulle). Vous décidez de vérifier cette affirmation. Vous collectez 21 roulements dans plusieurs magasins de la ville et mesurez leur diamètre. Vous devez déterminer si l’affirmation de l’entreprise est fausse (hypothèse alternative) à partir de ces mesures.

Le test est formulé comme suit :

Hypothèse nulle :            H0 : x  = 𝝁

Hypothèse alternative :  Ha : x  ≠ 𝝁 

T-test flow diagram

Pour invalider la revendication, vous devez montrer statistiquement que les mesures de l’échantillon diffèrent des 10 cm annoncés. Comme la taille de l’échantillon est 21 (inférieure à 30), on utilise un test t. Ici, la moyenne observée est de 11 cm et l’écart-type de 1 cm.

Exemple de test t à un échantillon en Python

Voyons comment réaliser un test t à un échantillon en Python avec la fonction scipy.stats.ttest_1samp()

import numpy as np  
from scipy import stats  

# Population Mean 
mu = 10

# Sample Size
N1 = 21

# Degrees of freedom  
dof = N1 - 1

# Generate a random sample with mean = 11 and standard deviation = 1
x = np.random.randn(N1) + 11

# Using the Stats library, compute t-statistic and p-value
t_stat, p_val = stats.ttest_1samp(a=x, popmean = mu)
print("t-statistic = " + str(t_stat))  
print("p-value = " + str(p_val)) 
t-statistic = 4.689539773390642
p-value = 0.0001407967502139183

Interprétation des résultats

La statistique t vaut 4,69, une valeur très éloignée de 0 dans une t-distribution. Pour quantifier cet écart, on se réfère à la valeur p (présentée plus haut). La valeur p est inférieure au niveau de signification par défaut de 0,05, ce qui indique que la probabilité d’un tel résultat sous l’hypothèse nulle est quasi nulle : on peut donc rejeter l’hypothèse nulle.

Notez que le niveau de signification est défini au début de l’expérience.

Une autre approche

Effectuons le test t à un échantillon sans la fonction ttest_1samp(). La statistique t est ici définie par la différence entre la moyenne de l’échantillon et celle de la population, divisée par l’erreur standard, comme expliqué précédemment. 

  • Calculez d’abord la moyenne de l’échantillon (x_bar).
  • Calculez ensuite l’écart-type de l’échantillon avec un degré de liberté égal à un.
  • Calculez l’erreur standard en divisant l’écart-type par la racine carrée de la taille d’échantillon.
  • Appliquez la formule du test t à un échantillon.
  • Calculez la valeur p pour établir la significativité de la statistique t.
# Sample Mean
x_bar = x.mean()

# Standard Deviation  
std = np.std(x, ddof=1)

# Standard Error
ste = std/np.sqrt(N1)

# Calculating the T-Statistics  
t_stat = (x_bar - mu) / ste

# p-value of the t-statistic
p_val = 2*(1 - stats.t.cdf(abs(t_stat), df = dof))
print("t-statistic = " + str(t_stat))  
print("p-value = " + str(p_val)) 
t-statistic = 4.689539773390642
p-value = 0.0001407967502139183

Comment réaliser un test t à deux échantillons en Python

Poursuivons l’exemple en supposant que l’entreprise ouvre une seconde usine pour produire les mêmes roulements. Nous devons déterminer si les roulements des deux usines diffèrent en taille. Dans ce cas, on utilise un test t à deux échantillons. La statistique t est définie comme suit. 

Two sample t-test equation

Où :

X1 = moyenne du premier échantillon

X2  = moyenne du second échantillon

S1 = écart-type du premier échantillon

S2 = écart-type du second échantillon

N1 = taille du premier échantillon

N2 = taille du second échantillon

Exemple de test t à deux échantillons en Python

Supposons que la première usine partage 21 échantillons avec une moyenne de 10,5 cm, et la seconde 25 échantillons avec une moyenne de 9,5 cm. Les deux ont un écart-type de 1 cm. 

# Sample Sizes
N1, N2 = 21, 25

# Degrees of freedom  
dof = min(N1,N2) - 1

# Gaussian distributed data with mean = 10.5 and var = 1  
x = np.random.randn(N1) + 10.5

# Gaussian distributed data with mean = 9.5 and var = 1  
y = np.random.randn(N2) + 9.5

## Using the internal function from SciPy Package  
t_stat, p_val = stats.ttest_ind(x, y)  
print("t-statistic = " + str(t_stat))  
print("p-value = " + str(p_val))
t-statistic = 3.18913308431476
p-value = 0.0026296199823557754

Interprétation des résultats

La valeur p de 0,0026, inférieure au seuil de 0,05, nous conduit à rejeter l’hypothèse nulle : les roulements issus des deux usines ne sont pas identiques.

Comment réaliser un test t apparié en Python

Après ces résultats, l’entreprise décide d’améliorer sa technologie de fabrication en introduisant une nouvelle machine de moulage. Elle lance un pilote dans l’une des usines et teste si la machine modifie le diamètre des roulements en comparant deux échantillons de 25 pièces : l’un avant l’installation, l’autre après. 

Les diamètres moyens sont respectivement de 10,5 cm et 9,9 cm. 

Exemple de test t apparié en Python

Réaliserons un test t apparié pour vérifier si le changement est statistiquement significatif.

# Sample Sizes
N = 25

# Degrees of freedom  
dof = N - 1

# Gaussian distributed data with mean = 10.5 and var = 1  
x = np.random.randn(N) + 10.5

# Gaussian distributed data with mean = 9.9 and var = 1  
y = np.random.randn(N) + 9.9

t_stat, p_val = stats.ttest_rel(x,y)
print("t-statistic = " + str(t_stat))  
print("p-value = " + str(p_val))
t-statistic = 3.446152658909739
p-value = 0.0021043953630465787

Interprétation des résultats

La faible valeur p indique que l’hypothèse nulle est rejetée, c’est-à-dire qu’il existe un changement du diamètre des roulements après l’introduction de la nouvelle machine de moulage. 

Points d’attention pour le test t apparié

Les hypothèses du test t apparié portent sur les différences au sein de chaque paire, et non sur les observations brutes. Il est donc essentiel de vérifier que ces différences sont distribuées de manière symétrique et qu’elles ne contiennent pas de valeurs aberrantes. 

Comment réaliser le test t de Welch en Python

Après un pilote concluant avec la nouvelle machine de moulage dans une première usine, l’entreprise souhaite tester, dans la seconde, une nouvelle machine de polissage. Cette machine produit des roulements très précis, mais sa performance peut être affectée par la température et les fluctuations de courant. L’entreprise veut déterminer si les roulements des deux usines diffèrent, en comparant 21 échantillons de la première usine et 25 de la seconde. 

Exemple de test t de Welch en Python

Le diamètre moyen des roulements de la première usine est de 9,9 cm avec un écart-type de 1 cm, tandis que celui de la seconde est de 10 cm avec un écart-type de 3 cm. Comme les écarts-types diffèrent, nous utiliserons le test t de Welch.

# Sample Sizes
N1, N2 = 21, 25

# Degrees of freedom  
dof = min(N1,N2) - 1

# Gaussian distributed data with mean = 9.9 and var = 1  
x = np.random.randn(N1) + 9.9

# Gaussian distributed data with mean = 10 and var = 3
y = 3*np.random.randn(N2) + 10

## Using SciPy Package  
t_stat, p_val = stats.ttest_ind(x, y, equal_var = False) 
print("t-statistic = " + str(t_stat))  
print("p-value = " + str(p_val))
t-statistic = 1.3828843424092643
p-value = 0.17753505304053804

Interprétation des résultats

La valeur p est supérieure au niveau de signification de 0,05, ce qui signifie que nous ne rejetons pas l’hypothèse nulle : les roulements des deux usines peuvent être considérés comme identiques. En raison de l’écart-type élevé du second échantillon, il serait prudent de collecter davantage de données pour renforcer la conclusion (par exemple, en vue d’un test z si les conditions le permettent). 

Points d’attention pour le test t de Welch 

Contrairement aux autres tests t, le test t de Welch s’applique lorsque les variances populationnelles sont inégales.

Conclusion

Les données révèlent les véritables dynamiques qui influencent les décisions business, à condition de poser les bonnes questions. Cela exige une compréhension robuste des différents tests statistiques et de leurs cas d’usage. Ce tutoriel se concentre sur les tests t et en rappelle les hypothèses sous-jacentes, comme l’indépendance des observations et la normalité. 

En plus d’un rappel sur les tests d’hypothèse, ce tutoriel propose une vue d’ensemble des principaux tests t à l’aide d’exemples. Nous vous encourageons vivement à pratiquer les tests t en Python et à déterminer lequel convient le mieux pour évaluer la significativité statistique de votre expérimentation.    

Références et ressources recommandées :

Sujets
Python
Analyse des données