Simple Linear Regression Menggunakan StatsModel

[latexpage]

Pada lesson ini, Simple linear regression akan menggunakan library statsmodel untuk memudahkan. Disarankan menggunakan Jupyter Notebook.

Data yang digunakan adalah data SAT dan GPA. Jika seorang siswa memiliki nilai SAT tinggi, maka memiliki kecenderungan akan memiliki nilai GPA yang besar juga. Kita akan membuat simple linear regression untuk melihat hubungan antara SAT dan GPA tersebut. File data dapat download disini SimpleLinearRegression.csv

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import statsmodels.api as sm

data = pd.read_csv('SimpleLinearRegression.csv')

y = data ['GPA']
x1 = data ['SAT']

x = sm.add_constant(x1)
results = sm.OLS(y,x).fit()
results.summary()

plt.scatter(x1,y)
yhat = 0.275 + 0.0017*x1
fig = plt.plot(x1,yhat, lw=4, c='orange', label ='regression line')
plt.xlabel('SAT', fontsize = 20)
plt.ylabel('GPA', fontsize = 20)
plt.show()

Penjelasan Program

Hal pertama yang kita lakukan adalah import library.

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import statsmodels.api as sm

Lalu load data menggunakan panda dengan perintah dibawah.

data = pd.read_csv('SimpleLinearRegression.csv')

Deklarasi variable yang digunakan, y akan menampung data GPA, variable dependent (yang diprediksi) dan x1 akan menampung nilai SAT, variable independent (predictor).

y = data ['GPA']
x1 = data ['SAT']

Tambahkan konstan kolom pada input dataset dengan perintah sm.add_constant. Lalu lakukan fit model dengan metoda OLS (ordinary least squares) dimana y adalah variable dependent dan x adalah independent variable.

Hasilnya dapat dilihat dengan perintah summary().

x = sm.add_constant(x1)
results = sm.OLS(y,x).fit()
results.summary()
ols linear regression summary

Dari tabel pertama (tabel model summary) pada gambar diatas dapat diketahui, metoda yang digunakan adalah OLS dan dependent variable adalah GPA.

OLS atau Ordinary Least Squares adalah metoda untuk estimasi linear regression dengan minimum Sum Square Error (SSE). Click SSE untuk penjelasan detail.

Berikutnya adalah R-squared, menunjukan seberapa baik garis regresi fit terhadap independent variable yang kita masukan. Makin dekat ke angka 1, makin baik model dalam melakukan prediksi. Click R-Squared untuk penjelasan detail.

F-Statistic menunjukan seberapa signifikan model, makin besar makin bagus sebuah model dalam menjelaskan data.

Berikutnya tabel kedua (tabel coefficient), ada dua nilai koefisien yang akan kita gunakan untuk membuat persamaan linear regression. Ingat persamaan linear regression adalah

$\hat y = b_0 + b_1x_1$

  • 0.275 adalah untuk b0
  • 0.0017 adalah untuk b1
  • maka persamaannya adalah y = 0.275 + 0.0017 * x1

Kolom std err (standard error) menunjukan akurasi dari prediksi dari masing-masing variable. Makin rendah std err, makin akurat hasil estimasi.

Berikut adalah visualisasi garis linear regression dari dengan persamaan yhat = 0.275 + 0.0017*x1

plt.scatter(x1,y)
yhat = 0.275 + 0.0017*x1
fig = plt.plot(x1,yhat, lw=4, c='orange', label ='regression line')
plt.xlabel('SAT', fontsize = 20)
plt.ylabel('GPA', fontsize = 20)
plt.show()
matplotlib linear regression
Sharing is caring: