๐ŸSimple Linear Regression

Pengantar

Regresi linier sederhana (simple linear regession) adalah suatu teknik analisis statistik yang digunakan untuk memahami dan memodelkan hubungan linier antara dua variabel: variabel independen (X) dan variabel dependen (Y). Teknik ini bermanfaat ketika kita ingin memprediksi atau menjelaskan bagaimana perubahan dalam variabel independen dapat memengaruhi variabel dependen.

Simple linear regression memodelkan hubungan antara satu variable independen (X) dengan satu variable dependen (Y). Hubungan linear dalam bentuk persamaan garis lurus antara dua variable ini dapat dirumuskan sebagai berikut ini:

Y=ฮฒ0+ฮฒ1XY = ฮฒโ‚€ + ฮฒโ‚X

  • Y adalah variabel dependen yang ingin diprediksi atau dimengerti.

  • X adalah variabel independen yang digunakan untuk melakukan prediksi atau menjelaskan variasi dalam Y.

  • ฮฒ0ฮฒโ‚€ adalah intercept (konstanta), yaitu nilai Y ketika X sama dengan 0.

  • ฮฒ1ฮฒโ‚ adalah koefisien regresi, yang mengukur sejauh mana perubahan dalam X memengaruhi perubahan dalam Y. Ini adalah kemiringan (slope) dari garis regresi.

Dalam rumus ini, kita menyederhanakan model menjadi hubungan linier antara X dan Y yang membantu kita memahami dan memprediksi variabel dependen berdasarkan variabel independen.

Estimasi Parameter Model Simple Linear Regression

Dalam Simple Linear Regression, kita perlu mengestimasi dua parameter utama: intercept ฮฒ0ฮฒโ‚€ dan koefisien regresi ฮฒ1ฮฒโ‚. Berikut adalah bagaimana kita dapat mengestimasi parameter-parameter ini:

  1. Intercept ฮฒ0ฮฒโ‚€: intercept ฮฒ0ฮฒโ‚€ adalah nilai dari Y ketika X sama dengan 0. Untuk mengestimasinya, kita dapat menggunakan rumus berikut:

    ฮฒ0=Yโ€พโˆ’ฮฒ1โ‹…Xโ€พย \beta_0 = \overline{Y} - \beta_1 \cdot \overline{X}\

    Di mana Yโ€พ\overline{Y} adalah rata-rata dari variabel dependen (Y), Xโ€พ\overline{X} adalah rata-rata dari variabel independen (X), dan ฮฒ1\beta_1 adalah koefisien regresi.

  2. Koefisien Regresi ฮฒ1ฮฒโ‚: Koefisien regresi (ฮฒ1)(\beta_1) mengukur sejauh mana perubahan dalam X memengaruhi perubahan dalam Y. Untuk mengestimasinya, kita dapat menggunakan rumus berikut:

    [ฮฒ1=โˆ‘i=1n(Xiโˆ’Xโ€พ)(Yiโˆ’Yโ€พ)โˆ‘i=1n(Xiโˆ’Xโ€พ)2][\beta_1 = \frac{\sum_{i=1}^{n} (X_i - \overline{X})(Y_i - \overline{Y})}{\sum_{i=1}^{n} (X_i - \overline{X})^2}]

    Di mana XiX_i dan YiY_i adalah nilai-nilai individu dari X dan Y dalam dataset, Xโ€พ\overline{X} adalah rata-rata dari X, Yโ€พ\overline{Y} adalah rata-rata dari Y, dan nn adalah jumlah pengamatan.

Contoh Penerapan: Hubungan Diameter Pizza dengan Harga Pizza

Misalkan kita ingin memahami hubungan antara diameter pizza (dalam inci) dan harga pizza (dalam dolar). Kita mengumpulkan data dari beberapa toko pizza dan memutuskan untuk menggunakan Simple Linear Regression untuk memodelkan hubungan ini. Berikut adalah data yang kita miliki:

Diameter Pizza (X) (inci)
Harga Pizza (Y) (dolar)

6

7

8

9

10

13

14

17.5

18

18

