Plusieurs coefficients mesurent l'association entre deux variables. Le choix dépend de la nature des données.
Mesure la force d'une relation linéaire. Domaine : [-1, +1].
from scipy import stats
r, p = stats.pearsonr(x, y)Valeurs typiques
|r| > 0.7 → forte
|r| > 0.3 → modérée
|r| < 0.3 → faibleSensible aux outliers. Suppose une distribution normale.
Mesure une relation monotone (pas forcément linéaire). Robuste aux outliers.
rho, p = stats.spearmanr(x, y)Utilisation typique : variables ordinales (classement, notes), ou quand la relation est courbe mais croissante.
Alternative à Spearman, plus conservative.
tau, p = stats.kendalltau(x, y)Teste H0 : "il n'y a pas de corrélation".
p < 0.05 → corrélation statistiquement significativeAttention : avec un grand n, une corrélation faible (r=0.05) peut être significative mais sans utilité pratique.
import numpy as np
from scipy import statsnp.random.seed(42)
x = np.random.uniform(0, 10, 50)
y = 2 * x + 3 + np.random.normal(0, 2, 50)r, p_r = stats.pearsonr(x, y)
print(f'Pearson r: {r:.4f}, p-value: {p_r:.6f}')rho, p_s = stats.spearmanr(x, y)
print(f'Spearman ρ: {rho:.4f}')if abs(r) > 0.7: print('Forte corrélation')
elif abs(r) > 0.3: print('Modérée')
else: print('Faible')corrélation ≠ causalité. Vente de glace et noyades sont corrélées en été — pas l'une à cause de l'autre.
Pour visualiser : un nuage de points (scatter) + une régression vaut mieux qu'un nombre tout seul.
Envie d'aller plus loin ? Découvrez nos formations certifiées Bac+2 à Bac+5 →