Hoe u logistieke regressie kunt uitvoeren met behulp van statistische modellen
De statsmodels- module van Python biedt een verscheidenheid aan functies en klassen waarmee u verschillende statistische modellen kunt aanpassen.
In het volgende stapsgewijze voorbeeld ziet u hoe u logistieke regressie kunt uitvoeren met behulp van statsmodels-functies.
Stap 1: Creëer de gegevens
Laten we eerst een Panda DataFrame maken dat drie variabelen bevat:
- Gestudeerde uren (gehele waarde)
- Studiemethode (methode A of B)
- Examenresultaat (geslaagd of niet geslaagd)
We passen een logistisch regressiemodel toe, waarbij we gebruik maken van het aantal gestudeerde uren en de studiemethode, om te voorspellen of een student wel of niet slaagt voor een bepaald examen.
De volgende code laat zien hoe u het Panda DataFrame maakt:
import pandas as pd #createDataFrame 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
Stap 2: Pas het logistische regressiemodel aan
Vervolgens passen we het logistische regressiemodel aan met behulp van de logit() functie:
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 completed successfully.
Current function value: 0.557786
Iterations 5
Logit Regression Results
==================================================== ============================
Dept. 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[TB] 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
==================================================== ============================
De waarden in de coef- kolom van de uitvoer vertellen ons de gemiddelde verandering in de logkansen om voor het examen te slagen.
Bijvoorbeeld:
- Het gebruik van studiemethode B gaat gepaard met een gemiddelde toename van 0,0875 in de log odds om te slagen voor het examen vergeleken met het gebruik van studiemethode A.
- Elk extra bestudeerd uur gaat gepaard met een gemiddelde stijging van 0,4909 in de logkans om voor het examen te slagen.
De waarden in P>|z| De kolom vertegenwoordigt de p-waarden voor elke coëfficiënt.
Bijvoorbeeld:
- De onderzoeksmethode heeft een p-waarde van 0,934 . Omdat deze waarde niet kleiner is dan 0,05, betekent dit dat er geen statistisch significante relatie bestaat tussen de gestudeerde uren en het wel of niet slagen voor het examen.
- De onderzochte uren hebben een p-waarde van 0,045 . Omdat deze waarde kleiner is dan 0,05 betekent dit dat er een statistisch significante relatie bestaat tussen het aantal gestudeerde uren en het wel of niet slagen voor het examen.
Stap 3: Evalueer de prestaties van het model
Om de kwaliteit van het logistische regressiemodel te beoordelen, kunnen we naar twee statistieken in de uitvoer kijken:
1. Bijnaam R-kwadraat
Deze waarde kan worden beschouwd als een vervanging voor de R-kwadraatwaarde voor een lineair regressiemodel.
Het wordt berekend als de verhouding van de gemaximaliseerde log-waarschijnlijkheidsfunctie van het nulmodel tot het volledige model.
Deze waarde kan variëren van 0 tot 1, waarbij hogere waarden wijzen op een betere pasvorm van het model.
In dit voorbeeld is de pseudo-R-kwadraatwaarde 0,1894 , wat vrij laag is. Dit vertelt ons dat de voorspellende variabelen van het model de waarde van de responsvariabele niet erg goed voorspellen.
2. LLR p-waarde
Deze waarde kan worden beschouwd als een vervanging van de p-waarde voor de totale F-waarde van een lineair regressiemodel.
Als deze waarde onder een bepaalde drempel ligt (bijvoorbeeld α = 0,05), kunnen we dan concluderen dat het model als geheel ‘bruikbaar’ is en de waarden van de responsvariabele beter kan voorspellen vergeleken met een model zonder voorspellende variabelen.
In dit voorbeeld is de p-waarde van de LLR 0,07375 . Afhankelijk van het significantieniveau dat we kiezen (bijvoorbeeld 0,01, 0,05, 0,1), kunnen we wel of niet concluderen dat het model als geheel bruikbaar is.
Aanvullende bronnen
In de volgende tutorials wordt uitgelegd hoe u andere veelvoorkomende taken in Python kunt uitvoeren:
Hoe lineaire regressie uit te voeren in Python
Hoe logaritmische regressie uit te voeren in Python
Hoe kwantielregressie uit te voeren in Python