Langkah-langkah Estimasi Parameter & Prediksi Harga:

  1. Hitung rata-rata dari Diameter Pizza Xโ€พ\overline{X} dan Harga Pizza Yโ€พ\overline{Y}.

    Xโ€พ=6+8+10+14+185=11.2\overline{X} = \frac{6 + 8 + 10 + 14 + 18}{5} = 11.2 inci Yโ€พ=7+9+13+17.5+185=12.7\overline{Y} = \frac{7 + 9 + 13 + 17.5 + 18}{5} = 12.7 dollar

  2. Hitung koefisien regresi ฮฒ1\beta_1 menggunakan rumus di atas dengan menggunakan nilai-nilai dari X dan Y dalam dataset, Rumus untuk menghitung ฮฒ1\beta_1 adalah:

    ฮฒ1=โˆ‘i=1n(Xiโˆ’Xโ€พ)(Yiโˆ’Yโ€พ)โˆ‘i=1n(Xiโˆ’Xโ€พ)2\beta_1 = \frac{\sum_{i=1}^{n} (X_i - \overline{X})(Y_i - \overline{Y})}{\sum_{i=1}^{n} (X_i - \overline{X})^2}

    Kita memiliki data sebagai berikut:

    • X (Diameter Pizza) dalam inci: [6, 8, 10, 14, 18]

    • Y (Harga Pizza) dalam dolar: [7, 9, 13, 17.5, 18]

    Rata-rata Xโ€พ=11.2\overline{X} = 11.2 inci Rata-rata Yโ€พ=12.7\overline{Y} = 12.7 dolar

    Mari kita hitung ฮฒ1\beta_1:

    Jadi,ฮฒ1โ‰ˆ0.974Jadi, \beta_1 \approx 0.974

  3. Setelah mendapatkan nilai ฮฒ1\beta_1, kita dapat mengestimasi intercept ฮฒ0\beta_0 menggunakan rumus berikut ฮฒ0=Yโ€พโˆ’ฮฒ1โ‹…Xโ€พ\beta_0 = \overline{Y} - \beta_1 \cdot \overline{X}

    Kita sudah memiliki ฮฒ1โ‰ˆ0.974,Xโ€พ=11.2\beta_1 \approx 0.974, \overline{X} = 11.2, dan Yโ€พ=12.7\overline{Y} = 12.7.

    Mari kita hitung ฮฒ0\beta_0:

    Jadi, hasil estimasi parameter untuk model Simple Linear Regression antara diameter pizza (X) dan harga pizza (Y) adalah:

    • ฮฒ0โ‰ˆ1.82\beta_0 \approx 1.82 (intercept)

    • ฮฒ1โ‰ˆ0.974\beta_1 \approx 0.974 (koefisien regresi)

    Setelah estimasi ini selesai, kita memiliki model Simple Linear Regression yang memungkinkan kita untuk memprediksi harga pizza berdasarkan diameter pizza. Misalnya, jika diameter pizza adalah 12 inci, kita dapat menggunakan model ini untuk memprediksi harga pizza yang sesuai berdasarkan estimasi ฮฒ0\beta_0 dan ฮฒ1\beta_1

  4. Dengan nilai estimasi parameter ฮฒ0โ‰ˆ1.82\beta_0 \approx 1.82 (intercept) dan ฮฒ1โ‰ˆ0.974\beta_1 \approx 0.974 (koefisien regresi), kita dapat membentuk model Simple Linear Regression antara diameter pizza (X) dan harga pizza (Y) sebagai berikut:

    HargaPizza=1.82+0.974ร—DiameterPizzaHargaPizza = 1.82 + 0.974 \times DiameterPizza

    Dalam model ini:

    • (HargaPizza) adalah harga pizza yang ingin diprediksi.

    • (DiameterPizza) adalah diameter pizza dalam inci yang digunakan sebagai variabel independen.

    Dengan model ini, kita dapat memasukkan nilai (DiameterPizza) untuk memprediksi (HargaPizza). Ini memungkinkan kita untuk memahami bagaimana perubahan dalam diameter pizza memengaruhi harga pizza secara linier.

    Sebagai contoh, jika kita memiliki pizza dengan diameter 12 inci, kita dapat menggunakan model ini untuk memprediksi harganya:

    HargaPizza=1.82+0.974ร—12HargaPizza = 1.82 + 0.974 \times 12

    HargaPizzaโ‰ˆ14.58ย dolarHargaPizza \approx 14.58 \text{ dolar}

    Jadi, menurut model ini, pizza dengan diameter 12 inci kemungkinan memiliki harga sekitar 14.58 dolar. Model ini dapat digunakan untuk memprediksi harga pizza berdasarkan diameter yang berbeda.

jika di visualisasikan ke dalam grafik menggunakan code python berikut maka didapatkan hasil grafik Simple Linier Regression sebagaimana pada Gambar 7.1

