Una guida completa alla regressione lineare in python


La regressione lineare è un metodo che possiamo utilizzare per comprendere la relazione tra una o più variabili predittive e una variabile di risposta.

Questo tutorial spiega come eseguire la regressione lineare in Python.

Esempio: regressione lineare in Python

Supponiamo di voler sapere se il numero di ore trascorse a studiare e il numero di esami pratici sostenuti influiscono sul voto che uno studente riceve in un determinato esame.

Per esplorare questa relazione, possiamo eseguire i seguenti passaggi in Python per eseguire una regressione lineare multipla.

Passaggio 1: inserisci i dati.

Innanzitutto, creeremo un DataFrame panda per contenere il nostro set di dati:

 import pandas as pd

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

#view data 
df

        hours exam score
0 1 1 76
1 2 3 78
2 2 3 85
3 4 5 88
4 2 2 72
5 1 2 69
6 5 1 94
7 4 1 94
8 2 0 88
9 4 3 92
10 4 4 90
11 3 3 75
12 6 2 96
13 5 4 90
14 3 4 82
15 4 4 85
16 6 5 99
17 2 1 83
18 1 0 62
19 2 1 76

Passaggio 2: eseguire la regressione lineare.

Successivamente, utilizzeremo la funzione OLS() della libreria statsmodels per eseguire una regressione ordinaria dei minimi quadrati, utilizzando “ore” ed “esami” come variabili predittive e “punteggio” come variabile di risposta:

 import statsmodels.api as sm

#define response variable
y = df['score']

#define predictor variables
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.734
Model: OLS Adj. R-squared: 0.703
Method: Least Squares F-statistic: 23.46
Date: Fri, 24 Jul 2020 Prob (F-statistic): 1.29e-05
Time: 13:20:31 Log-Likelihood: -60.354
No. Observations: 20 AIC: 126.7
Df Residuals: 17 BIC: 129.7
Df Model: 2                                         
Covariance Type: non-robust                                         
==================================================== ============================
                 coef std err t P>|t| [0.025 0.975]
-------------------------------------------------- ----------------------------
const 67.6735 2.816 24.033 0.000 61.733 73.614
hours 5.5557 0.899 6.179 0.000 3.659 7.453
exams -0.6017 0.914 -0.658 0.519 -2.531 1.327
==================================================== ============================
Omnibus: 0.341 Durbin-Watson: 1.506
Prob(Omnibus): 0.843 Jarque-Bera (JB): 0.196
Skew: -0.216 Prob(JB): 0.907
Kurtosis: 2,782 Cond. No. 10.8
==================================================== ============================

Passaggio 3: interpretare i risultati.

Ecco come interpretare i numeri più rilevanti nel risultato:

R quadrato: 0,734 . Questo è chiamato coefficiente di determinazione. Questa è la proporzione della varianza nella variabile di risposta che può essere spiegata dalle variabili predittive. In questo esempio, il 73,4% della variazione dei punteggi degli esami è spiegata dal numero di ore studiate e dal numero di esami preparatori sostenuti.

Statistica F: 23,46 . Questa è la statistica F complessiva del modello di regressione.

Prob (statistica F): 1.29e-05. Questo è il valore p associato alla statistica F complessiva. Questo ci dice se il modello di regressione nel suo insieme è statisticamente significativo o meno. In altre parole, ci dice se le due variabili predittive combinate hanno un’associazione statisticamente significativa con la variabile di risposta. In questo caso, il valore p è inferiore a 0,05, indicando che le variabili predittive “ore di studio” ed “esami di preparazione sostenuti” combinate hanno un’associazione statisticamente significativa con il punteggio dell’esame.

coef: i coefficienti di ciascuna variabile predittrice ci dicono la variazione media attesa nella variabile di risposta, presupponendo che l’altra variabile predittrice rimanga costante. Ad esempio, per ogni ora aggiuntiva trascorsa a studiare, il punteggio medio dell’esame dovrebbe aumentare di 5,56 , assumendo che gli esami pratici sostenuti rimangano costanti.

Ecco un altro modo di vedere la cosa: se lo studente A e lo studente B sostengono entrambi lo stesso numero di esami preparatori ma lo studente A studia un’ora in più, allora lo studente A dovrebbe ottenere un punteggio di 5,56 più alto rispetto a quello dello studente B.

Interpretiamo il coefficiente di intercetta nel senso che il punteggio atteso dell’esame per uno studente che non studia ore e non sostiene esami preparatori è 67,67 .

P>|t|. I valori p individuali ci dicono se ciascuna variabile predittrice è statisticamente significativa o meno. Possiamo vedere che le “ore” sono statisticamente significative (p = 0,00) mentre gli “esami”   (p = 0,52) non è statisticamente significativo con α = 0,05. Poiché il termine “esami” non è statisticamente significativo, potremmo decidere di rimuoverlo dal modello.

Equazione di regressione stimata: possiamo utilizzare i coefficienti dell’output del modello per creare la seguente equazione di regressione stimata:

punteggio esame = 67,67 + 5,56*(ore) – 0,60*(esami preparatori)

Possiamo utilizzare questa equazione di regressione stimata per calcolare il punteggio atteso dell’esame per uno studente, in base al numero di ore di studio e al numero di esami pratici sostenuti. Ad esempio, uno studente che studia per tre ore e sostiene un esame di preparazione dovrebbe ottenere un voto di 83,75 :

Tieni presente che poiché gli esami preparatori passati non erano statisticamente significativi (p = 0,52), potremmo decidere di rimuoverli in quanto non forniscono alcun miglioramento al modello complessivo. In questo caso, potremmo eseguire una semplice regressione lineare utilizzando solo le ore studiate come variabile predittiva.

Passaggio 4: verificare le ipotesi del modello.

Dopo aver eseguito una regressione lineare, potresti voler verificare diverse ipotesi per garantire che i risultati del modello di regressione siano affidabili. Queste ipotesi includono:

Presupposto n. 1: esiste una relazione lineare tra le variabili predittive e la variabile di risposta.

  • Verificare questa ipotesi generando un diagramma dei residui che mostri i valori adattati rispetto ai residui per un modello di regressione.

Ipotesi n.2: Indipendenza dei residui.

Ipotesi n.3: Omoschedasticità dei residui.

Ipotesi n. 4: Normalità dei residui.

Presupposto n. 5: verificare che non vi sia multicollinearità tra le variabili predittive.

  • Verificare questa ipotesi calcolando il valore VIF di ciascuna variabile predittrice.

Se questi presupposti sono soddisfatti, puoi essere certo che i risultati del tuo modello di regressione lineare multipla sono affidabili.

Puoi trovare il codice Python completo utilizzato in questo tutorial qui .

Aggiungi un commento

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