Comment effectuer une régression logistique à l’aide de modèles statistiques
Le module statsmodels de Python offre une variété de fonctions et de classes qui vous permettent d’adapter divers modèles statistiques.
L’exemple étape par étape suivant montre comment effectuer une régression logistique à l’aide des fonctions de statsmodels.
Étape 1 : Créer les données
Tout d’abord, créons un DataFrame pandas qui contient trois variables :
- Heures étudiées (valeur entière)
- Méthode d’étude (méthode A ou B)
- Résultat de l’examen (réussite ou échec)
Nous ajusterons un modèle de régression logistique en utilisant les heures étudiées et la méthode d’étude pour prédire si un étudiant réussit ou non un examen donné.
Le code suivant montre comment créer le DataFrame pandas :
import pandas as pd #create DataFrame df = pd.DataFrame({'result': [0, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 1, 0, 1, 1, 1, 1, 1], 'hours': [1, 2, 2, 2, 3, 2, 5, 4, 3, 6, 5, 8, 8, 7, 6, 7, 5, 4, 8, 9], 'method': ['A', 'A', 'A', 'B', 'B', 'B', 'B', 'B', 'B', 'A', 'B', 'A', 'B', 'B', 'A', 'A', 'B', 'A', 'B', 'A']}) #view first five rows of DataFrame df.head() result hours method 0 0 1 A 1 1 2 A 2 0 2 A 3 0 2 B 4 0 3 B
Étape 2 : Ajuster le modèle de régression logistique
Ensuite, nous ajusterons le modèle de régression logistique à l’aide de la fonction logit() :
import statsmodels.formula.api as smf
#fit logistic regression model
model = smf.logit('result ~ hours + method', data=df).fit()
#view model summary
print(model.summary())
Optimization terminated successfully.
Current function value: 0.557786
Iterations 5
Logit Regression Results
==============================================================================
Dep. Variable: result No. Observations: 20
Model: Logit Df Residuals: 17
Method: MLE Df Model: 2
Date: Mon, 22 Aug 2022 Pseudo R-squ.: 0.1894
Time: 09:53:35 Log-Likelihood: -11.156
converged: True LL-Null: -13.763
Covariance Type: nonrobust LLR p-value: 0.07375
===============================================================================
coef std err z P>|z| [0.025 0.975]
-------------------------------------------------------------------------------
Intercept -2.1569 1.416 -1.523 0.128 -4.932 0.618
method[T.B] 0.0875 1.051 0.083 0.934 -1.973 2.148
hours 0.4909 0.245 2.002 0.045 0.010 0.972
===============================================================================
Les valeurs dans la colonne coef de la sortie nous indiquent la variation moyenne du log des chances de réussite à l’examen.
Par exemple:
- L’utilisation de la méthode d’étude B est associée à une augmentation moyenne de 0,0875 du log des chances de réussite à l’examen par rapport à l’utilisation de la méthode d’étude A.
- Chaque heure supplémentaire étudiée est associée à une augmentation moyenne de 0,4909 du log des chances de réussite à l’examen.
Les valeurs dans P>|z| La colonne représente les valeurs p pour chaque coefficient.
Par exemple:
- La méthode d’étude a une valeur p de 0,934 . Puisque cette valeur n’est pas inférieure à 0,05, cela signifie qu’il n’y a pas de relation statistiquement significative entre les heures étudiées et la réussite ou non de l’étudiant à l’examen.
- Les heures étudiées ont une valeur p de 0,045 . Puisque cette valeur est inférieure à 0,05, cela signifie qu’il existe une relation statistiquement significative entre les heures étudiées et la réussite ou non de l’étudiant à l’examen.
Étape 3 : évaluer les performances du modèle
Pour évaluer la qualité du modèle de régression logistique, nous pouvons examiner deux métriques dans le résultat :
1. Pseudo R-carré
Cette valeur peut être considérée comme un substitut à la valeur R au carré pour un modèle de régression linéaire.
Il est calculé comme le rapport de la fonction log-vraisemblance maximisée du modèle nul au modèle complet.
Cette valeur peut aller de 0 à 1, des valeurs plus élevées indiquant un meilleur ajustement du modèle.
Dans cet exemple, la valeur du pseudo R-carré est de 0,1894 , ce qui est assez faible. Cela nous indique que les variables prédictives du modèle ne font pas un très bon travail pour prédire la valeur de la variable de réponse.
2. Valeur p LLR
Cette valeur peut être considérée comme un substitut à la valeur p pour la valeur F globale d’un modèle de régression linéaire.
Si cette valeur est inférieure à un certain seuil (par exemple α = 0,05), nous pouvons alors conclure que le modèle dans son ensemble est « utile » et permet de mieux prédire les valeurs de la variable de réponse par rapport à un modèle sans variables prédictives.
Dans cet exemple, la valeur p du LLR est de 0,07375 . Selon le niveau de signification que nous choisissons (par exemple 0,01, 0,05, 0,1), nous pouvons ou non conclure que le modèle dans son ensemble est utile.
Ressources additionnelles
Les didacticiels suivants expliquent comment effectuer d’autres tâches courantes en Python :
Comment effectuer une régression linéaire en Python
Comment effectuer une régression logarithmique en Python
Comment effectuer une régression quantile en Python