Exercice 79 / 100

Stats — Corrélation

Calcule et visualise la corrélation entre variables

Plusieurs coefficients mesurent l'association entre deux variables. Le choix dépend de la nature des données.

Pearson (r)

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 → faible

Sensible aux outliers. Suppose une distribution normale.

Spearman (ρ)

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.

Kendall (τ)

Alternative à Spearman, plus conservative.

tau, p = stats.kendalltau(x, y)

La p-value associée

Teste H0 : "il n'y a pas de corrélation".

p < 0.05 → corrélation statistiquement significative

Attention : avec un grand n, une corrélation faible (r=0.05) peut être significative mais sans utilité pratique.

Exemple complet

import numpy as np from scipy import stats
np.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élationcausalité. Vente de glace et noyades sont corrélées en été — pas l'une à cause de l'autre.

Deux mesures peuvent monter ensemble sans que l'une cause l'autre : c'est la chaleur qui fait grimper les ventes de glace et les noyades, et la corrélation entre ces deux-là ne dit rien de plus

Pour visualiser : un nuage de points (scatter) + une régression vaut mieux qu'un nombre tout seul.

exercise.py

Envie d'aller plus loin ? Découvrez nos formations certifiées Bac+2 à Bac+5 →