Analisis regresi linier berganda pada 2.724 listing properti Jabodetabek (dari 3.553 listing mentah hasil scraping Rumah123 — dataset Kaggle "Daftar Harga Rumah Jabodetabek"), dengan penekanan pada validitas inferensial: uji asumsi klasik lengkap, transformasi Box–Cox, diagnostik autokorelasi spasial, dan pemilihan model berbasis kriteria informasi.
📄 Laporan lengkap: reports/index.html (buka langsung di browser — semua gambar tertanam).
📘 Panduan penulisan ulang langkah-demi-langkah: PANDUAN_PYTHON.md
- Berapa besar elastisitas harga terhadap luas tanah vs luas bangunan?
- Seberapa besar premium lokasi (Jakarta vs Bodetabek)?
- Apakah status sertifikat (SHM vs HGB) berpengaruh signifikan terhadap harga?
| Tahap | Metode | Temuan aktual |
|---|---|---|
| Deduplikasi | kunci (harga, luas, koordinat) | 714 iklan ganda dibuang (3.442 → 2.728) |
| Missing value | klasifikasi MCAR/MAR/MNAR | carports MNAR → 0; electricity MAR → median per kota; building_age 37% → median + flag |
| Transformasi | Box–Cox | λ̂ = 0,040 → spesifikasi log–log |
| Multikolinearitas | VIF / GVIF^½ᵈᶠ (Fox–Monette) | triad land × building × ratio: GVIF 38,6 → 8,2 setelah ratio_bld dibuang |
| Heteroskedastisitas | Breusch–Pagan, White, NCV | signifikan (p≪0,001) → robust SE HC3; SE elastisitas membesar s.d. 2× |
| Normalitas | Q-Q plot + skew/kurtosis (bukan hanya Shapiro) | ekor agak berat; CLT + HC3 → inferensi tetap valid |
| Autokorelasi | Moran's I (bukan sekadar Durbin–Watson) | I = 0,167 (p=0,001) → 0,005 (p=0,249) setelah remedi spasial |
| Outlier | Cook's D + leverage + analisis sensitivitas | buang 160 obs → elastisitas inti bergeser hanya 1–7% → robust |
| Seleksi model | stepwise AIC vs BIC + 10-fold CV | BIC dipilih (21 parameter, tujuan inferensial); CV berselisih hanya 0,007 dari model AIC |
| Faktor | Estimasi | Interpretasi |
|---|---|---|
| Luas tanah | β = 0,562*** | elastisitas: tanah +1% → harga +0,56% |
| Luas bangunan | β = 0,383*** | bangunan +1% → harga +0,38% |
| Harga tetangga (8 k-NN, out-of-fold) | β = 0,527*** | spillover spasial: harga/m² sekitar +1% → +0,53% |
| Jarak ke Monas (CBD) | β = −0,143*** | +1% lebih jauh → harga −0,14% |
| Jakarta Utara vs Jaksel | +12,4%*** | premium lokasi |
| Bekasi / Bogor / Depok vs Jaksel | −11,9% / −15,3% / −9,7% | diskon pinggiran |
| Sertifikat HGB vs SHM | −3,3% (n.s.) | |
| Kamar tidur (luas dikontrol) | −3,5%/kamar** | kamar makin banyak di luas sama = kamar sempit |
| Kamar mandi / lantai / umur | +5,8% / +14,3% / −0,6% per tahun | semua signifikan |
RMSE 10-fold CV (log) = 0,336 → kesalahan tipikal ≈ ±40% dari harga listing.
- Data = harga penawaran, bukan harga transaksi → potensi bias ke atas.
- Cross-section satu periode → asosiasi, bukan kausalitas.
- Omitted variables: akses jalan, banjir, sekolah, keamanan.
nbr_priceadalah proxy dependensi spasial; pengembangan lanjut: SAR/SDM sejati (spreg) / GWR.
pip install -r requirements.txt
python scripts/01_clean_data.py # cleaning + feature engineering
python scripts/02_eda.py # eksplorasi + grafik
python scripts/03_modeling.py # Box-Cox + uji asumsi + remedi
python scripts/04_model_selection.py # stepwise AIC/BIC + 10-fold CV
python scripts/05_build_report.py # membangkitkan reports/index.html├── README.md · PANDUAN_PYTHON.md · requirements.txt
├── data/{raw,processed}/ # CSV mentah + hasil cleaning (pkl)
├── scripts/00_scrape_polite.py # contoh scraping etis (tidak dijalankan)
├── scripts/01…05 # pipeline analisis (urut, terotomatisasi)
├── src/helpers.py # haversine, GVIF Fox–Monette, stepwise, CV, Moran
├── figures/ results/ # grafik PNG + seluruh statistik (JSON)
└── reports/index.html # 📄 laporan akhir
Stack: pandas · statsmodels · scipy · scikit-learn · libpysal + esda (PySAL) · matplotlib
Sumber data mirror: CSV Kaggle "Daftar Harga Rumah Jabodetabek" via repo GitHub
januarpancaran/jabodetabek-house-price-prediction. Untuk keperluan edukasi.