553 lines
15 KiB
Markdown
553 lines
15 KiB
Markdown
# 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)
|