Keinginan untuk memiliki properti sendiri merupakan impian banyak orang. Selain bisa dijadikan tempat tinggal, memiliki properti di Jakarta dan Depok adalah salah satu aset investasi yang menguntungkan karena harganya yang cenderung naik setiap tahunnya.
Dalam proses pencarian tempat tinggal idaman ini, beberapa orang mungkin saja mengalami hambatan, yaitu kesulitan dalam mencari tempat tinggal yang sesuai dengan spesifikasi yang diinginkan dan budget yang dimiliki. Banyak orang menemukan tempat tinggal dengan harga yang cukup mahal namun tidak sesuai dengan spesifikasi yang ditawarkan.
“Ada gak sih kira-kira sistem yang dapat memberikan referensi harga properti?” menjadi tujuan analisis pada Dive Deeper ini.
Kita akan gunakan data properti_jual.csv
yang tersimpan
di folder data_dd. Data yang diambil adalah data hasil scrapping dari
website https://www.rumah123.com/
properti <- read.csv("data_dd/properti_jual.csv")
head(properti)
## K..Mandi K..Tidur L..Bangunan Sertifikat Tipe.Properti
## 0 3 4 294 SHM - Sertifikat Hak Milik Rumah
## 1 3 3 78 SHM - Sertifikat Hak Milik Apartemen
## 2 1 1 33 HGB - Hak Guna Bangunan Apartemen
## 3 2 2 120 SHM - Sertifikat Hak Milik Rumah
## 4 3 3 130 SHM - Sertifikat Hak Milik Rumah
## 5 1 1 97 Lainnya (PPJB,Girik,Adat,dll) Apartemen
## Kota Price
## 0 Jakarta Utara 3.50e+09
## 1 Jakarta Selatan 2.50e+09
## 2 Jakarta Timur 2.65e+08
## 3 Jakarta Pusat 2.60e+09
## 4 Depok 1.30e+09
## 5 Jakarta Barat 3.20e+09
Berikut deskripsi variabel dari data tersebut: -
K..Mandi
: Jumlah kamar mandi pada suatu properti
K..Tidur
: Jumlah kamar tidur pada suatu
properti
L..Bangunan
: Luas bangunan properti (m2)
Sertifikat
: Jenis sertifikat atas properti yang di
jual
Sertifikat Hak Pakai
Sertifikat Hak Sewa
Sertifikat lainnya (PPJB, Girik, Adat, dll)
Sertifikat PPJB
Sertifikat Hak Milik
Tipe.Properti
: Jenis properti yang dijual
Rumah
: Untuk tipe properti rumahApartemen
: Untuk tipe properti apartemenKota
: Lokasi kota tempat properti di jual
Depok
Jakarta Selatan
Jakarta Timur
Jakarta Utara
Jakarta Barat
Jakarta Pusat
Tangerang Selatan
Price
: Nominal harga properti yang dijual
❓ Manakah data yang belum tepat tipe datanya?
library(dplyr)
##
## Attaching package: 'dplyr'
## The following objects are masked from 'package:stats':
##
## filter, lag
## The following objects are masked from 'package:base':
##
## intersect, setdiff, setequal, union
glimpse(properti)
## Rows: 6,287
## Columns: 7
## $ K..Mandi <int> 3, 3, 1, 2, 3, 1, 1, 1, 4, 3, 1, 2, 3, 1, 2, 4, 2, 1, 1,…
## $ K..Tidur <int> 4, 3, 1, 2, 3, 1, 1, 2, 4, 3, 2, 2, 3, 2, 2, 3, 2, 2, 1,…
## $ L..Bangunan <int> 294, 78, 33, 120, 130, 97, 23, 42, 160, 85, 40, 70, 110,…
## $ Sertifikat <chr> "SHM - Sertifikat Hak Milik", "SHM - Sertifikat Hak Mili…
## $ Tipe.Properti <chr> "Rumah", "Apartemen", "Apartemen", "Rumah", "Rumah", "Ap…
## $ Kota <chr> "Jakarta Utara", "Jakarta Selatan", "Jakarta Timur", "Ja…
## $ Price <dbl> 3.50e+09, 2.50e+09, 2.65e+08, 2.60e+09, 1.30e+09, 3.20e+…
properti <- properti %>%
mutate_if(is.character, as.factor)
glimpse(properti)
## Rows: 6,287
## Columns: 7
## $ K..Mandi <int> 3, 3, 1, 2, 3, 1, 1, 1, 4, 3, 1, 2, 3, 1, 2, 4, 2, 1, 1,…
## $ K..Tidur <int> 4, 3, 1, 2, 3, 1, 1, 2, 4, 3, 2, 2, 3, 2, 2, 3, 2, 2, 1,…
## $ L..Bangunan <int> 294, 78, 33, 120, 130, 97, 23, 42, 160, 85, 40, 70, 110,…
## $ Sertifikat <fct> "SHM - Sertifikat Hak Milik", "SHM - Sertifikat Hak Mili…
## $ Tipe.Properti <fct> Rumah, Apartemen, Apartemen, Rumah, Rumah, Apartemen, Ap…
## $ Kota <fct> Jakarta Utara, Jakarta Selatan, Jakarta Timur, Jakarta P…
## $ Price <dbl> 3.50e+09, 2.50e+09, 2.65e+08, 2.60e+09, 1.30e+09, 3.20e+…
library(GGally)
## Loading required package: ggplot2
## Registered S3 method overwritten by 'GGally':
## method from
## +.gg ggplot2
ggcorr(properti, label = TRUE)
## Warning in ggcorr(properti, label = TRUE): data in column(s) 'Sertifikat',
## 'Tipe.Properti', 'Kota' are not numeric and were ignored
💡Insight :
Price
adalah Luas Bangunan
Coba lakukan pembentukan model dengan keseluruhan variabel prediktor
model_all <- lm(Price ~ ., data = properti)
summary(model_all)
##
## Call:
## lm(formula = Price ~ ., data = properti)
##
## Residuals:
## Min 1Q Median 3Q Max
## -6.741e+09 -3.851e+08 -1.127e+08 2.613e+08 3.954e+09
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) -103500776 41061065 -2.521 0.0117
## K..Mandi 89422402 18268163 4.895 1.01e-06
## K..Tidur 103745234 16914121 6.134 9.11e-10
## L..Bangunan 13659934 228673 59.736 < 2e-16
## SertifikatHP - Hak Pakai -185644260 124504582 -1.491 0.1360
## SertifikatHS - Hak Sewa -295223961 318008806 -0.928 0.3533
## SertifikatLainnya (PPJB,Girik,Adat,dll) 41371839 31531506 1.312 0.1895
## SertifikatPPJB -161517621 502101218 -0.322 0.7477
## SertifikatSHM - Sertifikat Hak Milik -70251816 30627540 -2.294 0.0218
## Tipe.PropertiRumah -323483239 30490591 -10.609 < 2e-16
## KotaJakarta Barat 408778315 32866753 12.437 < 2e-16
## KotaJakarta Pusat 541558140 38218742 14.170 < 2e-16
## KotaJakarta Selatan 809639863 37896650 21.364 < 2e-16
## KotaJakarta Timur -2317356 30993739 -0.075 0.9404
## KotaJakarta Utara 362759231 37698697 9.623 < 2e-16
## KotaTangerang Selatan 274005320 32583828 8.409 < 2e-16
##
## (Intercept) *
## K..Mandi ***
## K..Tidur ***
## L..Bangunan ***
## SertifikatHP - Hak Pakai
## SertifikatHS - Hak Sewa
## SertifikatLainnya (PPJB,Girik,Adat,dll)
## SertifikatPPJB
## SertifikatSHM - Sertifikat Hak Milik *
## Tipe.PropertiRumah ***
## KotaJakarta Barat ***
## KotaJakarta Pusat ***
## KotaJakarta Selatan ***
## KotaJakarta Timur
## KotaJakarta Utara ***
## KotaTangerang Selatan ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 708400000 on 6271 degrees of freedom
## Multiple R-squared: 0.6817, Adjusted R-squared: 0.6809
## F-statistic: 895.4 on 15 and 6271 DF, p-value: < 2.2e-16
💡 Interpretasi Model
1. Significant Predictor - variabel signifikan (p-value < 0.05) : Keseluruhan prediktor - variabel tidak signifikan (p-value < 0.05) : -
note: - untuk prediktor kategorik, dianggap signifikan mempengaruhi target jika salah satu kategori signifikan - Apabila ada 1 variabel berjenis kategorik dan dia tidak signifikan, silahkan: 1. Cek kembali banyaknya data untuk kategori yang tidak signifikan -> kalau sedikit bisa usahakan untuk tambah data. 2. Bisa take out salah satu kategori yang membuat tidak signifikan.
2. Interpretasi Coefficient - Untuk Variabel numerik
+ Interpretasi L..Bangunan
: Dengan asumsi variabel lain
tetap, peningkatan 1 m2 luas bangunan akan meningkatkan harga properti
sebesar 13,659,933.672
Kota Tangerang Selatan
: Apabila kita
memiliki properti di Tangerang selatan harga properti akan meningkat
sebesar 274,005,320 dibandingkan dengan harga properti di depok, dengan
asumsi variabel lainnya tetap.3. Goodness of fit (adj R-Squared) - Sebesar 68,09% dari variansi/keberagaman variabel target dapat dijelaskan oleh model.
Lakukan model evaluasi berdasarkan hasil prediksi model menggunakan nilai RMSE Apakah nilai RMSE cukup kecil dibandingkan dengan range target variabel?
# RMSE
y_pred <- predict(model_all, newdata = properti)
library(MLmetrics)
##
## Attaching package: 'MLmetrics'
## The following object is masked from 'package:base':
##
## Recall
RMSE(y_pred = y_pred, y_true = properti$Price)
## [1] 707517644
# Range target variable
range(properti$Price)
## [1] 2.05e+08 5.97e+09
💡 Insight: Dari RMSE, model_all dengan keseluruhan prediktor masih kurang baik. Karena memiliki error yang cukup besar