Calculer le Z-score ((x - mean) / std)

 

Introduction

Le Z-score est une mesure statistique qui indique à quel point une valeur est éloignée de la moyenne d’un ensemble de données, en nombre d’écarts-types. C’est un outil fondamental en analyse de données, notamment pour la détection des valeurs aberrantes et la standardisation des variables.

 

Définition

Le Z-score d’une valeur x se calcule selon la formule :

Z = (x - μ) / σ

Cette mesure permet de savoir si une valeur est typique ou non par rapport au reste de la distribution :

 

Exemple de calcul manuel

Considérons un petit jeu de données :

valeurs = [10, 12, 14, 13, 11]

Calculons la moyenne :

μ = (10 + 12 + 14 + 13 + 11) / 5 = 12

Calculons l’écart-type (population) :

σ = sqrt(((10-12)² + (12-12)² + (14-12)² + (13-12)² + (11-12)²) / 5)
  = sqrt((4 + 0 + 4 + 1 + 1) / 5) = sqrt(10 / 5) = sqrt(2) ≈ 1.41

Calculons maintenant le Z-score de la valeur 10 :

Z = (10 - 12) / 1.41 ≈ -1.41

La valeur 10 est donc à environ 1.41 écarts-types sous la moyenne.

 

Exemple de calcul avec Python (Pandas)

import pandas as pd
from scipy.stats import zscore

# Exemple de DataFrame
df = pd.DataFrame({
    "valeurs": [10, 12, 14, 13, 11, 100]
})

# Calcul du Z-score pour chaque valeur
df["z_score"] = zscore(df["valeurs"])

print(df)

Dans cet exemple, la dernière valeur (100) aura un Z-score élevé car elle s’éloigne fortement de la moyenne des autres observations.

 

Utilisation : détecter des valeurs extrêmes

Un Z-score supérieur à 3 ou inférieur à -3 est généralement considéré comme une valeur extrême (outlier). En pratique, on peut ajuster ce seuil selon les exigences de précision du domaine étudié.

 

Standardisation avec le Z-score

La standardisation est le processus qui consiste à transformer chaque valeur d’une variable en son Z-score. Cela permet de :

En pratique, une variable standardisée a :

 

Exemple de standardisation avec Python

import pandas as pd
from scipy.stats import zscore

# Données originales
df = pd.DataFrame({
    "revenu": [40000, 42000, 50000, 52000, 100000]
})

# Standardisation
df["revenu_zscore"] = zscore(df["revenu"])

print(df)

Résultat :


   revenu  revenu_zscore
0   40000       -1.115
1   42000       -1.010
2   50000       -0.509
3   52000       -0.404
4  100000        3.038

La dernière valeur (100000) a un Z-score de 3.038, ce qui la qualifie de valeur aberrante dans de nombreux cas.

 

Implémentation manuelle

mean = df["revenu"].mean()
std = df["revenu"].std()

df["revenu_zscore_manual"] = df["revenu"].apply(lambda x: (x - mean) / std)

Cette méthode donne les mêmes résultats que scipy.stats.zscore (en utilisant l’écart-type corrigé).

 

Limites

 

Conclusion

Le Z-score est un outil fondamental pour mesurer l’écart d’une valeur par rapport à la moyenne, en écart-types. Il est très utile pour détecter les valeurs extrêmes, comparer des données sur différentes échelles et préparer les données pour les algorithmes de machine learning. Cependant, il convient de vérifier la distribution des données avant de s’y fier entièrement, car sa robustesse est limitée en présence de valeurs aberrantes.