Come eseguire la regressione cubica in python


La regressione cubica è un tipo di regressione che possiamo utilizzare per quantificare la relazione tra una variabile predittrice e una variabile di risposta quando la relazione tra le variabili non è lineare.

Questo tutorial spiega come eseguire la regressione cubica in Python.

Esempio: regressione cubica in Python

Supponiamo di avere il seguente DataFrame panda che contiene due variabili (xey):

 import pandas as pd

#createDataFrame
df = pd. DataFrame ({' x ': [6, 9, 12, 16, 22, 28, 33, 40, 47, 51, 55, 60],
                   ' y ': [14, 28, 50, 64, 67, 57, 55, 57, 68, 74, 88, 110]})

#view DataFrame
print (df)

     xy
0 6 14
1 9 28
2 12 50
3 16 64
4 22 67
5 28 57
6 33 55
7 40 57
8 47 68
9 51 74
10 55 88
11 60 110

Se creiamo un semplice grafico a dispersione di questi dati, possiamo vedere che la relazione tra le due variabili non è lineare:

 import matplotlib. pyplot as plt

#create scatterplot
plt. scatter (df. x , df. y ) 

All’aumentare del valore di x, y aumenta fino a un certo punto, poi diminuisce, quindi aumenta di nuovo.

Questo modello con due “curve” nel grafico indica una relazione cubica tra le due variabili.

Ciò significa che un modello di regressione cubica è un buon candidato per quantificare la relazione tra le due variabili.

Per eseguire la regressione cubica, possiamo adattare un modello di regressione polinomiale di grado 3 utilizzando la funzione numpy.polyfit() :

 import numpy as np

#fit cubic regression model
model = np. poly1d (np. polyfit (df. x , df. y , 3))

#add fitted cubic regression line to scatterplot
polyline = np. linspace (1, 60, 50)
plt. scatter (df. x , df. y )
plt. plot (polyline, model(polyline))

#add axis labels
plt. xlabel (' x ')
plt. ylabel (' y ')

#displayplot
plt. show () 

regressione cubica in Python

Possiamo ottenere l’equazione di regressione cubica adattata stampando i coefficienti del modello:

 print (model)

          3 2
0.003302x - 0.3214x + 9.832x - 32.01

L’equazione di regressione cubica adattata è:

y = 0,003302(x) 3 – 0,3214(x) 2 + 9,832x – 30,01

Possiamo usare questa equazione per calcolare il valore atteso di y in base al valore di x.

Ad esempio, se x è 30, il valore previsto per y è 64,844:

y = 0,003302(30) 3 – 0,3214(30) 2 + 9,832(30) – 30,01 = 64,844

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(df. x , df. y , 3)

{'r_squared': 0.9632469890057967}

In questo esempio, il quadrato R del modello è 0,9632 .

Ciò significa che il 96,32% della variazione nella variabile di risposta può essere spiegato dalla variabile predittore.

Poiché questo valore è così alto, ci dice che il modello di regressione cubica quantifica bene la relazione tra le due variabili.

Correlato: Qual è un buon valore R quadrato?

Risorse addizionali

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

Come eseguire una semplice regressione lineare in Python
Come eseguire la regressione quadratica in Python
Come eseguire la regressione polinomiale in Python

Aggiungi un commento

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