library(readr)
## Warning: package 'readr' was built under R version 4.3.3
data = read.csv("C:/Users/ASUS/Downloads/dkikepadatankelurahan2013.csv", sep = ";")

# Ganti nama variabel data
colnames(data)[c(1:7)] = c("Tahun", "Prov", "Kab", "Kec", "Kel", "Luas", "Kepadatan")

# Visualisasi data menggunakan lattice package
library(lattice)
xyplot(Kepadatan ~ Luas, data,
       type = "p", pch = 16,
       xlab = expression(paste("Luas (", Km^2,")")),
       ylab = expression(paste("Kepadatan (Jiwa/", Km^2, ")")),
       main = "Kepadatan Kelurahan",
       col = "rosybrown")

Visualisasi di atas menunjukkan hubungan antara luas wilayah dalam satuan Km² dengan Kepadatan penduduk dalam satuan Jiwa/Km². Berdasarkan hasil scatter plot tersebut, dapat diinterpretasikan bahwa wilayah dengan luas yang relatif kecil cenderung memiliki tingkat kepadatan penduduk yang lebih tinggi. Dan sebaliknya, semakin luas suatu wilayah maka semakin rendah tingkat kepadatan penduduknya. Pola ini  dapat terlihat dari persebaran titik pada grafik yang mana titik-titik cenderung mendominasi bagian kiri grafik dari bawah sampai atas. Sementara itu, di bagian kanan grafik semakin sedikit titik yang berada pada nilai kepadatan yang tinggi. Dengan demikian dapat disimpulkan bahwa hubungan antara luas wilayah dan kepadatan penduduk Kelurahan DKI 2013 berbanding terbalik.
# Visualisasi data menggunakan latticeExtra package
library(latticeExtra)
xyplot(Kepadatan ~ Luas | factor(Kab), data = data,
       layout = c(3,2), aspect = 1, pch = 16,
       xlab = expression(paste("Luas (", Km^2,")")),
       ylab = expression(paste("Kepadatan (Jiwa/", Km^2,")")),
       main = "Hubungan Luas Wilayah dan Kepadatan Penduduk per Kabupaten") +
  layer(panel.abline(h = 50000, lty = "dashed")) + 
  layer(panel.text(10, 50000, "Efficiency Criterion",
                   adj = c(1,0), cex = 0.7))

Berdasarkan hasil pada gambar di atas, dapat dilihat persebaran kepadatan penduduk di keenam kabupaten/kota secara terpisah. Secara umum keenam kabupatan/kota memiliki hubungan yang berbanding terbalik antara luas dengan kepadatan penduduk. Pada kota Jakarta Utara dan Kabupaten Kepulauan Seribu, seluruh titiknya berada di bawah garis efficiency criterion yang berarti bahwa kedua wilayah tersebut kepadatan penduduknya masih di bawah batas 50.000 Jiwa/ Km². Selain itu, persebaran titiknya yang relatif jarang menunjukkan bahwa jumlah penduduknya masih lebih sedikit dibandingkan yang lain. Sementara Kota Jakarta Timur, Jakarta Barat, Jakarta Pusat, dan Jakarta Selatan terdapat beberapa titik yang melewati garis efficiency criterion yang menunjukkan bahwa di wilayah tersebut tingkat kepadatan penduduknya melebihi 50.000 Jiwa/ Km². Ditambah lagi dengan persebaran titiknya yang banyak dan berdekatan mengindikasikan konsentrasi penduduk yang tinggi di wilayah ini.
xyplot(Kepadatan ~ Luas, data = data, group = Kab,
       layout = c(1,1), aspect = 1, pch = 16, 
       auto.key = list(points = TRUE, pch = 16, columns = 3),
       xlab = expression(paste("Luas (", Km^2,")")),
       ylab = expression(paste("Kepadatan (Jiwa/", Km^2,")")),
       main = "Kepadatan Penduduk DKI Jakarta berdasarkan Kategori Wilayah") +
  layer(panel.abline(h = 50000, lty = "dashed")) + 
  layer(panel.text(10, 50000, "Efficiency Criterion",
                   adj = c(1,0), cex = 0.7))

Hampir sama dengan versi 1 yang menampilkan hubungan luas dengan kepadatan untuk masing-masing kabupaten/kota hanya saja versi 2 seluruh kabupaten/kota dijadikan satu panel dengan pembeda warna. Syntaxnya sekilas sama hanya berbeda di bagian group = Kab yang berarti mengelompokkan kabupaten/kota yang ada menjadi satu panel. Selanjutnya terdapat tambahan fungsi auto.key untuk memberikan keterangan dari masing-masing warna yang mewakili keenam kabupaten/kota.
ecdfplot(~Kepadatan | Kab, data, layout = c(2,3), col = "darkgreen",
         xlab = "Kepadatan Penduduk",
         ylab = "Probabilitas Kumulatif",
         main = "Kepadatan Penduduk per Kabupaten")

Berdasarkan hasil visualisasi Empirical Cumulative Distribution Function (ECDF), terlihat perbedaan karakteristik sebaran kepadatan penduduk yang cukup signifikan antar wilayah di DKI Jakarta. Pada Kabupaten Administrasi Kepulauan Seribu, kurva meningkat sangat tajam dan mencapai probabilitas kumulatif 1.0 pada nilai kepadatan yang rendah. Hal ini mengindikasikan bahwa seluruh wilayah di kabupaten tersebut memiliki kepadatan penduduk yang homogen dan relatif kecil. Sebaliknya, pada wilayah seperti Jakarta Pusat, Jakarta Barat, dan Jakarta Timur, kurva cenderung lebih landai dan memanjang ke arah kanan (nilai kepadatan tinggi). Hal ini menunjukkan adanya variasi kepadatan penduduk yang lebih lebar di wilayah-wilayah tersebut, di mana terdapat sejumlah kelurahan yang memiliki tingkat kepadatan penduduk sangat tinggi melampaui rata-rata wilayah lainnya.
marginal.plot(Kepadatan ~ Luas, data, groups = Prov, col = "grey",
              xlab = "Luas wilayah",
              ylab = "kepadatan penduduk",
              main = "Marginal Plot Kepadatan Penduduk dan Luas Wilayah")

Berdasarkan hasil visualisasi marginal plot dapat dilihat distribusi gabungan antara variabel luas wilayah dan kepadatan penduduk di Provinsi DKI Jakarta. Dari kurva densitas yang dihasilkan, terlihat bahwa konsentrasi data paling tinggi (puncak kurva) berada pada area luas wilayah yang relatif kecil dengan tingkat kepadatan penduduk yang moderat. Pola distribusi ini cenderung ke kanan (right-skewed) yang mengindikasikan bahwa mayoritas wilayah di DKI Jakarta memiliki karakteristik wilayah yang sempit namun padat penduduk. Selain itu, seiring dengan bertambahnya luas wilayah, densitas kepadatan penduduk cenderung menurun secara konsisten. Dengan demikian dapat disimpulkan adanya hubungan negatif, di mana kelurahan yang memiliki wilayah lebih luas justru cenderung memiliki tingkat kepadatan penduduk yang lebih rendah.