import numpy as np
import matplotlib.pyplot as plt

# Data
diameter_pizza = np.array([6, 8, 10, 14, 18])
harga_pizza = np.array([7, 9, 13, 17.5, 18])

# Estimasi parameter
beta_0 = 1.82
beta_1 = 0.974

# Model regresi
harga_prediksi = beta_0 + beta_1 * diameter_pizza

# Membuat plot
plt.scatter(diameter_pizza, harga_pizza, label='Data Asli')
plt.plot(diameter_pizza, harga_prediksi, color='red', label='Model Regresi')
plt.xlabel('Diameter Pizza (inci)')
plt.ylabel('Harga Pizza (dolar)')
plt.title('Simple Linear Regression: Hubungan Diameter Pizza dengan Harga Pizza')
plt.legend()
plt.grid(True)
plt.show()
Gambar 7.1. Gambar 3.1 Korelasi Diameter Pizza dengan Harga Pizza

Berdasarkan gambar dapat dilihat bahwa ada hubungan antara diameter pizza dan harganya, Ketika diameter pizza bertambah maka harga dari pizza juga akan naik.

Pada simple linear regression mengasumsikan bahwa ada hubungan linier antara independent / explanatory variabel dengan dependent variabel melalui garis linier yang disebut sebagai hyperplane. Pada gambar 3.1 hyperplane divisualisasikan dengan warna merah.

Evaluasi Model dengan Cost Function

Garis regresi yang dihasilkan oleh beberapa nilai parameter (ฮฑ dan ฮฒ) yang berbeda diplot pada Gambar 7.2. Berbeda nilai ฮฑ dan ฮฒ maka akan menghasilkan garis regresi yang berbeda. Bagaimana menentukan parameter yang tepat yang menghasilkan garis regresi yang paling sesuai?

Gambar 3.2

Untuk meminimalkan kesalahan prediksi dapat dihitung terlebih dahulu cost function dihasilkan oleh model yang telah dibuat. Cost function digunakan untuk mendefinisikan dan mengukur kesalahan model, atau ukuran seberapa salah model dalam hal kemampuannya untuk memperkirakan hubungan antara X dan y. Perbedaan antara harga yang diprediksi oleh model dan harga pizza yang sebenarnya (actual data) dalam data training disebut sebagai residual. Sedangkan Perbedaan antara nilai yang diprediksi dan harga pizza yang sebenarnya (actual data) dalam data testing disebut sebagai kesalahan prediksi (prediction errors). Perhatikan gambar 3.3 dibawah ini, garis hijau adalah garis regresi yang dihasilkan dari data training. Titik-titik hitam adalah data actual sehingga garis merah vertical merupakan residual perbedaan antara nilai yang diprediksi dan harga pizza yang sebenarnya (actual data) pada data training.

Model terbaik dapat dihasilkan dengan meminimalkan sum of the residual dalam artian bahwa model yang dibuat tepat jika nilai yang diprediksi mendekati nilai actual untuk keseluruhan data training. Ukuran mengukur ketepatan model yang dibuat dapat menggunakan cost function yaitu Residual sum of squares (RSS). RRS merupakan salah satu cost function yang dapat digunkan untuk mengukur kesesuaian model yang telah dibuat dengan cara menjumlahkan kuadrat residual untuk semua data training. RSS dihitung dengan rumus dalam persamaan berikut, di mana yi adalah nilai yang diamati dan f (xi) adalah nilai prediksi:

RSS (Residual Sum of Squares) adalah salah satu metrik evaluasi yang digunakan dalam Simple Linear Regression untuk mengukur seberapa baik model regresi sesuai dengan data observasi yang sebenarnya. RSS mengukur jumlah kuadrat dari selisih antara nilai sebenarnya (Y) dan nilai yang diprediksi oleh model (Y prediksi). Berikut adalah rumus RSS:

RSS=โˆ‘i=1n(Yiโˆ’Y^i)2RSS = \sum_{i=1}^{n} (Y_i - \hat{Y}_i)^2

Di mana:

  • nn adalah jumlah pengamatan.

  • YiY_i adalah nilai sebenarnya dari variabel dependen (harga pizza) untuk pengamatan ke-ii.

  • Y^i\hat{Y}_i adalah nilai yang diprediksi oleh model regresi (harga pizza yang diprediksi) untuk pengamatan ke-ii.

RSS mengukur seberapa besar kesalahan prediksi model terhadap data sebenarnya. Semakin kecil nilai RSS, semakin baik model kita dalam menjelaskan variasi dalam data.

