Analisis Regresi Linier dalam Prediksi Harga Properti Menggunakan Python: Sebuah Studi Kasus Komprehensif

Regresi linier merupakan salah satu algoritma dasar dan paling banyak digunakan dalam analisis statistik dan pembelajaran mesin. Metode ini bertujuan untuk memodelkan hubungan linear antara variabel dependen (target) dengan satu atau lebih variabel independen (prediktor). Dalam konteks bisnis dan akademis, regresi linier digunakan secara luas untuk prediksi, peramalan, dan identifikasi faktor-faktor kunci yang mempengaruhi suatu fenomena. Artikel ini akan membahas konsep dasar regresi linier, asumsi-asumsinya, serta mendemonstrasikan implementasinya menggunakan bahasa pemrograman Python melalui studi kasus prediksi harga properti.

Konsep Dasar Regresi Linier

Regresi linier mencoba menemukan garis lurus (atau bidang hiper) terbaik yang paling sesuai dengan titik-titik data, sehingga memungkinkan prediksi nilai variabel dependen berdasarkan nilai variabel independen. Secara matematis, model regresi linier sederhana yang melibatkan satu variabel independen dapat dinyatakan sebagai:

$$ y = \beta_0 + \beta_1 x + \epsilon $$

Di mana:

  • \( y \) adalah variabel dependen (yang ingin diprediksi).
  • \( x \) adalah variabel independen (prediktor).
  • \( \beta_0 \) adalah intercept, yaitu nilai \( y \) ketika \( x \) adalah nol.
  • \( \beta_1 \) adalah koefisien regresi atau slope, yang menunjukkan perubahan rata-rata pada \( y \) untuk setiap perubahan satu unit pada \( x \).
  • \( \epsilon \) adalah istilah galat (error term), yang merepresentasikan variasi yang tidak dapat dijelaskan oleh model.

Tujuan utama dari regresi linier adalah mengestimasi nilai \( \beta_0 \) dan \( \beta_1 \) dari data yang tersedia sedemikian rupa sehingga galat \( \epsilon \) diminimalkan. Metode yang paling umum digunakan untuk estimasi ini adalah Ordinary Least Squares (OLS), yang bertujuan untuk meminimalkan jumlah kuadrat residual (perbedaan antara nilai aktual dan nilai prediksi).

Untuk regresi linier berganda, di mana terdapat lebih dari satu variabel independen, persamaannya diperluas menjadi:

$$ y = \beta_0 + \beta_1 x_1 + \beta_2 x_2 + \dots + \beta_k x_k + \epsilon $$

Di sini, \( x_1, x_2, \dots, x_k \) adalah \( k \) variabel independen, dan \( \beta_1, \beta_2, \dots, \beta_k \) adalah koefisien regresi yang sesuai.

Asumsi-Asumsi Regresi Linier

Agar model regresi linier memberikan hasil yang valid dan dapat diinterpretasikan, beberapa asumsi harus dipenuhi. Pelanggaran terhadap asumsi ini dapat menyebabkan estimasi koefisien yang bias atau tidak efisien. Asumsi-asumsi tersebut meliputi:

  1. Linieritas: Hubungan antara variabel dependen dan variabel independen harus linear. Ini dapat diperiksa melalui plot sebar (scatter plot).
  2. Independensi Galat: Residual atau galat model tidak boleh saling berkorelasi. Ini sering menjadi perhatian dalam data deret waktu.
  3. Homoskedastisitas: Varians dari residual harus konstan di seluruh rentang nilai variabel independen. Heteroskedastisitas (varians yang tidak konstan) dapat menyebabkan estimasi standar error yang salah.
  4. Normalitas Residual: Residual harus berdistribusi normal. Meskipun model regresi linier cukup tangguh terhadap pelanggaran asumsi ini untuk sampel besar, validitas inferensi statistik (seperti interval kepercayaan dan uji hipotesis) sangat bergantung padanya.
  5. Tidak Ada Multikolinearitas Sempurna: Untuk regresi linier berganda, variabel independen tidak boleh berkorelasi sempurna satu sama lain. Multikolinearitas tinggi dapat menyulitkan interpretasi koefisien individu.

Studi Kasus: Prediksi Harga Properti Menggunakan Python

Untuk mendemonstrasikan implementasi regresi linier, kita akan menggunakan studi kasus prediksi harga properti berdasarkan luasnya. Meskipun ini adalah contoh yang disederhanakan (dalam dunia nyata, harga properti dipengaruhi banyak faktor lain), ini efektif untuk mengilustrasikan langkah-langkah dasar.

Persiapan Lingkungan dan Data

Pertama, kita perlu mengimpor pustaka Python yang relevan: numpy untuk operasi numerik, pandas untuk manipulasi data, matplotlib.pyplot untuk visualisasi, dan scikit-learn untuk implementasi model regresi linier.


import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LinearRegression
from sklearn.metrics import mean_absolute_error, mean_squared_error, r2_score

# Membuat dataset sintetis untuk contoh
np.random.seed(42) # Untuk reproduksibilitas
luas_rumah = np.random.randint(50, 300, 100).reshape(-1, 1) # Luas dalam meter persegi
# Harga dihitung dengan rumus: intercept + slope*luas + noise
harga_properti = 50000 + 200 * luas_rumah + np.random.normal(0, 20000, 100).reshape(-1, 1)

# Membuat DataFrame
df = pd.DataFrame({'Luas_Rumah_sqm': luas_rumah.flatten(), 'Harga_Properti_USD': harga_properti.flatten()})
print(df.head())

Output dari kode di atas akan menunjukkan lima baris pertama dari dataset yang dibuat:


   Luas_Rumah_sqm  Harga_Properti_USD
0             228       91919.467812
1             228       92425.292850
2              96       70335.727508
3             129       76144.381373
4             236       97576.438258

Eksplorasi Data (EDA)

Sebelum membangun model, penting untuk memahami hubungan antara variabel melalui visualisasi. Plot sebar (scatter plot) adalah cara yang efektif untuk melihat pola linier antara luas rumah dan harga properti.


plt.figure(figsize=(10, 6))
plt.scatter(df['Luas_Rumah_sqm'], df['Harga_Properti_USD'], color='blue', alpha=0.7)
plt.title('Hubungan antara Luas Rumah dan Harga Properti')
plt.xlabel('Luas Rumah (meter persegi)')
plt.ylabel('Harga Properti (USD)')
plt.grid(True)
plt.show()

Dari plot sebar, kita dapat mengamati adanya hubungan positif yang cukup kuat antara luas rumah dan harga properti, yang menunjukkan bahwa model regresi linier kemungkinan cocok untuk data ini.

Pemisahan Data Latih dan Data Uji

Langkah krusial dalam pembangunan model pembelajaran mesin adalah membagi dataset menjadi set pelatihan (training set) dan set pengujian (test set). Set pelatihan digunakan untuk melatih model, sementara set pengujian digunakan untuk mengevaluasi kinerja model pada data yang belum pernah dilihat sebelumnya, memastikan generalisasi yang baik.


X = df[['Luas_Rumah_sqm']] # Variabel independen
y = df['Harga_Properti_USD'] # Variabel dependen

X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

print(f"Ukuran data latih X: {X_train.shape}")
print(f"Ukuran data uji X: {X_test.shape}")
print(f"Ukuran data latih y: {y_train.shape}")
print(f"Ukuran data uji y: {y_test.shape}")

Output akan menunjukkan ukuran dari masing-masing set data:


Ukuran data latih X: (80, 1)
Ukuran data uji X: (20, 1)
Ukuran data latih y: (80,)
Ukuran data uji y: (20,)

Pembentukan dan Pelatihan Model Regresi Linier

Setelah data dipersiapkan, kita dapat menginisialisasi dan melatih model regresi linier menggunakan pustaka scikit-learn.


# Inisialisasi model regresi linier
model = LinearRegression()

# Melatih model menggunakan data latih
model.fit(X_train, y_train)

# Mendapatkan koefisien dan intercept
intercept = model.intercept_
coefficient = model.coef_[0]

print(f"Intercept (beta_0): {intercept:.2f}")
print(f"Koefisien (beta_1) Luas_Rumah_sqm: {coefficient:.2f}")

Output akan menunjukkan nilai intercept dan koefisien yang diestimasi oleh model:


Intercept (beta_0): 51109.11
Koefisien (beta_1) Luas_Rumah_sqm: 199.12

Dari hasil ini, persamaan regresi yang diestimasi adalah: \( \text{Harga Properti} = 51109.11 + 199.12 \times \text{Luas Rumah} \). Ini berarti, untuk setiap peningkatan satu meter persegi luas rumah, harga properti diperkirakan meningkat sebesar \$199.12, dengan asumsi semua faktor lain konstan. Harga dasar properti (ketika luas rumah nol) adalah \$51109.11, meskipun interpretasi ini mungkin tidak memiliki makna fisik langsung dalam konteks ini karena luas rumah tidak mungkin nol.

Evaluasi Model

Setelah model dilatih, langkah selanjutnya adalah mengevaluasi kinerjanya menggunakan data uji. Kita akan membuat prediksi dan membandingkannya dengan nilai aktual menggunakan beberapa metrik evaluasi:

  • Mean Absolute Error (MAE): Rata-rata dari nilai absolut dari galat. MAE mengukur rata-rata besarnya galat tanpa mempertimbangkan arahnya.
  • Mean Squared Error (MSE): Rata-rata dari kuadrat galat. MSE lebih sensitif terhadap galat besar daripada MAE karena mengkuadratkan galat.
  • Root Mean Squared Error (RMSE): Akar kuadrat dari MSE. RMSE memiliki unit yang sama dengan variabel dependen, sehingga lebih mudah diinterpretasikan.
  • R-squared (R²): Mengukur proporsi varians dalam variabel dependen yang dapat dijelaskan oleh model regresi. Nilai R² berkisar antara 0 hingga 1, di mana nilai yang lebih tinggi menunjukkan model yang lebih baik.

# Melakukan prediksi pada data uji
y_pred = model.predict(X_test)

# Menghitung metrik evaluasi
mae = mean_absolute_error(y_test, y_pred)
mse = mean_squared_error(y_test, y_pred)
rmse = np.sqrt(mse)
r2 = r2_score(y_test, y_pred)

print(f"MAE: {mae:.2f}")
print(f"MSE: {mse:.2f}")
print(f"RMSE: {rmse:.2f}")
print(f"R-squared: {r2:.2f}")

Output dari metrik evaluasi:


MAE: 15309.83
MSE: 301490217.47
RMSE: 17363.53
R-squared: 0.95

Nilai R-squared sebesar 0.95 menunjukkan bahwa sekitar 95% variasi dalam harga properti dapat dijelaskan oleh luas rumah dalam model ini. Ini adalah indikasi model yang sangat baik dalam kasus data sintetis ini. RMSE sebesar \$17363.53 berarti bahwa, rata-rata, prediksi harga properti kita menyimpang sekitar \$17363.53 dari harga aktual.

Visualisasi Hasil Prediksi

Memvisualisasikan garis regresi yang diprediksi di atas data sebar asli dapat memberikan pemahaman intuitif tentang seberapa baik model sesuai dengan data.


plt.figure(figsize=(10, 6))
plt.scatter(X_test, y_test, color='blue', label='Nilai Aktual')
plt.plot(X_test, y_pred, color='red', linewidth=2, label='Garis Regresi Prediksi')
plt.title('Prediksi Harga Properti vs. Luas Rumah')
plt.xlabel('Luas Rumah (meter persegi)')
plt.ylabel('Harga Properti (USD)')
plt.legend()
plt.grid(True)
plt.show()

Plot ini menunjukkan garis regresi (merah) yang melewati titik-titik data aktual (biru) di set pengujian, mengilustrasikan bagaimana model berusaha untuk meminimalkan jarak vertikal antara garis dan titik-titik data.

Pertimbangan Lanjutan dan Batasan

Meskipun regresi linier adalah alat yang ampuh, penting untuk memahami batasan-batasannya. Studi kasus di atas menggunakan data sintetis dengan hubungan linier yang jelas, sehingga model regresi linier bekerja sangat baik. Dalam skenario dunia nyata, data jarang sesempurna itu:

  • Non-linieritas: Hubungan antara variabel mungkin tidak selalu linier. Dalam kasus tersebut, teknik regresi non-linier atau transformasi variabel mungkin diperlukan.
  • Outliers: Titik data ekstrem dapat secara signifikan mempengaruhi garis regresi dan koefisien yang diestimasi. Identifikasi dan penanganan outliers adalah langkah penting dalam pra-pemrosesan data.
  • Variabel Luar: Dalam prediksi harga properti, banyak faktor lain seperti jumlah kamar tidur, lokasi, fasilitas, usia bangunan, dll., yang dapat mempengaruhi harga. Model regresi linier berganda akan lebih relevan dalam kasus tersebut.
  • Overfitting/Underfitting: Penting untuk memastikan model tidak terlalu kompleks (overfitting) atau terlalu sederhana (underfitting). Validasi silang (cross-validation) adalah teknik yang umum digunakan untuk mengevaluasi kinerja model secara lebih robust.

Sebagai penutup, regresi linier merupakan fondasi penting dalam analisis data dan pembelajaran mesin. Dengan pemahaman yang kuat tentang prinsip-prinsipnya, asumsi-asumsinya, dan implementasinya menggunakan alat seperti Python dan scikit-learn, analis dapat memperoleh wawasan berharga dan membuat prediksi yang informatif dari data mereka. Namun, selalu krusial untuk mengingat konteks data dan batasan model untuk interpretasi hasil yang akurat dan pengambilan keputusan yang tepat.

Next Post Previous Post
No Comment
Add Comment
comment url
sr7themes.eu.org