Un guide complet de la régression linéaire en Python
La régression linéaire est une méthode que nous pouvons utiliser pour comprendre la relation entre une ou plusieurs variables prédictives et une variable de réponse.
Ce tutoriel explique comment effectuer une régression linéaire en Python.
Exemple : régression linéaire en Python
Supposons que nous voulions savoir si le nombre d’heures passées à étudier et le nombre d’examens préparatoires passés affectent la note qu’un étudiant obtient à un examen donné.
Pour explorer cette relation, nous pouvons effectuer les étapes suivantes en Python pour effectuer une régression linéaire multiple.
Étape 1 : Saisissez les données.
Tout d’abord, nous allons créer un DataFrame pandas pour contenir notre ensemble de données :
import pandas as pd #create data df = pd.DataFrame({'hours': [1, 2, 2, 4, 2, 1, 5, 4, 2, 4, 4, 3, 6, 5, 3, 4, 6, 2, 1, 2], 'exams': [1, 3, 3, 5, 2, 2, 1, 1, 0, 3, 4, 3, 2, 4, 4, 4, 5, 1, 0, 1], 'score': [76, 78, 85, 88, 72, 69, 94, 94, 88, 92, 90, 75, 96, 90, 82, 85, 99, 83, 62, 76]}) #view data df hours exams score 0 1 1 76 1 2 3 78 2 2 3 85 3 4 5 88 4 2 2 72 5 1 2 69 6 5 1 94 7 4 1 94 8 2 0 88 9 4 3 92 10 4 4 90 11 3 3 75 12 6 2 96 13 5 4 90 14 3 4 82 15 4 4 85 16 6 5 99 17 2 1 83 18 1 0 62 19 2 1 76
Étape 2 : Effectuez une régression linéaire.
Ensuite, nous utiliserons la fonction OLS() de la bibliothèque statsmodels pour effectuer une régression des moindres carrés ordinaires, en utilisant « heures » et « examens » comme variables prédictives et « score » comme variable de réponse :
import statsmodels.api as sm #define response variable y = df['score'] #define predictor variables x = df[['hours', 'exams']] #add constant to predictor variables x = sm.add_constant(x) #fit linear regression model model = sm.OLS(y, x).fit() #view model summary print(model.summary()) OLS Regression Results ============================================================================== Dep. Variable: score R-squared: 0.734 Model: OLS Adj. R-squared: 0.703 Method: Least Squares F-statistic: 23.46 Date: Fri, 24 Jul 2020 Prob (F-statistic): 1.29e-05 Time: 13:20:31 Log-Likelihood: -60.354 No. Observations: 20 AIC: 126.7 Df Residuals: 17 BIC: 129.7 Df Model: 2 Covariance Type: nonrobust ============================================================================== coef std err t P>|t| [0.025 0.975] ------------------------------------------------------------------------------ const 67.6735 2.816 24.033 0.000 61.733 73.614 hours 5.5557 0.899 6.179 0.000 3.659 7.453 exams -0.6017 0.914 -0.658 0.519 -2.531 1.327 ============================================================================== Omnibus: 0.341 Durbin-Watson: 1.506 Prob(Omnibus): 0.843 Jarque-Bera (JB): 0.196 Skew: -0.216 Prob(JB): 0.907 Kurtosis: 2.782 Cond. No. 10.8 ==============================================================================
Étape 3 : Interprétez les résultats.
Voici comment interpréter les nombres les plus pertinents dans le résultat :
R au carré : 0,734 . C’est ce qu’on appelle le coefficient de détermination. Il s’agit de la proportion de la variance de la variable de réponse qui peut être expliquée par les variables prédictives. Dans cet exemple, 73,4 % de la variation des résultats aux examens s’explique par le nombre d’heures étudiées et le nombre d’examens préparatoires passés.
Statistique F : 23,46 . Il s’agit de la statistique F globale du modèle de régression.
Prob (statistique F) : 1,29e-05. Il s’agit de la valeur p associée à la statistique F globale. Cela nous indique si le modèle de régression dans son ensemble est statistiquement significatif ou non. En d’autres termes, cela nous indique si les deux variables prédictives combinées ont une association statistiquement significative avec la variable de réponse. Dans ce cas, la valeur p est inférieure à 0,05, ce qui indique que les variables prédictives « heures d’études » et « examens préparatoires passés » combinées ont une association statistiquement significative avec le score à l’examen.
coef : les coefficients de chaque variable prédictive nous indiquent le changement moyen attendu de la variable de réponse, en supposant que l’autre variable prédictive reste constante. Par exemple, pour chaque heure supplémentaire consacrée à étudier, la note moyenne à l’examen devrait augmenter de 5,56 , en supposant que les examens préparatoires passés restent constants.
Voici une autre façon de voir les choses : si l’étudiant A et l’étudiant B passent tous deux le même nombre d’examens préparatoires mais que l’étudiant A étudie une heure de plus, alors l’étudiant A devrait obtenir un score supérieur de 5,56 points à celui de l’étudiant B.
Nous interprétons le coefficient de l’interception comme signifiant que la note attendue à l’examen pour un étudiant qui n’étudie aucune heure et ne passe aucun examen préparatoire est de 67,67 .
P>|t|. Les valeurs p individuelles nous indiquent si chaque variable prédictive est statistiquement significative ou non. Nous pouvons voir que les « heures » sont statistiquement significatives (p = 0,00) alors que les « examens » (p = 0,52) n’est pas statistiquement significatif à α = 0,05. Étant donné que le terme « examens » n’est pas statistiquement significatif, nous pourrions finir par décider de le supprimer du modèle.
Équation de régression estimée : nous pouvons utiliser les coefficients de la sortie du modèle pour créer l’équation de régression estimée suivante :
score à l’examen = 67,67 + 5,56*(heures) – 0,60*(examens préparatoires)
Nous pouvons utiliser cette équation de régression estimée pour calculer la note attendue à l’examen pour un étudiant, en fonction du nombre d’heures d’études et du nombre d’examens préparatoires qu’il passe. Par exemple, un étudiant qui étudie pendant trois heures et passe un examen préparatoire devrait obtenir une note de 83,75 :
Gardez à l’esprit que, comme les examens préparatoires passés n’étaient pas statistiquement significatifs (p = 0,52), nous pouvons décider de les supprimer car ils n’apportent aucune amélioration au modèle global. Dans ce cas, nous pourrions effectuer une régression linéaire simple en utilisant uniquement les heures étudiées comme variable prédictive.
Étape 4 : Vérifiez les hypothèses du modèle.
Une fois que vous avez effectué une régression linéaire, vous souhaiterez peut-être vérifier plusieurs hypothèses pour vous assurer que les résultats du modèle de régression sont fiables. Ces hypothèses comprennent :
Hypothèse n°1 : Il existe une relation linéaire entre les variables prédictives et la variable de réponse.
- Vérifiez cette hypothèse en générant un tracé résiduel qui affiche les valeurs ajustées par rapport aux valeurs résiduelles pour un modèle de régression.
Hypothèse n°2 : Indépendance des résidus.
- Vérifiez cette hypothèse en effectuant un test de Durbin-Watson .
Hypothèse n°3 : Homoscédasticité des résidus.
- Vérifiez cette hypothèse en effectuant un test de Breusch-Pagan .
Hypothèse n°4 : Normalité des résidus.
- Vérifiez visuellement cette hypothèse à l’aide d’un tracé QQ .
- Vérifiez cette hypothèse avec des tests formels comme untest de Jarque-Bera ou un test d’Anderson-Darling .
Hypothèse n°5 : Vérifiez qu’il n’existe pas de multicolinéarité parmi les variables prédictives.
- Vérifiez cette hypothèse en calculant la valeur VIF de chaque variable prédictive.
Si ces hypothèses sont remplies, vous pouvez être sûr que les résultats de votre modèle de régression linéaire multiple sont fiables.
Vous pouvez trouver le code Python complet utilisé dans ce tutoriel ici .