Analysis/docs/REGRESSION_GUIDE.md
2026-01-11 22:56:02 +01:00

1073 lines
25 KiB
Markdown
Raw Permalink Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Guide Complet de la Régression
📈 **Maîtriser l'analyse de régression** pour modéliser, prédire et comprendre les relations entre variables.
---
## Table des Matières
1. [Concepts Fondamentaux](#concepts-fondamentaux)
2. [Types de Modèles](#types-de-modèles)
3. [Configuration du Modèle](#configuration-du-modèle)
4. [Interprétation des Résultats](#interprétation-des-résultats)
5. [Équations du Modèle](#équations-du-modèle)
6. [Diagnostics Graphiques](#diagnostics-graphiques)
7. [Bonnes Pratiques](#bonnes-pratiques)
8. [Exemples Détaillés](#exemples-détaillés)
---
## Concepts Fondamentaux
### Qu'est-ce que la Régression ?
La **régression** est une méthode statistique qui permet de :
**Modéliser** la relation entre une variable cible (Y) et des prédicteurs (X)
**Prédire** les valeurs de Y pour de nouvelles données
**Comprendre** l'impact de chaque variable sur Y
**Quantifier** l'incertitude des prédictions
### Notation Mathématique
```
Y = f(X) + ε
Où :
- Y = Variable cible (à expliquer/prédire)
- X = Variables explicatives (prédicteurs)
- f = Fonction du modèle
- ε = Erreur résiduelle (bruit)
```
### Terminologie
| Terme | Définition | Exemple |
|-------|------------|---------|
| **Variable cible (Y)** | Variable à expliquer/prédire | Prix, Ventes, Score |
| **Prédicteurs (X)** | Variables qui expliquent Y | Surface, Budget, Âge |
| **Coefficients** | Impact de chaque X sur Y | +2500 pour Surface |
| **Intercept** | Valeur de Y quand tous les X = 0 | Prix de base |
| **Résidus** | Différence entre réel et prédit | Erreur de prédiction |
| **R²** | Proportion de variance expliquée | 0.85 = 85% expliqué |
---
## Types de Modèles
L'application propose **4 types** de modèles de régression :
### 1. Régression Linéaire 📐
**Objectif** : Modéliser une relation **linéaire** entre X et Y.
**Équation** :
```
Y = β₀ + β₁X₁ + β₂X₂ + ... + βₙXₙ + ε
```
**Quand l'utiliser ?**
- ✅ Relation **linéaire** évidente (scatter plot en ligne droite)
- ✅ Cible **numérique continue**
- ✅ Résidus **normalement distribués**
**Hypothèses** :
- Linéarité de la relation
- Indépendance des erreurs
- Homoscédasticité (variance constante)
- Normalité des résidus
**Exemple** :
```python
# Prédire le prix immobilier
Prix = 50000 + 2500*Surface + 15000*Chambres
# Intercept : 50000€ (prix de base)
# Surface : +2500€ par m²
# Chambres : +15000€ par chambre
```
**Graphique typique** :
```
Prix
│ •
│ • •
│ • •
│ • •
│• •
└─────────→ Surface
(Ligne droite)
```
---
### 2. Régression Logistique 🎲
**Objectif** : Prédire la **probabilité** d'un événement binaire.
**Équation** :
```
P(Y=1) = 1 / (1 + e^-(β₀ + β₁X₁ + ... + βₙXₙ))
```
**Quand l'utiliser ?**
- ✅ Cible **binaire** (0/1, oui/non, vrai/faux)
- ✅ Cible **catégorique** (convertie en binaire)
- ✅ Intéressé par la **probabilité**, pas juste la classe
**Hypothèses** :
- Indépendance des observations
- Pas de multicolinéarité sévère
- Taille d'échantillon suffisante
**Exemple** :
```python
# Prédire si un client va acheter (1) ou non (0)
P(Achat) = f(Âge, Revenu, Historique)
# Résultat : Probabilité de 0 à 1
# Si P > 0.5 : Prédit "Achat"
# Si P ≤ 0.5 : Prédit "Pas d'achat"
```
**Graphique typique** :
```
P(Achat)
1.0 ┤ ┌────────
│ ┌
│ ┌
│ ┌
│ ┌
0.0 ┼─────┬─────→ Âge
30
(Courbe en S)
```
**Interprétation des coefficients** :
- **Odds Ratio** : e^coefficient
- Si coefficient = 0.5 → OR = 1.65 (65% plus de chances)
- Si coefficient = -0.5 → OR = 0.61 (39% moins de chances)
---
### 3. Régression Polynomial 📊
**Objectif** : Capturer des relations **non linéaires** (courbes).
**Équation** :
```
Y = β₀ + β₁X + β₂X² + β₃X³ + ... + ε
```
**Quand l'utiliser ?**
- ✅ Relation **courbe** évidente sur le scatter plot
- ✅ Résidus du modèle linéaire montrent un motif
- ✅ Relation quadratique (en U ou en cloche)
**Degré du polynôme** :
- **Degré 2** : Parabole (U ou ∩)
- **Degré 3** : Courbe en S
- **Degré 4-5** : Formes complexes (⚠️ sur-apprentissage)
**Exemple** :
```python
# Relation entre Budget_Publicité et Ventes
# (avec rendements décroissants)
Ventes = 1000 + 50*Budget - 0.1*Budget²
# Budget optimal : Budget* = 50 / (2*0.1) = 250€
# Ventes maximales : 1000 + 50*250 - 0.1*250² = 7250
```
**Graphique typique** :
```
Ventes
│ •
│ • •
│ • •
│ • •
│ • •
└───────────→ Budget_Publicité
(Courbe en ∩)
```
**⚠️ Risques** :
- **Sur-apprentissage** : Degré trop élevé s'adapte au bruit
- **Extrapolation** : Prédictions dangereuses hors des données
- **Interprétation** : Coefficients difficiles à expliquer
**Recommandation** : Commencer avec le degré 2, augmenter progressivement.
---
### 4. Régression Exponentielle 📈
**Objectif** : Modéliser une **croissance/décroissance exponentielle**.
**Équation** :
```
Y = e^(β₀ + β₁X + ε)
= e^β₀ × e^β₁X × e^ε
```
**Quand l'utiliser ?**
- ✅ Croissance **exponentielle** (population, virus, intérêts composés)
- ✅ Décroissance exponentielle (demi-vie, dépréciation)
- ✅ Y **toujours positif**
**Hypothèses** :
- Y > 0 (valeurs strictement positives)
- Relation logarithmique entre log(Y) et X
**Exemple** :
```python
# Croissance d'une population bactérienne
Population = e^(4.5 + 0.1*Temps)
# T0 : Population = e^4.5 = 90
# T10 : Population = e^5.5 = 245
# T20 : Population = e^6.5 = 665
# Temps de doublement : ln(2)/0.1 = 6.93 unités
```
**Graphique typique** :
```
Population
│ •
│ •
│ •
│ •
│ •
└───────────→ Temps
(Courbe en J)
```
**⚠️ Limites** :
- Ne peut pas modéliser Y ≤ 0
- Très sensible aux outliers
- Difficile à interpréter directement
---
## Configuration du Modèle
### Étape 1 : Sélection de la Variable Cible (Y)
**Règles** :
- Pour **Linéaire/Polynomial/Exponentielle** : Y doit être **numérique continue**
- ✅ Prix, Taille, Poids, Ventes, Temps
- ❌ Catégorie, Couleur, Oui/Non
- Pour **Logistique** : Y doit être **catégorique ou binaire**
- ✅ Achat (0/1), Spam (vrai/faux), Classe (A/B/C)
- ❌ Prix continu, ID unique
**Dans l'application** :
1. Ouvrez le panneau "Configuration Avancée"
2. Sélectionnez votre cible dans le menu déroulant "Variable Cible (Y)"
3. Vérifiez les alertes de validation
**Exemple de validation** :
```
✅ Linéaire + Prix (numérique) → OK
❌ Linéaire + Catégorie (texte) → Erreur : "Ce modèle nécessite une cible numérique continue"
✅ Logistique + Catégorie (texte) → OK
✅ Logistique + Achat (0/1) → OK
```
---
### Étape 2 : Sélection des Prédicteurs (X)
**Automatique** : L'application recommande automatiquement les **5 meilleures variables** basées sur leur importance (Random Forest).
**Manuel** : Vous pouvez ajuster la sélection :
- ✅ Cochez : Inclure la variable
- ❌ Décochez : Exclure la variable
**Critères de sélection** :
1. **Corrélation avec Y** (via matrice de corrélation)
- Privilégiez |r| > 0.5
- Évitez |r| < 0.3 (trop faible)
2. **Multicolinéarité** entre X
- Évitez |r| 0.7 entre prédicteurs
- Choisissez la variable la plus corrélée avec Y
3. **Nombre de prédicteurs**
- Règle : n/10 (n = taille échantillon)
- Exemple : 100 observations max 10 prédicteurs
- Préférez **qualité > quantité**
**Exemple de workflow** :
```
1. Matrice de corrélation
├─ Prix vs Surface : r = 0.85 ✅
├─ Prix vs Chambres : r = 0.65 ✅
├─ Prix vs Jardin : r = 0.70 ✅
└─ Prix vs Garage : r = 0.45 ⚠️ (faible)
2. Multicolinéarité
├─ Surface vs Chambres : r = 0.72 ⚠️ (problématique)
└─ Surface vs Jardin : r = 0.50 ✅
3. Sélection finale
├─ Surface (meilleure corrélation avec Prix)
├─ Jardin (pas de multicolinéarité)
└─ Exclure Chambres (multicolinéarité avec Surface)
```
---
### Étape 3 : Options Avancées
#### Pour Polynomial
**Degré du polynôme** (2 à 5) :
- **Degré 2** : Courbe simple (U ou ∩)
- **Degré 3** : Courbe en S
- **Degré 4-5** : Formes complexes (⚠ risque de sur-apprentissage)
**Recommandation** :
```
1. Commencez avec le degré 2
2. Vérifiez le R² ajusté (doit augmenter)
3. Inspectez les résidus (pas de motif)
4. Si amélioration → essayez degré 3
5. Si dégradation → revenez au degré précédent
```
#### Pour Linéaire/Polynomial
**Inclure interactions** (x × x₂) :
- Crée des termes croisés entre variables
- Exemple : Surface × Chambres, Âge × Revenu
- Utile pour capturer les **effets combinés**
**Quand l'utiliser ?**
- Effet d'une variable dépend d'une autre
- Interaction théorique justifiée
- Échantillon trop petit (< 50 observations)
**Exemple** :
```python
# Sans interaction
Salaire = 2000 + 50*Expérience + 100*Formation
# Avec interaction
Salaire = 2000 + 50*Expérience + 100*Formation + 5*(Expérience×Formation)
# Interprétation : L'effet de l'expérience est plus fort
# avec un niveau de formation élevé
```
---
## Interprétation des Résultats
### 1. Métriques de Qualité du Modèle
#### R-Squared (R² ou Coefficient de Détermination)
**Définition** : Proportion de la variance de Y expliquée par le modèle.
```
R² = 1 - (Variance résiduelle / Variance totale)
```
**Interprétation** :
| R² | Qualité | Signification |
|----|---------|--------------|
| **0.90 - 1.00** | Excellent | Le modèle explique 90-100% de la variance |
| **0.70 - 0.90** | Bon | Le modèle explique 70-90% de la variance |
| **0.50 - 0.70** | Modéré | Le modèle explique 50-70% de la variance |
| **0.30 - 0.50** | Faible | Le modèle explique 30-50% de la variance |
| **< 0.30** | Très faible | Le modèle est peu utile |
**Exemple** :
```python
# R² = 0.85
# Signification : 85% de la variation du Prix est expliquée par
# les variables Surface, Chambres, Jardin
# Les 15% restants sont dus à des facteurs non observés
```
**Limites** :
- R² augmente **toujours** avec plus de variables
- Ne garantit pas la **causalité**
- Peut être **artificiellement élevé** avec outliers
---
#### Adjusted R-Squared (R² Ajusté)
**Définition** : R² corrigé pour pénaliser les variables inutiles.
```
R²_adj = 1 - (1 - R²) × (n - 1) / (n - p - 1)
Où :
- n = taille de l'échantillon
- p = nombre de prédicteurs
```
**Quand l'utiliser ?**
- Pour comparer des modèles avec **nombres de variables différents**
- Pour vérifier si une nouvelle variable **améliore vraiment** le modèle
**Règle** :
- Si R²_adj < R² **Trop de variables inutiles**
- Si R²_augmente quand on ajoute une variable **Variable utile**
**Exemple** :
```python
# Modèle 1 : R² = 0.85, R²_adj = 0.84, p = 5 variables
# Modèle 2 : R² = 0.86, R²_adj = 0.83, p = 10 variables
# Conclusion : Modèle 1 est meilleur (R²_adj plus élevé
# avec moins de variables)
```
---
#### AIC et BIC (Critères d'Information)
**Définition** : Mesurent la **qualité** du modèle avec **pénalité pour la complexité**.
```
AIC = 2k - 2ln(L)
BIC = k×ln(n) - 2ln(L)
Où :
- k = nombre de paramètres
- L = vraisemblance du modèle
- n = taille de l'échantillon
```
**Interprétation** :
- **Plus bas = meilleur**
- BIC pénalise plus fortement la complexité
- Utile pour comparer **modèles non emboîtés**
**Exemple** :
```python
# Modèle linéaire : AIC = 450, BIC = 460
# Modèle polynomial : AIC = 430, BIC = 455
# Conclusion : Polynomial est meilleur (AIC plus bas)
# Mais linéaire est plus simple (BIC proche)
```
---
### 2. Tableau des Coefficients
#### Structure
| Variable | Coefficient | P-Value | Fiabilité |
|----------|-------------|---------|-----------|
| const (Intercept) | 50000.00 | 0.001 | FIABLE |
| Surface | 2500.50 | 0.000 | FIABLE |
| Chambres | 12000.00 | 0.040 | FIABLE |
| Jardin | 8000.00 | 0.150 | INCERTAIN |
#### Coefficient
**Définition** : Changement moyen de Y quand X augmente de 1 unité.
**Interprétation** :
```python
# Y = 50000 + 2500*Surface + 12000*Chambres + 8000*Jardin
# Surface : coefficient = +2500
# → Si Surface augmente de 1 m², Prix augmente de 2500€
# Chambres : coefficient = +12000
# → Si Chambres augmente de 1, Prix augmente de 12000€
# Jardin : coefficient = +8000
# → Si Jardin passe de non à oui, Prix augmente de 8000€
```
**Signe du coefficient** :
- **Positif (+)** : X Y (relation positive)
- **Négatif (-)** : X Y (relation négative)
- **Proche de 0** : X a peu d'effet sur Y
---
#### P-Value
**Définition** : Probabilité que le coefficient soit au hasard.
**Règle** :
- **p < 0.05** : Coefficient **statistiquement significatif** (FIABLE)
- **p 0.05** : Coefficient **non significatif** (INCERTAIN)
**Exemple** :
```python
# Surface : p = 0.000 (< 0.05) → Fiable
# Jardin : p = 0.150 (≥ 0.05) → Incertain (pourrait être 0)
# Action : Retirer Jardin du modèle
```
** Attention** :
- Une p-value > 0.05 ne signifie pas "pas d'effet"
- Elle signifie "pas assez de preuves" (échantillon trop petit)
---
#### Écart-Type (Std Error)
**Définition** : Incertitude sur l'estimation du coefficient.
**Intervalle de confiance à 95%** :
```
IC 95% = Coefficient ± 1.96 × Std_Error
```
**Exemple** :
```python
# Surface : coefficient = 2500, std_error = 200
# IC 95% = [2500 - 1.96×200, 2500 + 1.96×200]
# = [2108, 2892]
# Interprétation : On est sûr à 95% que l'effet réel
# de la surface est entre 2108€ et 2892€ par m²
```
---
### 3. Diagnostic des Résidus
#### Résidus
**Définition** : Différence entre la valeur réelle et la prédite.
```
Résidu = Y_réel - Y_prédit
```
**Propriétés souhaitées** :
-**Moyenne = 0** : Pas de biais systématique
-**Distribution normale** : Pour les intervalles de confiance
-**Homoscédasticité** : Variance constante
-**Indépendance** : Pas d'autocorrélation
**Graphique Résidus vs Prédits** :
```
│ • •
│ • • •
│ • • • • (Bien : dispersion aléatoire)
│• • •
└────────────────→ Prédits
```
```
│ • •
│ • • •
│ • • (Mal : motif en U = relation non linéaire)
│ • •
└────────────────→ Prédits
```
---
## Équations du Modèle
L'application génère automatiquement l'équation dans **3 formats** :
### 1. LaTeX (Mathématique)
**Usage** : Rapports, publications scientifiques, présentations.
**Exemple** :
```latex
$$y = 1.234567 + 2.345678x_{0} + 3.456789x_{0}^{2}$$
```
**Rendu** (dans un document LaTeX) :
```
y = 1.234567 + 2.345678x₀ + 3.456789x₀²
```
---
### 2. Python (Code)
**Usage** : Implémentation directe dans un script Python.
**Exemple** :
```python
y = 1.234567 + 2.345678*x0 + 3.456789*x0**2
```
**Utilisation** :
```python
# Fonction de prédiction
def predict(x0):
return 1.234567 + 2.345678*x0 + 3.456789*x0**2
# Prédiction pour x0 = 5
resultat = predict(5)
print(resultat) # 107.123457
```
---
### 3. Excel (Formule)
**Usage** : Utilisation directe dans une cellule Excel/Google Sheets.
**Exemple** :
```
=1.234567 + 2.345678*A1 + 3.456789*A1^2
```
**Correspondance des colonnes** :
- `x0` → Cellule `A1`
- `x1` → Cellule `B1`
- `x2` → Cellule `C1`
- etc.
**Utilisation** :
```
A B C
1 [Surface] [x0=50] =1.234567 + 2.345678*B1 + 3.456789*B1^2
```
**Conversion automatique** :
- `x0^2``A1^2`
- `x0 x1``A1*B1`
- `x0^2 x1``(A1^2)*B1`
---
## Diagnostics Graphiques
### 1. Fit Plot (Régression Univariée)
**Objectif** : Vérifier visuellement l'ajustement du modèle aux données.
**Composants** :
- **Points gris** : Données réelles (X, Y_réel)
- **Ligne bleue** : Prédictions du modèle (X, Y_prédit)
**Interprétation** :
```
Bon ajustement :
Y
│ •
│ •● ← Ligne suit les points
│ • ●
│ • ●
│• ●
└─────────→ X
Mauvais ajustement :
Y
│ •
│ ••
│ • ● ← Ligne ne suit pas
│ • ●●
│• ●
└─────────→ X
```
---
### 2. Partial Regression Plot (Régression Multivariée)
**Objectif** : Visualiser l'**effet isolé** de chaque variable, contrôlant les autres.
**Principe** :
- Montre la relation entre **X et Y**, après avoir retiré l'effet des autres variables
- La **pente** de la tendance = **coefficient** du modèle
- Utile pour comprendre la **contribution unique** de chaque prédicteur
**Interprétation** :
```
Y_résiduels
+ │ •
│ • ● ← Pente positive = coefficient positif
0 │───●────●───
│ • •
- │•
└────────────→ X_résiduels
```
**Cas d'usage** :
- Identifier les variables avec **effet non linéaire**
- Détecter les **influences** (outliers sur une variable spécifique)
- Confirmer le **signe** des coefficients
---
### 3. Parity Plot (Validation)
**Objectif** : Vérifier la qualité des prédictions.
**Composants** :
- **Diagonale rouge** : Y = X (prédictions parfaites)
- **Points violets** : (Y_réel, Y_prédit)
**Interprétation** :
```
Y_prédit
│ • • (Bien : points près de la diagonale)
100├ • •
│ • •
50├• • •
└────────────→ Y_réel
50 100
Y_prédit
│ • (Mal : points loin de la diagonale)
100├ •
│ •
50├
│•
└────────────→ Y_réel
50 100
```
**Métriques dérivées** :
- **MAE** (Mean Absolute Error) : |Y_réel - Y_prédit|
- **RMSE** (Root Mean Squared Error) : √(Σ(Y_réel - Y_prédit)²/n)
- **MAPE** (Mean Absolute Percentage Error) : 100×|Y_réel - Y_prédit|/Y_réel
---
## Bonnes Pratiques
### Workflow Recommencé
```
1. Exploration des données
├─ Vérifier les types (numérique, catégorique)
├─ Identifier les outliers
└─ Statistiques descriptives
2. Matrice de corrélation
├─ Identifier les variables corrélées avec Y
├─ Repérer la multicolinéarité
└─ Sélectionner les prédicteurs candidats
3. Régression simple
├─ Commencer avec 1-2 prédicteurs
├─ Utiliser le modèle linéaire
└─ Vérifier les hypothèses (résidus)
4. Amélioration itérative
├─ Ajouter des variables (si pertinent)
├─ Tester polynomial (si relation courbe)
├─ Inclure interactions (si justifié)
└─ Comparer les modèles (R²_adj, AIC, BIC)
5. Validation finale
├─ Parity Plot (qualité des prédictions)
├─ Diagnostic des résidus (pas de motif)
├─ Vérifier les p-values (< 0.05)
└─ Interpréter les coefficients
6. Documentation
├─ Exporter l'équation
├─ Sauvegarder les graphiques
└─ Noter les décisions (variables exclues, outliers retirés)
```
---
### Erreurs Courantes
**Sur-apprentissage (Overfitting)**
```python
# Trop de variables par rapport à l'échantillon
n = 50 observations
p = 15 prédicteurs # Trop !
# Signes :
# - R² très élevé (> 0.95)
# - R²_adj beaucoup plus bas que R²
# - Coefficients irréalistes
# Solution : Réduire le nombre de variables
```
**Sous-apprentissage (Underfitting)**
```python
# Modèle trop simple pour la relation
# Relation courbe modélisée par linéaire
# Signes :
# - R² très faible (< 0.30)
# - Motif dans les résidus (forme en U)
# Solution : Essayer polynomial
```
**Multicolinéarité ignorée**
```python
# Inclure des variables fortement corrélées
# Surface_m² (r=1.0) vs Surface_pieds²
# Signes :
# - Coefficients contre-intuitifs
# - p-values élevées malgré un bon R²
# - Coefficients instables (changent beaucoup si on retire une variable)
# Solution : Matrice de corrélation AVANT
```
**Interprétation causale abusive**
```python
# Corrélation ≠ Causalité
# Y = 0.5*X ne signifie pas que X cause Y
# Exemple : Glace vs Requins
# Corrélation forte mais relation non causale
# (Facteur commun : Été)
# Solution : Expérience contrôlée ou avis d'expert
```
---
## Exemples Détaillés
### Exemple 1 : Prix Immobilier
**Données** (100 maisons) :
- Prix (€) : Cible
- Surface (m²)
- Chambres
- Jardin (0/1)
- Garage (0/1)
- Distance_Centre (km)
---
#### Étape 1 : 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** :
- **Meilleurs prédicteurs** : Surface (0.85), Distance (-0.75), Jardin (0.70)
- **Multicolinéarité** : Surface vs Chambres (0.72) ⚠️
- **Décision** : Garder Surface (meilleure corrélation), exclure Chambres
---
#### Étape 2 : Régression Linéaire
**Modèle** :
```python
Prix = β₀ + β₁×Surface + β₂×Distance + β₃×Jardin
```
**Résultats** :
```
R² = 0.87
R²_adj = 0.86
AIC = 1234
BIC = 1250
```
**Coefficients** :
```
Variable Coefficient P-Value Fiabilité
const 50000.00 0.001 ✅ FIABLE
Surface 2500.50 0.000 ✅ FIABLE
Distance -5000.00 0.002 ✅ FIABLE
Jardin 15000.00 0.030 ✅ FIABLE
```
---
#### Étape 3 : Interprétation
**Équation** :
```
Prix = 50000 + 2500×Surface - 5000×Distance + 15000×Jardin
```
**Signification** :
- **Prix de base** : 50000€ (pour Surface=0, Distance=0, Sans jardin)
- **Surface** : +2500€ par m²
- **Distance** : -5000€ par km du centre
- **Jardin** : +15000€ si jardin présent
**Exemple de prédiction** :
```python
# Maison : 80 m², 5 km du centre, avec jardin
Prix = 50000 + 2500×80 - 5000×5 + 15000×1
= 50000 + 200000 - 25000 + 15000
= 240000
```
---
### Exemple 2 : Probabilité d'Achat
**Données** (500 clients) :
- Achat (0/1) : Cible
- Âge
- Revenu (€/mois)
- Historique (nombre d'achats précédents)
---
#### Régression Logistique
**Résultats** :
```
Pseudo R² = 0.35
AIC = 890
BIC = 910
```
**Coefficients** :
```
Variable Coefficient P-Value Odds_Ratio Fiabilité
const -5.000 0.001 - ✅ FIABLE
Âge 0.050 0.003 1.05 ✅ FIABLE
Revenu 0.0002 0.000 1.10 ✅ FIABLE
Historique 0.800 0.000 2.23 ✅ FIABLE
```
---
#### Interprétation
**Équation de probabilité** :
```python
P(Achat) = 1 / (1 + e^-(-5 + 0.05×Âge + 0.0002×Revenu + 0.8×Historique))
```
**Odds Ratios** :
- **Âge** : OR = 1.05 → Chaque année augmente la probabilité de 5%
- **Revenu** : OR = 1.10 → Chaque 1000€ augmente la probabilité de 10%
- **Historique** : OR = 2.23 → Chaque achat précédent double la probabilité
**Exemple de prédiction** :
```python
# Client : 45 ans, 3000€/mois, 3 achats précédents
z = -5 + 0.05×45 + 0.0002×3000 + 0.8×3
= -5 + 2.25 + 0.6 + 2.4
= 0.25
P(Achat) = 1 / (1 + e^-0.25)
= 1 / (1 + 0.78)
= 0.56
# Interprétation : 56% de probabilité d'achat
```
---
### Exemple 3 : Budget Publicité Optimal
**Données** (24 mois) :
- Ventes (k€)
- Budget_TV (k€)
- Budget_Radio (k€)
---
#### Régression Polynomial (Degré 2)
**Modèle** :
```python
Ventes = β₀ + β₁×Budget_TV + β₂×Budget_TV²
```
**Résultats** :
```
R² = 0.92
R²_adj = 0.91
```
**Coefficients** :
```
Variable Coefficient P-Value Fiabilité
const 10.000 0.000 ✅ FIABLE
Budget_TV 5.000 0.000 ✅ FIABLE
Budget_TV² -0.050 0.001 ✅ FIABLE
```
---
#### Interprétation
**Équation** :
```
Ventes = 10 + 5×Budget_TV - 0.05×Budget_TV²
```
**Budget optimal** :
```python
# Dérivée = 0
d(Ventes)/d(Budget) = 5 - 0.1×Budget = 0
Budget* = 5 / 0.1 = 50 k
# Ventes maximales
Ventes_max = 10 + 5×50 - 0.05×50²
= 10 + 250 - 125
= 135 k
```
**Graphique** :
```
Ventes
│ •
135┤ • (Maximum)
│ • •
100┤ • •
│ • •
50┤ • •
│ • •
10┼────────────────→ Budget_TV
0 25 50 75
```
---
## 🎯 Conclusion
La régression est un outil puissant pour :
**Comprendre** les relations entre variables
**Prédire** des valeurs futures
**Quantifier** l'impact de chaque facteur
**Optimiser** les décisions (budget, prix, etc.)
**Points clés à retenir** :
- Toujours vérifier la **matrice de corrélation** avant
- Surveiller le **R² ajusté** (pas juste le R²)
- Respecter les **p-values** (< 0.05)
- Valider avec les **graphiques diagnostiques**
- Documenter vos **décisions**
---
**Version** : 1.0
**Projet** : Application d'Analyse de Données
🔗 **Voir aussi** : [Guide Corrélation](CORRELATION_GUIDE.md) | [Guide Outliers](OUTLIER_GUIDE.md)