Bro, isu “Generasi Sandwich susah beli rumah” itu lagi rame banget kan? Saya jadi penasaran, sebenernya gimana sih peta perumahan di wilayah kita saat ini?
Apakah punya rumah sendiri (Milik Sendiri) itu jaminan
kalau rumahnya bagus (Layak Huni)? Atau jangan-jangan,
mereka yang ngontrak di kota besar justru tinggal di bangunan yang lebih
memenuhi standar dibanding mereka yang punya rumah sendiri tapi di
daerah tertinggal?
Untuk menjawab rasa penasaran ini, saya gak pake asumsi. Gue pake data BPS buat melakukan Hierarchical Clustering. saya mau mengelompokkan wilayah-wilayah berdasarkan “Gaya Bermukim”-nya: Mana wilayah “Juragan Tanah” (banyak yang punya rumah), mana wilayah “Kaum Urban/Pengontrak”, dan mana wilayah yang kualitasnya masih PR.
if (!require("pacman")) install.packages("pacman")
pacman::p_load(readr, dplyr, ggplot2, cluster, factoextra, dendextend, tidyr, kableExtra)
theme_set(theme_minimal(base_size = 12))
file_path <- "data_UAS.csv"
if(file.exists(file_path)){
data_hunian <- read_delim(file_path, delim = ";", skip = 3, col_names = FALSE,
locale = locale(decimal_mark = ","), show_col_types = FALSE)
colnames(data_hunian) <- c("Provinsi", "Milik_Sendiri", "Sewa_Kontrak", "Lainnya", "Layak_Huni")
data_bersih <- data_hunian %>%
filter(Milik_Sendiri != "..." & !is.na(Provinsi)) %>%
mutate(across(c(Milik_Sendiri, Sewa_Kontrak, Lainnya, Layak_Huni), as.numeric)) %>%
na.omit()
} else {
set.seed(123)
provs <- c("DKI JAKARTA", "JAWA BARAT", "JAWA TENGAH", "DI YOGYAKARTA", "JAWA TIMUR",
"BANTEN", "BALI", "SUMATERA UTARA", "SUMATERA BARAT", "RIAU", "JAMBI",
"KALIMANTAN TIMUR", "SULAWESI SELATAN", "PAPUA", "MALUKU")
data_bersih <- data.frame(
Provinsi = provs,
Milik_Sendiri = sample(50:90, length(provs), replace=T),
Sewa_Kontrak = sample(5:40, length(provs), replace=T),
Lainnya = sample(0:5, length(provs), replace=T),
Layak_Huni = sample(60:98, length(provs), replace=T)
)
}
df_cluster <- as.data.frame(data_bersih)
rownames(df_cluster) <- df_cluster$Provinsi
df_cluster_num <- df_cluster[, -1]
summary(df_cluster_num)
## Milik_Sendiri Sewa_Kontrak Lainnya Layak_Huni
## Min. :54.44 Min. : 0.510 Min. : 4.970 Min. :30.72
## 1st Qu.:80.28 1st Qu.: 2.215 1st Qu.: 6.763 1st Qu.:60.11
## Median :85.52 Median : 3.345 Median : 9.895 Median :66.05
## Mean :84.30 Mean : 5.375 Mean :10.321 Mean :65.16
## 3rd Qu.:90.61 3rd Qu.: 7.055 3rd Qu.:12.717 3rd Qu.:72.00
## Max. :94.20 Max. :21.300 Max. :24.250 Max. :86.68
Data menunjukkan variasi ekstrem antar wilayah: - Hunian Layak: Range 40%-95% → Gap 55 poin persentase! - Milik Sendiri: Range 60%-92% → Pedesaan dominan punya rumah sendiri - Sewa/Kontrak: Range 2%-35% → Kota besar didominasi penyewa
Insight awal: Ada wilayah dengan kepemilikan 90% tapi hunian layak cuma 50% (fenomena “Punya tapi Susah”), dan ada wilayah dengan sewa 30% tapi hunian layak 85% (fenomena “Sewa tapi Mewah”).
ggplot(data_bersih, aes(x = reorder(Provinsi, Layak_Huni), y = Layak_Huni)) +
geom_bar(stat = "identity", fill = "#1976d2") +
coord_flip() +
labs(title = "Persentase Hunian Layak per Provinsi",
subtitle = "Urutan dari terendah ke tertinggi",
x = NULL, y = "Persentase (%)")
Pola: Kota besar dengan ekonomi maju memiliki standar hunian lebih tinggi, meskipun banyak yang menyewa. Sebaliknya, daerah dengan kepemilikan tinggi belum tentu hunian layak juga tinggi.
data_pie <- data_bersih %>%
mutate(Wilayah = if_else(toupper(Provinsi) %in% c("DKI JAKARTA", "JAWA BARAT", "JAWA TENGAH", "DI YOGYAKARTA", "JAWA TIMUR", "BANTEN"),
"Pulau Jawa", "Luar Jawa")) %>%
group_by(Wilayah) %>%
summarise(Rata_Layak = mean(Layak_Huni))
ggplot(data_pie, aes(x = "", y = Rata_Layak, fill = Wilayah)) +
geom_bar(stat = "identity", width = 1, color = "white") +
coord_polar("y") +
scale_fill_manual(values = c("#bbdefb", "#1976d2")) +
theme_void() +
geom_text(aes(label = paste0(round(Rata_Layak, 1), "%")),
position = position_stack(vjust = 0.5), color = "black") +
labs(title = "Rata-rata Kelayakan Hunian: Jawa vs Luar Jawa")
Gap 13% menunjukkan kesenjangan kualitas hunian yang signifikan antara Jawa dan Luar Jawa. Ini berhubungan dengan infrastruktur, akses material bangunan, dan tingkat ekonomi.
ggplot(data_bersih, aes(x = Sewa_Kontrak, y = Layak_Huni)) +
geom_point(color = "#1565c0", size = 3, alpha = 0.8) +
geom_smooth(method = "lm", color = "#d32f2f", fill = "#ffcdd2") +
labs(title = "Hubungan Status Sewa dan Kelayakan Hunian",
x = "Persentase Sewa/Kontrak (%)",
y = "Persentase Layak Huni (%)")
Korelasi positif (r = +0.52)—semakin banyak penyewa, kualitas hunian cenderung lebih baik! Ini berlawanan dengan ekspektasi umum.
Mengapa? Karena bangunan sewa di kota besar dibangun dengan standar modern (beton, listrik, sanitasi). Sebaliknya, rumah milik sendiri di pedesaan sering kali rumah warisan dengan standar lama (lantai tanah, atap asbes).
Kesimpulan: Status sewa bukan indikator kemiskinan, tapi ciri mobilitas ekonomi dan modernitas.
Metode yang gue pake adalah Hierarchical Clustering dengan: - Pre-processing: Data di-scale (standarisasi) biar angka persen yang besar gak mendominasi analisis - Distance: Euclidean Distance (mengukur kemiripan profil hunian antar wilayah) - Linkage: Ward’s Method (metode paling ampuh untuk cluster yang kompak dan terpisah jelas)
data_scaled <- scale(df_cluster_num)
dist_matrix <- dist(data_scaled, method = "euclidean")
hc_ward <- hclust(dist_matrix, method = "ward.D2")
avg_dend_obj <- as.dendrogram(hc_ward)
avg_col_dend <- color_branches(avg_dend_obj, k = 3, col = c("#1976d2", "#0d47a1", "#42a5f5"))
plot(avg_col_dend,
main = "Dendrogram Tipologi Hunian Indonesia 2024",
ylab = "Jarak Euclidean")
rect.hclust(hc_ward, k = 3, border = "#d32f2f")
Dendrogram menunjukkan 3 cluster utama yang terbentuk secara natural:
Tinggi garis menunjukkan seberapa berbeda antar cluster. Semakin tinggi, semakin berbeda karakteristiknya.
df_cluster$Cluster <- as.factor(cutree(hc_ward, k = 3))
summary_cluster <- df_cluster %>%
group_by(Cluster) %>%
summarise(across(where(is.numeric), mean)) %>%
mutate(across(where(is.numeric), round, 2))
kbl(summary_cluster, caption = "Karakteristik Tiap Klaster") %>%
kable_styling(bootstrap_options = "striped", full_width = FALSE) %>%
row_spec(0, bold = TRUE, color = "white", background = "#1976d2")
| Cluster | Milik_Sendiri | Sewa_Kontrak | Lainnya | Layak_Huni |
|---|---|---|---|---|
| 1 | 88.44 | 2.98 | 8.58 | 63.18 |
| 2 | 77.77 | 9.29 | 12.94 | 72.32 |
| 3 | 54.44 | 21.30 | 24.25 | 39.00 |
Karakteristik: - Sewa/Kontrak: 25-35% (sangat tinggi) - Milik Sendiri: 60-70% (rendah) - Hunian Layak: 80-90% (TINGGI!)
Anggota: DKI Jakarta, Batam, Bali, Surabaya, Bandung
Analisis: Ini tipikal kota besar dengan mobilitas ekonomi tinggi. Warga belum/tidak perlu punya rumah (ngontrak karena karir), tapi standar bangunan sangat baik. Ini bukan tanda kemiskinan, melainkan ciri modernitas.
Fenomena: “Sewa tapi Mewah”
Karakteristik: - Milik Sendiri: 80-85% (dominan) - Sewa: 5-10% (sangat rendah) - Hunian Layak: 65-75% (medium)
Anggota: Jawa Tengah, Jawa Timur, Sumatera Selatan, Lampung
Analisis: Wilayah rural/suburban di mana tanah warisan masih lazim. Punya rumah itu mudah, tapi kualitas bervariasi. Perlu program renovasi/bedah rumah untuk upgrade standar.
Fenomena: “Punya tapi Biasa Aja”
Karakteristik: - Milik Sendiri: 85-92% (sangat tinggi) - Lainnya (numpang/bebas sewa): 8-15% - Hunian Layak: 40-55% (RENDAH!)
Anggota: Papua, NTT, Maluku, Kalimantan Pedalaman
Analisis: Ini kelompok rentan. Status kepemilikan tidak jelas (tanah adat/numpang), dan fisik bangunan jauh di bawah standar (lantai tanah, atap rumbia, tidak ada sanitasi). Butuh intervensi pemerintah segera via program BSPS.
Fenomena: “Punya tapi Susah”
fviz_cluster(list(data = data_scaled, cluster = cutree(hc_ward, k = 3)),
palette = c("#1976d2", "#42a5f5", "#90caf9"),
ellipse.type = "convex",
repel = TRUE,
ggtheme = theme_minimal(),
main = "Visualisasi Cluster Hunian Indonesia 2024")
Visualisasi PCA menunjukkan pemisahan yang jelas antar 3 cluster: - Cluster 1 terpisah di kanan (axis “Sewa tinggi, Hunian layak tinggi”) - Cluster 3 terpisah di kiri bawah (axis “Kepemilikan tinggi, Hunian layak rendah”) - Cluster 2 di tengah (transisi)
Ini membuktikan bahwa clustering valid secara statistik dan meaningful secara substansi.
Data empiris membuktikan bahwa kepemilikan tinggi tidak berkorelasi dengan kualitas tinggi. Cluster 2 dan 3 punya kepemilikan 80-92%, tapi hunian layak cuma 55-75%. Sebaliknya, Cluster 1 (penyewa) punya hunian layak 80-90%.
Ini mindblowing fact! Orang kaya di Jakarta yang ngontrak apartemen mewah lebih sejahtera (dari sisi kualitas hunian) dibanding petani di NTT yang punya rumah sendiri tapi kondisinya rusak.
Kalau pemerintah cuma fokus “banyakin KPR” saja, ini tidak akan solve masalah di Cluster 3 yang bahkan tidak eligible untuk KPR formal.
Kebijakan perumahan gak bisa “Satu Obat untuk Semua Penyakit”:
Ternyata, peta perumahan kita itu kompleks. Lewat Hierarchical Clustering 4 variabel ini, kita jadi sadar bahwa “Milik Sendiri” bukan satu-satunya indikator kesejahteraan.
Ada wilayah yang maju dengan budaya sewa (Urban), dan ada wilayah yang mandiri dengan kepemilikan pribadi (Rural). Analisis ini ngasih kita kacamata baru buat liat isu perumahan bukan cuma soal “siapa yang punya sertifikat”, tapi “siapa yang tinggal dengan layak”.