1. Pendahuluan

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]

2. Exploratory Data Analysis (EDA)

2.1 Statistik Deskriptif

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

Interpretasi Deskripsi Data:

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”).

2.2 Bar Chart: Hunian Layak per Provinsi

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 (%)")

Interpretasi Bar Chart:

  • Jakarta, Batam, Surabaya: Hunian layak tinggi (80-90%)
  • NTT, Maluku, Papua: Hunian layak rendah (40-55%)
  • Jawa Tengah, Jawa Timur: Balanced—Layak huni moderat (70-75%)

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.

2.3 Pie Chart: Jawa vs Luar Jawa

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")

Interpretasi Pie Chart:

  • Pulau Jawa: Hunian layak rata-rata 78%
  • Luar Jawa: Hunian layak rata-rata 65%

Gap 13% menunjukkan kesenjangan kualitas hunian yang signifikan antara Jawa dan Luar Jawa. Ini berhubungan dengan infrastruktur, akses material bangunan, dan tingkat ekonomi.

2.4 Scatterplot: Sewa vs Hunian Layak

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 (%)")

Interpretasi Scatterplot:

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.

3. Hierarchical Clustering

3.1 Metodologi

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)

3.2 Dendrogram

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")

Interpretasi Dendrogram:

Dendrogram menunjukkan 3 cluster utama yang terbentuk secara natural:

  1. Cluster Biru Gelap (Kanan): Wilayah dengan sewa tinggi, hunian layak tinggi
  2. Cluster Biru Sedang (Tengah): Wilayah dengan kepemilikan tinggi, hunian layak medium
  3. Cluster Biru Muda (Kiri): Wilayah dengan kepemilikan sangat tinggi, hunian layak rendah

Tinggi garis menunjukkan seberapa berbeda antar cluster. Semakin tinggi, semakin berbeda karakteristiknya.

3.3 Profiling Hasil Cluster

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")
Karakteristik Tiap Klaster
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

Interpretasi Cluster (“The Story”):

Cluster 1: “The Urban Renters” (Kaum Urban)

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”


Cluster 2: “The Traditional Homeowners” (Pedesaan/Kabupaten)

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”


Cluster 3: “The Vulnerable Group” (Kelompok Rentan)

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”

3.4 Biplot Cluster

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")

Interpretasi Biplot:

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.

4. Diskusi & Temuan Kunci

4.1 Temuan Utama

Temuan 1: Punya Rumah ≠ Rumah Bagus

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%.

Temuan 2: Fenomena “Sewa tapi Mewah” vs “Punya tapi Susah”

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.

Temuan 3: Kebijakan “One Size Fits All” Tidak Efektif

  • Cluster 1 butuh rent control & rusunami
  • Cluster 2 butuh KPR renovasi & subsidi material
  • Cluster 3 butuh bantuan penuh & legalisasi lahan

Kalau pemerintah cuma fokus “banyakin KPR” saja, ini tidak akan solve masalah di Cluster 3 yang bahkan tidak eligible untuk KPR formal.

4.2 Implikasi Kebijakan

Kebijakan perumahan gak bisa “Satu Obat untuk Semua Penyakit”:

  • Cluster 1: Butuh regulasi harga sewa dan rusunami (untuk mengubah sewa jadi milik)
  • Cluster 2: Program KPR renovasi dengan bunga rendah + subsidi material
  • Cluster 3: Program BSPS (Bantuan Stimulan Perumahan Swadaya) untuk bedah rumah gratis + legalisasi lahan adat

5. Kesimpulan

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”.

Insight Utama:

  1. Status kepemilikan bukan ukuran kesejahteraan → Yang penting adalah “tinggal dengan layak”, bukan “punya sertifikat”
  2. Ada 3 tipologi hunian yang berbeda karakteristik dan solusinya
  3. Kesenjangan kualitas hunian antara urban-rural masih sangat besar (gap 30-40%)

Rekomendasi Strategis:

  • Short-term: Bantuan bedah rumah untuk Cluster 3 (target 100 ribu rumah/tahun)
  • Medium-term: KPR renovasi & subsidi material untuk Cluster 2
  • Long-term: Bangun ekosistem perumahan yang adil (rent control + rusunami + legalisasi tanah adat)

Laporan ini dibuat menggunakan R Markdown. Data bersumber dari Badan Pusat Statistik (BPS) tahun 2024.