Come estrarre i valori p dalla regressione lineare nei modelli statistici


È possibile utilizzare i seguenti metodi per estrarre valori p per i coefficienti in un modello di regressione lineare utilizzando il modulo statsmodels in Python:

 #extract p-values for all predictor variables
for x in range(0, 3):
    print ( model.pvalues [x])

#extract p-value for specific predictor variable name
model. pvalues . loc [' predictor1 ']

#extract p-value for specific predictor variable position
model. pvalues [0]

Gli esempi seguenti mostrano come utilizzare ciascun metodo nella pratica.

Esempio: estrazione dei valori P dalla regressione lineare nei modelli statistici

Supponiamo di avere il seguente DataFrame panda che contiene informazioni sulle ore studiate, sugli esami preparatori sostenuti e sul voto finale ricevuto dagli studenti di una determinata classe:

 import pandas as pd

#createDataFrame
df = pd. DataFrame ({' hours ': [1, 2, 2, 4, 2, 1, 5, 4, 2, 4, 4, 3, 6],
                   ' exams ': [1, 3, 3, 5, 2, 2, 1, 1, 0, 3, 4, 3, 2],
                   ' score ': [76, 78, 85, 88, 72, 69, 94, 94, 88, 92, 90, 75, 96]})

#view head of DataFrame
df. head ()

	hours exam score
0 1 1 76
1 2 3 78
2 2 3 85
3 4 5 88
4 2 2 72

Possiamo utilizzare la funzione OLS() del modulo statsmodels per adattare un modello di regressione lineare multipla , utilizzando “ore” ed “esami” come variabili predittive e “punteggio” come variabile di risposta :

 import statsmodels. api as sm

#define predictor and response variables
y = df['score']
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                            
==================================================== ============================
Dept. Variable: R-squared score: 0.718
Model: OLS Adj. R-squared: 0.661
Method: Least Squares F-statistic: 12.70
Date: Fri, 05 Aug 2022 Prob (F-statistic): 0.00180
Time: 09:24:38 Log-Likelihood: -38.618
No. Observations: 13 AIC: 83.24
Df Residuals: 10 BIC: 84.93
Df Model: 2                                         
Covariance Type: non-robust                                         
==================================================== ============================
                 coef std err t P>|t| [0.025 0.975]
-------------------------------------------------- ----------------------------
const 71.4048 4.001 17.847 0.000 62.490 80.319
hours 5.1275 1.018 5.038 0.001 2.860 7.395
exams -1.2121 1.147 -1.057 0.315 -3.768 1.344
==================================================== ============================
Omnibus: 1,103 Durbin-Watson: 1,248
Prob(Omnibus): 0.576 Jarque-Bera (JB): 0.803
Skew: -0.289 Prob(JB): 0.669
Kurtosis: 1.928 Cond. No. 11.7
==================================================== ============================

Per impostazione predefinita, la funzione summary() visualizza i valori p di ciascuna variabile predittore fino a tre cifre decimali:

  • Valore P per intercetta: 0,000
  • Valore P per ore: 0,001
  • Valore P per gli esami: 0,315

Tuttavia, possiamo estrarre i valori p completi per ciascuna variabile predittrice dal modello utilizzando la seguente sintassi:

 #extract p-values for all predictor variables
for x in range(0, 3):
    print ( model.pvalues [x])

6.514115622692573e-09
0.0005077783375870773
0.3154807854805659

Questo ci permette di vedere i valori p con più cifre decimali:

  • Valore P per intercetta: 0,00000000651411562269257
  • Valore P per ore: 0,0005077783375870773
  • Valore P per gli esami: 0,3154807854805659

Nota : abbiamo utilizzato 3 nella nostra funzione range() perché c’erano tre coefficienti totali nel nostro modello di regressione.

Possiamo anche utilizzare la seguente sintassi per estrarre specificamente il valore p per la variabile “ore”:

 #extract p-value for 'hours' only
model. pvalues . loc [' hours ']

0.0005077783375870773

Oppure potremmo usare la seguente sintassi per estrarre il valore p del coefficiente di una variabile in una posizione specifica del modello di regressione:

 #extract p-value for coefficient in index position 0
model. pvalues [0]

6.514115622692573e-09

Risorse addizionali

I seguenti tutorial spiegano come eseguire altre attività comuni in Python:

Come eseguire la regressione logistica in Python
Come calcolare l’AIC dei modelli di regressione in Python
Come calcolare l’R quadrato corretto in Python

Aggiungi un commento

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