Berikut adalah contoh cara menghitung RSS menggunakan Python beserta output hasilnya:

import numpy as np

# Data
harga_pizza_asli = np.array([7, 9, 13, 17.5, 18])
harga_pizza_prediksi = np.array([1.82 + 0.974 * 6, 1.82 + 0.974 * 8, 1.82 + 0.974 * 10, 1.82 + 0.974 * 14, 1.82 + 0.974 * 18])

# Menghitung RSS
RSS = np.sum((harga_pizza_asli - harga_pizza_prediksi) ** 2)
print("RSS:", RSS)
RSS: 8.89488

Dalam contoh ini, kita memiliki data harga pizza yang sebenarnya harga_pizza_asli dan harga pizza yang diprediksi oleh model harga_pizza_prediksi. Semakin kecil nilai RSS, semakin baik model regresi dalam memprediksi data sebenarnya. RSS adalah salah satu metrik evaluasi yang digunakan untuk mengevaluasi kualitas model regresi.

Evaluasi Model Dengan R-squared (R2)

Evaluasi model dengan menggunakan R-squared R2R^2 adalah salah satu cara yang lebih umum digunakan untuk mengukur seberapa baik model regresi cocok dengan data. R2R^2 mengukur sejauh mana variasi dalam variabel dependen (Y) yang dapat dijelaskan oleh variabel independen (X) dalam model. Semakin tinggi R2R^2, semakin baik model dalam menjelaskan variasi dalam data.

R2R^2 memiliki nilai antara 0 hingga 1, dengan nilai 1 menunjukkan bahwa model cocok sempurna dengan data, dan nilai 0 menunjukkan bahwa model tidak menjelaskan variasi sama sekali. Secara matematis, R2R^2 dapat dihitung dengan rumus berikut:

R2=1โˆ’RSSTSSR^2 = 1 - \frac{RSS}{TSS}

Di mana:

  • (RSS) adalah Residual Sum of Squares, yang telah dijelaskan sebelumnya.

  • (TSS) adalah Total Sum of Squares, yang merupakan jumlah kuadrat deviasi nilai sebenarnya dari rata-rata variabel dependen.

Berikut adalah contoh penggunaan Python untuk menghitung R2R^2 dari model regresi yang telah kita estimasi sebelumnya dan melakukan prediksi dapat menggunakan metod predict. Nilai R-squared R2R^2 mendekati 1 maka dianggap model dapat memprediksi dengan baik. Selain menggunakan R-squared R2R^2 maka juga dapat digunakan matrix MAE dan MSE.

import numpy as np
from sklearn.metrics import mean_absolute_error, mean_squared_error

# Data
harga_pizza_asli = np.array([7, 9, 13, 17.5, 18])
diameter_pizza = np.array([6, 8, 10, 14, 18])

# Estimasi parameter
beta_0 = 1.82
beta_1 = 0.974

# Prediksi harga pizza
harga_pizza_prediksi = beta_0 + beta_1 * diameter_pizza

# Menghitung RSS (Residual Sum of Squares)
RSS = np.sum((harga_pizza_asli - harga_pizza_prediksi) ** 2)

# Menghitung TSS (Total Sum of Squares)
TSS = np.sum((harga_pizza_asli - np.mean(harga_pizza_asli)) ** 2)

# Menghitung R-squared (R2)
R2 = 1 - (RSS / TSS)

# Menampilkan predicted price in dollar
print("Predicted Price in Dollar:", harga_pizza_prediksi)

# Menghitung MAE (Mean Absolute Error)
mae = mean_absolute_error(harga_pizza_asli, harga_pizza_prediksi)

# Menghitung MSE (Mean Squared Error)
mse = mean_squared_error(harga_pizza_asli, harga_pizza_prediksi)

print("Residual Sum of Squares (RSS)", RSS)
print("Total Sum of Squares (TSS)", TSS)
print("R-squared (R2):", R2)
print("MAE (Mean Absolute Error):", mae)
print("MSE (Mean Squared Error):", mse)

Output

Predicted Price in Dollar: [ 7.664  9.612 11.56  15.456 19.352]
Residual Sum of Squares (RSS) 8.89488
Total Sum of Squares (TSS) 97.19999999999999
R-squared (R2): 0.9084888888888889
MAE (Mean Absolute Error): 1.2224
MSE (Mean Squared Error): 1.7789760000000001

Last updated