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

Aggiungi un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *