Cara melakukan regresi kuadrat dengan python


Regresi kuadrat adalah jenis regresi yang dapat kita gunakan untuk mengukur hubungan antara variabel prediktor dan variabel respons jika hubungan sebenarnya berbentuk kuadrat, yang mungkin terlihat seperti “U” atau “U” terbalik pada grafik.

Artinya, semakin besar variabel prediktor maka variabel respon cenderung meningkat, namun setelah suatu titik tertentu variabel respon mulai menurun seiring dengan meningkatnya variabel prediktor.

Tutorial ini menjelaskan cara melakukan regresi kuadrat dengan Python.

Contoh: Regresi Kuadrat dengan Python

Misalkan kita memiliki data jumlah jam kerja per minggu dan tingkat kebahagiaan yang dilaporkan (dalam skala 0 hingga 100) untuk 16 orang berbeda:

 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]

Jika kita membuat plot sebar sederhana dari data ini, kita dapat melihat bahwa hubungan antara kedua variabel berbentuk “U”:

 import matplotlib.pyplot as plt

#create scatterplot
plt.scatter(hours, happ) 

Ketika jam kerja bertambah, kebahagiaan juga meningkat, namun ketika jam kerja melebihi 35 jam per minggu, kebahagiaan mulai menurun.

Karena bentuknya yang “U”, ini berarti regresi kuadratik kemungkinan besar merupakan kandidat yang baik untuk mengukur hubungan antara kedua variabel.

Untuk benar-benar melakukan regresi kuadrat, kita dapat menyesuaikan model regresi polinomial dengan derajat 2 menggunakan fungsi 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() 

Regresi Kuadrat dengan Python

Kita dapat memperoleh persamaan regresi polinomial yang sesuai dengan mencetak koefisien model:

 print (model)

-0.107x 2 + 7.173x - 30.25

Persamaan regresi kuadratik yang dipasang adalah:

Kebahagiaan = -0,107(jam) 2 + 7,173(jam) – 30,25

Kita dapat menggunakan persamaan ini untuk menghitung tingkat kebahagiaan yang diharapkan seseorang berdasarkan jam kerja mereka. Misalnya tingkat kebahagiaan yang diharapkan dari seseorang yang bekerja 30 jam per minggu adalah:

Kebahagiaan = -0,107(30) 2 + 7,173(30) – 30,25 = 88,64 .

Kita juga dapat menuliskan fungsi singkat untuk mendapatkan R-squared model, yaitu proporsi varians variabel respon yang dapat dijelaskan oleh variabel prediktor.

 #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}

Dalam contoh ini, R kuadrat model adalah 0,9092 .

Artinya 90,92% variasi tingkat kebahagiaan yang dilaporkan dapat dijelaskan oleh variabel prediktor.

Sumber daya tambahan

Cara melakukan regresi polinomial dengan Python
Bagaimana melakukan regresi kuadrat di R
Cara melakukan regresi kuadrat di Excel

Tambahkan komentar

Alamat email Anda tidak akan dipublikasikan. Ruas yang wajib ditandai *