1. Présentation des Résultats de la Régression Multiple

Dans cette section, les rĂ©sultats obtenus par la rĂ©gression multiple sont prĂ©sentĂ©s de maniĂšre factuelle, sans interprĂ©tation. L’objectif est de fournir les indicateurs essentiels permettant d’évaluer la qualitĂ© du modĂšle et la pertinence des relations entre les variables.

La rĂ©gression multiple est une mĂ©thode statistique permettant d’analyser l’influence de plusieurs variables indĂ©pendantes sur une variable dĂ©pendante. Elle fournit des rĂ©sultats sous forme de coefficients et d’indicateurs statistiques qui permettent d’évaluer la robustesse du modĂšle.

2. Les Principaux Indicateurs à Présenter

2.1. Le Coefficient de DĂ©termination (RÂČ et RÂČ AjustĂ©)

Le coefficient de dĂ©termination (RÂČ) mesure la proportion de variance expliquĂ©e par le modĂšle de rĂ©gression. Il indique dans quelle mesure les variables indĂ©pendantes permettent de prĂ©dire la variable dĂ©pendante.

  • Une valeur de RÂČ proche de 1 signifie que le modĂšle explique une grande part de la variance observĂ©e.
  • Une valeur faible suggĂšre que d’autres facteurs non inclus dans le modĂšle influencent la variable dĂ©pendante.

Le RÂČ ajustĂ© est une version corrigĂ©e du RÂČ qui prend en compte le nombre de variables explicatives du modĂšle. Il est souvent prĂ©fĂ©rĂ© au RÂČ brut car il pĂ©nalise l’ajout de variables non pertinentes et donne une estimation plus fiable de la qualitĂ© du modĂšle.

2.2. Les Coefficients de RĂ©gression

Les coefficients de rĂ©gression indiquent l’impact de chaque variable indĂ©pendante sur la variable dĂ©pendante. Chaque coefficient est accompagnĂ© de sa signification statistique (p-value) qui permet de dĂ©terminer s’il est significatif ou non.

  • Un coefficient positif signifie que la variable indĂ©pendante a un effet positif sur la variable dĂ©pendante.
  • Un coefficient nĂ©gatif indique un effet inverse.
  • Une p-value infĂ©rieure Ă  0,05 suggĂšre que la relation est statistiquement significative.

La prĂ©sentation des coefficients sous forme de tableau permet d’identifier quelles variables ont un impact rĂ©el et lesquelles n’en ont pas.

2.3. Le Facteur d’Inflation de la Variance (VIF)

Le Variance Inflation Factor (VIF) est un indicateur permettant de dĂ©tecter la multicolinĂ©aritĂ© entre les variables indĂ©pendantes. Une forte corrĂ©lation entre ces variables peut fausser les rĂ©sultats de la rĂ©gression et compromettre l’interprĂ©tation des coefficients.

  • Un VIF infĂ©rieur Ă  5 est gĂ©nĂ©ralement acceptable.
  • Un VIF supĂ©rieur Ă  10 indique une forte multicolinĂ©aritĂ©, ce qui peut nĂ©cessiter une rĂ©vision du modĂšle.

2.4. La SignificativitĂ© Globale du ModĂšle (Test de Fisher – F-statistic)

Le test de Fisher (F-statistic) permet d’évaluer si l’ensemble des variables indĂ©pendantes a un effet significatif sur la variable dĂ©pendante.

  • Une p-value associĂ©e au test F infĂ©rieure Ă  0,05 indique que le modĂšle global est statistiquement significatif.
  • Si la p-value est supĂ©rieure Ă  ce seuil, cela signifie que les variables indĂ©pendantes n’expliquent pas significativement la variation de la variable dĂ©pendante.

3. Présentation Synthétique des Résultats

Un tableau rĂ©capitulatif des rĂ©sultats doit ĂȘtre intĂ©grĂ© dans le travail pour faciliter la comprĂ©hension.

La prĂ©sentation de ces rĂ©sultats permet d’établir une base solide pour l’interprĂ©tation et la discussion qui suivra dans la section suivante.

  • Une p-value associĂ©e au test F infĂ©rieure Ă  0,05 indique que le modĂšle global est statistiquement significatif.
  • Si la p-value est supĂ©rieure Ă  ce seuil, cela signifie que les variables indĂ©pendantes n’expliquent pas significativement la variation de la variable dĂ©pendante.

CODE PYTHON POUR RÉALISER LA RÉGRESSION MULTIPLE

Copiez le code ci-dessous et collez-le sous Google Colab :

import pandas as pd
import numpy as np
import statsmodels.api as sm
import matplotlib.pyplot as plt
import seaborn as sns
from sklearn.preprocessing import StandardScaler
from statsmodels.stats.outliers_influence import variance_inflation_factor

# Sélectionner les variables explicatives (X) et la variable dépendante (y)
y_var = input("Entrez le nom de la variable dépendante : ").strip()
X_vars = input("Entrez les noms des variables explicatives (séparés par une virgule) : ").strip().split(",")

# VĂ©rification des variables
if y_var not in data_original.columns or any(var not in data_original.columns for var in X_vars):
    raise ValueError("Erreur : Assurez-vous que toutes les variables existent dans le DataFrame.")

# DĂ©finir X et y
X = data_original[X_vars]  # Suppression de l'ajout de la constante
y = data_original[y_var]

# VĂ©rifier si X contient au moins une variable
if X.shape[1] == 0:
    raise ValueError("Erreur : Aucune variable explicative valide sélectionnée.")

# Ajustement du modĂšle OLS
model = sm.OLS(y, X).fit()
print(model.summary())

# Vérification de la normalité des résidus avec un QQ-plot
residuals = model.resid
fig, ax = plt.subplots(figsize=(6, 6))
sm.qqplot(residuals, line="s", ax=ax)
ax.set_title("QQ-Plot des résidus")
plt.show()

# Vérification de l'hétéroscédasticité avec un scatter plot
plt.figure(figsize=(8, 5))
sns.scatterplot(x=model.fittedvalues, y=residuals)
plt.axhline(0, linestyle="dashed", color="red")
plt.xlabel("Valeurs ajustées")
plt.ylabel("RĂ©sidus")
plt.title("Graphique des résidus")
plt.show()

# Calcul du VIF pour détecter la multicolinéarité
if X.shape[1] > 1:  # VĂ©rifier que le VIF peut ĂȘtre calculĂ©
    vif_data = pd.DataFrame({
        "Variable": X.columns,
        "VIF": [variance_inflation_factor(X.values, i) for i in range(X.shape[1])]
    })
    print("\n📊 Facteur d'inflation de la variance (VIF) :")
    display(vif_data)

    # Interprétation du VIF
    high_vif = vif_data[vif_data["VIF"] > 10]
    if not high_vif.empty:
        print("\n⚠ Attention : Certaines variables prĂ©sentent une forte multicolinĂ©aritĂ© (VIF > 10). Cela peut affecter la fiabilitĂ© des coefficients estimĂ©s.")
        print(high_vif)
    else:
        print("✅ Aucune multicolinĂ©aritĂ© prĂ©occupante dĂ©tectĂ©e (VIF < 10).")
else:
    print("\n⚠ Pas assez de variables pour calculer le VIF.")

# Test de normalité des résidus (Jarque-Bera)
jb_stat, jb_pvalue, skew, kurtosis = sm.stats.jarque_bera(residuals)
print("\n📊 RĂ©sultats du Test de normalitĂ© de Jarque-Bera :")
print(f"  - Statistique JB : {jb_stat:.3f}")
print(f"  - p-value : {jb_pvalue:.5f}")
print(f"  - Asymétrie (Skewness) : {skew:.3f}")
print(f"  - Aplatissement (Kurtosis) : {kurtosis:.3f}")

# Interprétation automatique
test_result = "✅ Les rĂ©sidus suivent une loi normale (p > 0.05)." if jb_pvalue > 0.05 else "❌ Les rĂ©sidus ne suivent PAS une loi normale (p ≀ 0.05)."
print(f"\n{test_result}")

if jb_pvalue <= 0.05:
    if abs(skew) > 1:
        print("🔍 ProblĂšme dĂ©tectĂ© : **AsymĂ©trie Ă©levĂ©e** (skewness).")
        print("✅ Solution : Essayez une transformation logarithmique ou une normalisation.")
    if kurtosis < 2 or kurtosis > 4:
        print("🔍 ProblĂšme dĂ©tectĂ© : **Aplatissement anormal (kurtosis).**")
        print("✅ Solution : VĂ©rifiez s'il y a des valeurs aberrantes (outliers).")

    print("\n📌 Recommandations supplĂ©mentaires :")
    print("  - Vérifiez la présence de valeurs aberrantes avec un boxplot.")
    print("  - Testez une transformation (log, carré, racine) sur la variable dépendante.")
    print("  - Ajoutez Ă©ventuellement d'autres variables explicatives.")

# Conclusion générale
print("\n📌 **Conclusion** :")
print("  - L'ajustement du modĂšle est Ă©valuĂ© avec le RÂČ et le RÂČ ajustĂ©.")
print("  - Un RÂČ Ă©levĂ© (>0.7) indique une bonne capacitĂ© explicative du modĂšle, tandis qu'un RÂČ faible suggĂšre un ajustement limitĂ©.")
print("  - Les coefficients et leurs p-values indiquent la significativité des variables explicatives : une p-value < 0.05 signifie que la variable a un impact significatif.")
print("  - Le VIF aide à détecter la multicolinéarité, qui peut biaiser les estimations.")
print("  - Le test de Jarque-Bera vérifie la normalité des résidus, influençant la validité des tests de significativité.")