Come eseguire la regressione quadratica in python
La regressione quadratica è un tipo di regressione che possiamo utilizzare per quantificare la relazione tra una variabile predittrice e una variabile di risposta quando le relazioni reali sono quadratiche, che possono apparire come una “U” o una “U” invertita su un grafico.
Cioè, all’aumentare della variabile predittiva, anche la variabile di risposta tende ad aumentare, ma dopo un certo punto la variabile di risposta inizia a diminuire mentre la variabile predittiva continua ad aumentare.
Questo tutorial spiega come eseguire la regressione quadratica in Python.
Esempio: regressione quadratica in Python
Supponiamo di avere dati sul numero di ore lavorate a settimana e sul livello di felicità riportato (su una scala da 0 a 100) per 16 persone diverse:
import numpy as np import scipy.stats as stats #define variables hours = [6, 9, 12, 12, 15, 21, 24, 24, 27, 30, 36, 39, 45, 48, 57, 60] happ = [12, 18, 30, 42, 48, 78, 90, 96, 96, 90, 84, 78, 66, 54, 36, 24]
Se realizziamo un semplice grafico a dispersione di questi dati, possiamo vedere che la relazione tra le due variabili è a forma di “U”:
import matplotlib.pyplot as plt
#create scatterplot
plt.scatter(hours, happ)
All’aumentare delle ore lavorate aumenta anche la felicità, ma una volta che le ore lavorate superano le 35 ore settimanali, la felicità inizia a diminuire.
A causa di questa forma a “U”, ciò significa che la regressione quadratica è probabilmente un buon candidato per quantificare la relazione tra le due variabili.
Per eseguire effettivamente una regressione quadratica, possiamo adattare un modello di regressione polinomiale con grado 2 utilizzando la funzione numpy.polyfit() :
import numpy as np #polynomial fit with degree = 2 model = np.poly1d(np.polyfit(hours, happ, 2)) #add fitted polynomial line to scatterplot polyline = np.linspace(1, 60, 50) plt.scatter(hours, happ) plt.plot(polyline, model(polyline)) plt.show()
Possiamo ottenere l’equazione di regressione polinomiale adattata stampando i coefficienti del modello:
print (model)
-0.107x 2 + 7.173x - 30.25
L’equazione di regressione quadratica adattata è:
Felicità = -0,107(ore) 2 + 7,173(ore) – 30,25
Possiamo usare questa equazione per calcolare il livello di felicità atteso di un individuo in base alle ore lavorate. Ad esempio, il livello atteso di felicità di una persona che lavora 30 ore settimanali è:
Felicità = -0,107(30) 2 + 7,173(30) – 30,25 = 88,64 .
Possiamo anche scrivere una breve funzione per ottenere l’R quadrato del modello, ovvero la proporzione della varianza nella variabile di risposta che può essere spiegata dalle variabili predittive.
#define function to calculate r-squared def polyfit(x, y, degree): results = {} coeffs = np.polyfit(x, y, degree) p = np.poly1d(coeffs) #calculate r-squared yhat = p(x) ybar = np.sum(y)/len(y) ssreg = np.sum((yhat-ybar)**2) sstot = np.sum((y - ybar)**2) results['r_squared'] = ssreg / sstot return results #find r-squared of polynomial model with degree = 3 polyfit(hours, happ, 2) {'r_squared': 0.9092114182131691}
In questo esempio, il quadrato R del modello è 0,9092 .
Ciò significa che il 90,92% della variazione nei livelli di felicità riportati può essere spiegato dalle variabili predittive.
Risorse addizionali
Come eseguire la regressione polinomiale in Python
Come eseguire la regressione quadratica in R
Come eseguire la regressione quadratica in Excel