Come eseguire la regressione logistica utilizzando modelli statistici
Il modulo statsmodels di Python offre una varietà di funzioni e classi che consentono di adattare vari modelli statistici.
Il seguente esempio passo passo mostra come eseguire la regressione logistica utilizzando le funzioni statsmodels.
Passaggio 1: creare i dati
Innanzitutto, creiamo un DataFrame panda che contenga tre variabili:
- Ore studiate (valore intero)
- Metodo di studio (metodo A o B)
- Risultato dell’esame (superato o fallito)
Adatteremo un modello di regressione logistica utilizzando le ore studiate e il metodo di studio per prevedere se uno studente supera o meno un determinato esame.
Il codice seguente mostra come creare il DataFrame panda:
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
Passaggio 2: adattare il modello di regressione logistica
Successivamente, adatteremo il modello di regressione logistica utilizzando la funzione 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 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
==================================================== ============================
I valori nella colonna coef dell’output ci dicono la variazione media delle probabilità log di superare l’esame.
Per esempio:
- L’utilizzo del metodo di studio B è associato ad un aumento medio di 0,0875 nelle probabilità logaritmiche di superare l’esame rispetto all’utilizzo del metodo di studio A.
- Ogni ora aggiuntiva di studio è associata a un aumento medio di 0,4909 nelle probabilità di superamento dell’esame.
I valori in P>|z| La colonna rappresenta i valori p per ciascun coefficiente.
Per esempio:
- Il metodo di studio ha un valore p di 0,934 . Poiché questo valore non è inferiore a 0,05, significa che non esiste una relazione statisticamente significativa tra le ore studiate e il superamento o meno dell’esame da parte dello studente.
- Le ore studiate hanno un valore p pari a 0,045 . Poiché questo valore è inferiore a 0,05 significa che esiste una relazione statisticamente significativa tra le ore studiate e il superamento o meno dell’esame da parte dello studente.
Passaggio 3: valutare le prestazioni del modello
Per valutare la qualità del modello di regressione logistica, possiamo esaminare due parametri nell’output:
1. Soprannome R-quadrato
Questo valore può essere considerato un sostituto del valore R quadrato per un modello di regressione lineare.
Viene calcolato come il rapporto tra la funzione di verosimiglianza massimizzata dal modello nullo al modello completo.
Questo valore può variare da 0 a 1, con valori più alti che indicano un migliore adattamento del modello.
In questo esempio, il valore pseudo R quadrato è 0,1894 , che è piuttosto basso. Questo ci dice che le variabili predittive del modello non stanno facendo un ottimo lavoro nel prevedere il valore della variabile di risposta.
2. Valore p LLR
Questo valore può essere considerato un sostituto del valore p per il valore F complessivo di un modello di regressione lineare.
Se questo valore è inferiore ad una certa soglia (ad esempio α = 0,05), possiamo allora concludere che il modello nel suo complesso è “utile” e può predire meglio i valori della variabile di risposta rispetto ad un modello privo di variabili predittive.
In questo esempio, il valore p dell’LLR è 0,07375 . A seconda del livello di significatività scelto (ad esempio 0,01, 0,05, 0,1), possiamo o meno concludere che il modello nel suo complesso sia utile.
Risorse addizionali
I seguenti tutorial spiegano come eseguire altre attività comuni in Python:
Come eseguire la regressione lineare in Python
Come eseguire la regressione logaritmica in Python
Come eseguire la regressione quantile in Python