# Guide Complet de la Corrélation 📊 **Comprendre et maîtriser l'analyse de corrélation** pour identifier les relations entre variables et construire des modèles robustes. --- ## Table des Matières 1. [Qu'est-ce que la Corrélation ?](#quest-ce-que-la-corrélation) 2. [Les Trois Méthodes](#les-trois-méthodes) 3. [Interpréter la Matrice](#interpréter-la-matrice) 4. [Multicolinéarité](#multicolinéarité) 5. [P-Values et Significativité](#p-values-et-significativité) 6. [Bonnes Pratiques](#bonnes-pratiques) 7. [Exemples Concrets](#exemples-concrets) --- ## Qu'est-ce que la Corrélation ? ### Définition La **corrélation** mesure la **force** et la **direction** de la relation linéaire entre deux variables quantitatives. ### Coefficient de Corrélation Le coefficient de corrélation **r** varie entre **-1 et +1** : ``` -1 ←----------|----------|----------|----------→ +1 négatif positif fort fort ``` ### Interprétation Générale | Valeur r | Force | Direction | Signification | |----------|-------|-----------|---------------| | **0.9 à 1.0** | Très forte | Positive | X↑ ⇒ Y↑ fortement | | **0.7 à 0.9** | Forte | Positive | X↑ ⇒ Y↑ | | **0.5 à 0.7** | Modérée | Positive | X↑ ⇒ Y↑ modérément | | **0.3 à 0.5** | Faible | Positive | X↑ ⇒ Y↑ légèrement | | **0.0 à 0.3** | Très faible | Positive | Relation quasi nulle | | **0.0** | Aucune | - | Indépendance linéaire | | **-0.3 à 0.0** | Très faible | Négative | X↑ ⇒ Y↓ légèrement | | **-0.5 à -0.3** | Faible | Négative | X↑ ⇒ Y↓ | | **-0.7 à -0.5** | Modérée | Négative | X↑ ⇒ Y↓ modérément | | **-0.9 à -0.7** | Forte | Négative | X↑ ⇒ Y↓ | | **-1.0 à -0.9** | Très forte | Négative | X↑ ⇒ Y↓ fortement | ### Exemples Visuels #### Corrélation Positive Forte (r = 0.95) ``` ┌─────┐ │ Y │ • │ │ • │ │ • │ │ • │ │• └─────┴─────→ X ``` **Exemple** : Taille vs Poids (plus grand = plus lourd) #### Corrélation Négative Forte (r = -0.90) ``` ┌─────┐ │ Y │• │ │ • │ │ • │ │ • │ │ • └─────┴─────→ X ``` **Exemple** : Vitesse vs Temps (plus vite = moins de temps) #### Corrélation Nulle (r = 0.02) ``` ┌─────┐ │ Y │ • • • │ │• • │ │ • • │ │ • • │ │• • └─────┴─────→ X ``` **Exemple** : Taille vs Note en mathématiques --- ## Les Trois Méthodes L'application propose **3 méthodes** de calcul de corrélation : ### 1. Pearson (Défaut) **Quand l'utiliser ?** - ✅ Données **normalement distribuées** - ✅ Relation **linéaire** - ✅ Variables **continues** **Hypothèses** : - Distribution normale (pas trop asymétrique) - Pas d'outliers extrêmes - Relation linéaire **Formule** : ``` Σ[(Xi - X̄)(Yi - Ȳ)] r = ---------------------------- √[Σ(Xi - X̄)²] √[Σ(Yi - Ȳ)²] ``` **Exemple** : ```python # Température vs Vent (relation linéaire, normale) # Corrélation de Pearson : r = 0.85 (forte positive) ``` --- ### 2. Spearman **Quand l'utiliser ?** - ✅ Données **non-paramétriques** (pas normales) - ✅ Relation **monotone** (pas forcément linéaire) - ✅ Présence d'**outliers** - ✅ Variables **ordinales** (rangs) **Hypothèses** : - Relation monotone (toujours dans le même sens) - Moins sensible aux outliers **Principe** : Convertit les données en **rangs** avant calcul. **Exemple** : ```python # Revenu vs Satisfaction (relation monotone mais non linéaire) # Revenu: [1000, 2000, 5000, 10000, 50000] # Rangs: [1, 2, 3, 4, 5] # Corrélation de Spearman : r = 0.90 ``` **Différence Pearson vs Spearman** : ``` Pearson (linéaire) : • • • • • Spearman (monotone) : • • • • • ``` --- ### 3. Kendall (Tau) **Quand l'utiliser ?** - ✅ **Petits échantillons** (n < 30) - ✅ Beaucoup de **valeurs identiques** (ex-aequo) - ✅ Données **ordinales** **Hypothèses** : - Mesure la concordance des paires **Principe** : Compte les paires **concordantes** vs **discordantes**. **Exemple** : ```python # Classement vs Préférence (10 étudiants) # Kendall Tau = 0.67 (modéré) ``` --- ## Interpréter la Matrice ### Structure de la Heatmap ``` Var1 Var2 Var3 Var4 ┌───────┬───────┬───────┬───────┐ Var1 │ 1.00 │ 0.85 │ -0.30 │ 0.15 │ ├───────┼───────┼───────┼───────┤ Var2 │ 0.85 │ 1.00 │ -0.20 │ 0.45 │ ├───────┼───────┼───────┼───────┤ Var3 │ -0.30 │ -0.20 │ 1.00 │ 0.92 │ ← Multicolinéarité ├───────┼───────┼───────┼───────┤ Var4 │ 0.15 │ 0.45 │ 0.92 │ 1.00 │ └───────┴───────┴───────┴───────┘ ``` ### Lecture de la Heatmap #### Couleurs - **Rouge foncé** (r > 0.7) : Forte corrélation positive - **Rouge clair** (0.3 < r < 0.7) : Corrélation modérée/positive - **Gris/Blanc** (|r| < 0.3) : Corrélation faible/nulle - **Bleu clair** (-0.7 < r < -0.3) : Corrélation modérée/négative - **Bleu foncé** (r < -0.7) : Forte corrélation négative #### Bordure Rouge ⚠️ - Indique une **multicolinéarité problématique** (|r| ≥ 0.7) - Entre deux **prédicteurs** (variables X) - À éviter dans la régression ### Diagonale - Toujours égale à **1.00** (corrélation de la variable avec elle-même) - Non pertinente pour l'analyse --- ## Multicolinéarité ### Définition La **multicolinéarité** se produit lorsque deux ou plusieurs prédicteurs sont **fortement corrélés** entre eux (|r| ≥ 0.7). ### Pourquoi c'est Problématique ? ❌ **Effets sur la Régression** : - Coefficients **instables** (varient beaucoup) - **p-values** peu fiables - Difficulté d'interpréter l'effet isolé de chaque variable - **R²** artificiellement élevé ### Exemple de Multicolinéarité ```python # Dataset : Prix immobiliers # Variables : # - Surface_m² # - Surface_pieds² (même variable, unité différente) # - Prix # Corrélation Surface_m² vs Surface_pieds² : r = 1.0 # ⚠️ BORDURE ROUGE sur la heatmap # Problème dans la régression : # Prix = 50000 + 1000*Surface_m² - 200*Surface_pieds² # ^^^^^ coefficient positif ^^^^^^^^ coefficient négatif ??? # absurde ! (les deux expliquent la même chose) ``` ### Détection Dans l'application : 1. **Ouvrez** la matrice de corrélation 2. **Recherchez** les bordures rouges entre prédicteurs 3. **Notez** les variables concernées ### Solution **Option 1 : Supprimer une variable** ```python # Avant : Surface_m² (r=1.0) vs Surface_pieds² # Solution : Garder Surface_m², supprimer Surface_pieds² ``` **Option 2 : Combiner les variables** ```python # Avant : Note_Maths, Note_Physique, Note_Chimie (toutes corrélées) # Solution : Créer "Note_Scientifique" = moyenne des trois ``` **Option 3 : Analyse de corrélation partielle** Utiliser des techniques avancées (hors scope du guide) ### Checklist Avant Régression Avant de lancer votre régression, vérifiez : ✅ **Aucune bordure rouge** entre les prédicteurs potentiels ✅ **Si bordure rouge** : choisissez la variable la plus corrélée avec la cible ✅ **Documentez** votre choix de retrait de variable --- ## P-Values et Significativité ### Qu'est-ce que la P-Value ? La **p-value** mesure la **probabilité** que la corrélation observée soit due au hasard. - **p-value < 0.05** : Corrélation **statistiquement significative** (fiable) - **p-value ≥ 0.05** : Corrélation **non significative** (pourrait être due au hasard) ### Interprétation | Corrélation (r) | P-Value | Interprétation | |-----------------|---------|----------------| | 0.85 | p < 0.001 | ✅ Forte et significative | | 0.60 | p = 0.040 | ✅ Modérée et significative | | 0.75 | p = 0.080 | ⚠️ Forte mais NON significative (échantillon trop petit) | | 0.30 | p = 0.200 | ❌ Faible et non significative | ### Impact de la Taille d'Échantillon ``` Pour r = 0.30 : n = 10 → p = 0.40 (non significatif) n = 50 → p = 0.03 (significatif) n = 100 → p = 0.002 (très significatif) ``` **Règle** : Plus l'échantillon est grand, plus les petites corrélations deviennent significatives. ### Filtre "Significatif Seulement" Dans l'application : - **Cochez** "Significatif seulement (p < 0.05)" - La heatmap n'affiche que les corrélations **statistiquement fiables** - Utile pour filtrer le bruit --- ## Bonnes Pratiques ### 1. Vérifier les Hypothèses **Pour Pearson** : ```python # Test de normalité (Shapiro-Wilk) from scipy.stats import shapiro stat, p = shapiro(data['variable']) if p > 0.05: print("Distribution normale → Pearson OK") else: print("Distribution non normale → Utiliser Spearman") ``` **Vérification visuelle** : ```python import matplotlib.pyplot as plt plt.hist(data['variable']) plt.show() # Forme de cloche = normale ``` ### 2. Traiter les Outliers Les outliers faussent **fortement** la corrélation Pearson : ```python # Sans outlier : r = 0.95 X = [1, 2, 3, 4, 5] Y = [2, 4, 6, 8, 10] # Avec outlier : r = 0.40 X = [1, 2, 3, 4, 100] # 100 est outlier Y = [2, 4, 6, 8, 10] # Solution : utiliser Spearman (robuste aux outliers) # Ou supprimer l'outlier ``` ### 3. Corrélation ≠ Causalité ⚠️ **Attention** : Une corrélation forte n'implique PAS que X cause Y. **Exemples classiques** : - 🍦 Ventes de glace vs 🦈 Attaques de requins - Corrélation : r = 0.90 - Cause commune : 🌞 Été (chaleur) - Solution : Pas de causalité directe - ☕ Café vs 💰 Revenu - Corrélation : r = 0.75 - Explication : Les riches boivent plus de café (ou l'inverse ?) - Nécessite une expérience contrôlée ### 4. Corrélation de Spearman pour les Relations Non-Linéaires ```python # Relation exponentielle X = [1, 2, 3, 4, 5] Y = [1, 4, 9, 16, 25] # Y = X² # Pearson : r = 0.97 (mais PAS linéaire !) # Spearman : r = 1.00 (monotone parfaite) ``` ### 5. Matrice de Corrélation Avant Régression **Workflow recommandé** : ``` 1. Charger les données ↓ 2. Matrice de corrélation ↓ 3. Identifier les variables fortement corrélées avec la cible (|r| > 0.5) ↓ 4. Repérer la multicolinéarité entre prédicteurs (bordure rouge) ↓ 5. Sélectionner les prédicteurs finaux (pas de multicolinéarité) ↓ 6. Régression ``` --- ## Exemples Concrets ### Exemple 1 : Immobilier **Dataset** : Prix, Surface, Chambres, Jardin, Garage, Distance_Centre **Matrice de corrélation** : ``` Prix Surface Chambres Jardin Garage Distance Prix 1.00 0.85 0.65 0.70 0.55 -0.75 Surface 0.85 1.00 0.72 0.60 0.50 -0.40 Chambres 0.65 0.72 1.00 0.45 0.35 -0.25 Jardin 0.70 0.60 0.45 1.00 0.30 -0.50 Garage 0.55 0.50 0.35 0.30 1.00 -0.20 Distance -0.75 -0.40 -0.25 -0.50 -0.20 1.00 ``` **Analyse** : 1. **Variables corrélées avec le Prix** : - Surface : r = 0.85 ✅ (très forte) - Distance : r = -0.75 ✅ (forte négative) - Jardin : r = 0.70 ✅ (forte) - Chambres : r = 0.65 ✅ (modérée) 2. **Multicolinéarité** : - Surface vs Chambres : r = 0.72 ⚠️ (proche du seuil) - Si r > 0.7 : choisir une seule variable 3. **Sélection finale** : - X = Surface, Distance, Jardin - Éviter Chambres (multicolinéarité avec Surface) --- ### Exemple 2 : Santé **Dataset** : IMC, Tension, Cholestérol, Âge, Sport, Calories **Matrice (Spearman)** : ``` IMC Tension Cholestérol Âge Sport Calories IMC 1.00 0.55 0.48 0.30 -0.60 0.70 Tension 0.55 1.00 0.65 0.45 -0.40 0.50 Cholestérol 0.48 0.65 1.00 0.60 -0.35 0.45 Âge 0.30 0.45 0.60 1.00 -0.25 0.20 Sport -0.60 -0.40 -0.35 -0.25 1.00 -0.50 Calories 0.70 0.50 0.45 0.20 -0.50 1.00 ``` **Analyse** : - **Prédicteurs du Tension** : Cholestérol (0.65), IMC (0.55) - **Multicolinéarité** : IMC vs Calories (0.70) ⚠️ - **Action** : Garder IMC (plus corrélé avec Tension), exclure Calories --- ### Exemple 3 : Marketing **Dataset** : Ventes, Budget_TV, Budget_Radio, Budget_Online, Prix, Concurrence **Matrice** : ``` Ventes Budget_TV Budget_Radio Budget_Online Prix Concurrence Ventes 1.00 0.80 0.45 0.72 -0.60 -0.40 Budget_TV 0.80 1.00 0.30 0.55 -0.20 -0.10 Budget_Radio 0.45 0.30 1.00 0.35 -0.15 -0.05 Budget_Online 0.72 0.55 0.35 1.00 -0.25 -0.15 Prix -0.60 -0.20 -0.15 -0.25 1.00 0.20 Concurrence -0.40 -0.10 -0.05 -0.15 0.20 1.00 ``` **Décisions** : 1. **Meilleur canal** : TV (r = 0.80) 2. **Deuxième** : Online (r = 0.72) 3. **Radio** : Moins efficace (r = 0.45) 4. **Pas de multicolinéarité** sévère entre canaux 5. **Sélection** : Budget_TV, Budget_Online, Prix, Concurrence --- ## 📊 Fonctionnalités de l'Application ### Contrôles 1. **Sélection de la méthode** - Menu déroulant : Pearson / Spearman / Kendall - Défaut : Pearson 2. **Seuil minimum** - Filtre les corrélations faibles - Exemple : 0.5 n'affiche que |r| ≥ 0.5 3. **Filtre de significativité** - Cochez "Significatif seulement" - Garantit p < 0.05 4. **Export CSV** - Téléchargez la matrice complète - Inclut corrélations et p-values ### Composants Visuels #### Cartes de Résumé - **Corrélations les plus fortes** : Top 5 par |r| - **Corrélations les plus faibles** : Bottom 5 non nulles #### Tooltip (Survol) Cliquez sur une case pour voir : - Noms des variables - Coefficient de corrélation - P-value - Significativité (✅/❌) - Interprétation (Fort/Moyen/Faible) --- ## 🎯 Checklist d'Analyse Avant de passer à la régression : - [ ] **Méthode choisie** selon la distribution des données - [ ] **Corrélations avec la cible** identifiées (|r| > 0.5 souhaité) - [ ] **Multicolinéarité** vérifiée (pas de bordure rouge entre prédicteurs) - [ ] **P-values** significatives (p < 0.05) - [ ] **Outliers** traités (si Pearson) - [ ] **Variables sélectionnées** documentées - [ ] **Résultats exportés** pour référence future --- **Version** : 1.0 **Projet** : Application d'Analyse de Données **Auteur** : Documentation Utilisateur 🔗 **Voir aussi** : [Guide Régression](REGRESSION_GUIDE.md) | [Guide Outliers](OUTLIER_GUIDE.md)