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é.")