Hoe kubieke regressie uit te voeren in python


Kubieke regressie is een type regressie dat we kunnen gebruiken om de relatie tussen een voorspellende variabele en een responsvariabele te kwantificeren wanneer de relatie tussen de variabelen niet-lineair is.

In deze tutorial wordt uitgelegd hoe u kubieke regressie uitvoert in Python.

Voorbeeld: kubieke regressie in Python

Stel dat we het volgende panda’s DataFrame hebben dat twee variabelen bevat (x en y):

 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

Als we een eenvoudig spreidingsdiagram van deze gegevens maken, kunnen we zien dat de relatie tussen de twee variabelen niet-lineair is:

 import matplotlib. pyplot as plt

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

Naarmate de waarde van x toeneemt, neemt y toe tot een bepaald punt, neemt vervolgens af en neemt vervolgens weer toe.

Dit patroon met twee „curven“ in de plot is een indicatie van een kubieke relatie tussen de twee variabelen.

Dit betekent dat een kubisch regressiemodel een goede kandidaat is om de relatie tussen de twee variabelen te kwantificeren.

Om kubieke regressie uit te voeren, kunnen we een polynomiaal regressiemodel met graad 3 fitten met behulp van de numpy.polyfit() functie :

 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 () 

kubieke regressie in Python

We kunnen de aangepaste kubieke regressievergelijking verkrijgen door de modelcoëfficiënten af te drukken:

 print (model)

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

De aangepaste kubieke regressievergelijking is:

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

We kunnen deze vergelijking gebruiken om de verwachte waarde van y te berekenen op basis van de waarde van x.

Als x bijvoorbeeld 30 is, dan is de verwachte waarde voor y 64,844:

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

We kunnen ook een korte functie schrijven om het R-kwadraat van het model te verkrijgen, wat het deel van de variantie in de responsvariabele is dat kan worden verklaard door de voorspellende variabelen.

 #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 dit voorbeeld is het R-kwadraat van het model 0,9632 .

Dit betekent dat 96,32% van de variatie in de responsvariabele kan worden verklaard door de voorspellende variabele.

Omdat deze waarde zo hoog is, vertelt dit ons dat het kubieke regressiemodel de relatie tussen de twee variabelen goed kwantificeert.

Gerelateerd: Wat is een goede R-kwadraatwaarde?

Aanvullende bronnen

In de volgende tutorials wordt uitgelegd hoe u andere veelvoorkomende taken in Python kunt uitvoeren:

Hoe eenvoudige lineaire regressie uit te voeren in Python
Hoe kwadratische regressie uit te voeren in Python
Hoe polynomiale regressie uit te voeren in Python

Einen Kommentar hinzufügen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert