Diunggah oleh: Syahril Amri — 3337260021
Anggota Kelompok 5:
Kelompok kami memilih untuk menganalisis data kesehatan yang bersumber dari Badan Pusat Statistik (BPS), dengan fokus pada jumlah kematian menurut provinsi dan penyebab utama kematian sejak 1 Juli 2022.
Data ini digunakan untuk melihat gambaran jumlah kematian berdasarkan wilayah dan penyebab utama kematian. Melalui visualisasi data, informasi yang terdapat dalam dataset dapat disajikan dalam bentuk grafik sehingga pola, perbedaan antarprovinsi, serta distribusi jumlah kematian dapat lebih mudah dipahami.
Analisis dilakukan dengan menggunakan beberapa jenis visualisasi, yaitu bar chart, histogram, dot plot, boxplot, scatter plot, peta choropleth berbasis data spasial (shapefile), serta variabel kategorik turunan (kategori risiko dan kelompok pulau). Bar chart digunakan untuk membandingkan data berdasarkan kategori, histogram digunakan untuk melihat distribusi data numerik, dot plot digunakan untuk melihat urutan nilai antarprovinsi tanpa menyiratkan tren semu, boxplot digunakan untuk melihat sebaran nilai pada tiap kategori penyebab kematian, scatter plot digunakan untuk melihat hubungan antara dua variabel numerik, sedangkan peta choropleth digunakan untuk melihat sebaran jumlah kematian secara geografis antarprovinsi.
Langkah pengerjaan tugas:
Nama Dataset: Jumlah Kematian Menurut Provinsi dan Penyebab Utama Kematian Sejak 1 Juli 2022 Sumber: Badan Pusat Statistik (BPS) - https://www.bps.go.id/id/statistics-table/1/MjI5OCMx/jumlah-kematian-menurut-provinsi-dan-penyebab-utama-kematian-sejak-1-juli-2022.html Jumlah Data: 38 provinsi dan 7 variabel utama setelah pembersihan
Data spasial (shapefile): Batas administrasi provinsi Indonesia (level 1) — sumber: GADM (https://gadm.org/download_country.html, pilih Indonesia, format Shapefile) atau Badan Informasi Geospasial (BIG, https://tanahair.indonesia.go.id/portal-web). Digunakan sebagai dasar geometri (poligon provinsi) untuk membuat peta choropleth pada bagian 3.7.
Review singkat: Dataset ini dipilih karena berisi informasi mengenai jumlah kematian berdasarkan provinsi dan penyebab utama kematian. Data tersebut relevan dengan bidang kesehatan karena dapat memberikan gambaran mengenai kondisi kematian di berbagai wilayah Indonesia. Selain itu, data yang berasal dari BPS merupakan data statistik resmi yang dapat digunakan sebagai dasar untuk melakukan analisis dan visualisasi data kesehatan. Data spasial (shapefile) ditambahkan agar sebaran jumlah kematian antarprovinsi dapat divisualisasikan secara geografis melalui peta choropleth, sehingga pola wilayah dapat terlihat lebih intuitif dibandingkan hanya dengan bar chart atau dot plot.
Data diimpor ke RStudio menggunakan fungsi read.csv().
Karena file CSV dari BPS memiliki struktur tabel dengan header
bertingkat, beberapa baris kosong, dan kolom tambahan, data awal dibaca
menggunakan header = FALSE. Fungsi head()
digunakan untuk melihat sebagian data sebelum dilakukan proses
pembersihan.
Kode:
jumlah_kematian <- read.csv(
"Jumlah_Kematian_Menurut_Provinsi-dan_Penyebab_Utama_Kematian_Sejak_1_Juli_2022.csv",
header = FALSE,
stringsAsFactors = FALSE
)
head(jumlah_kematian, 15)
Data mentah yang diimpor terdiri dari 960 observasi dan 15 variabel. Data tersebut masih mengandung judul tabel, header bertingkat, baris kosong, serta beberapa kolom tambahan yang belum diperlukan dalam analisis.
Selanjutnya, dilakukan proses pembersihan dengan mengambil baris yang berisi data 38 provinsi dan memilih variabel utama yang dibutuhkan.
Kode pembersihan data:
# Daftar 38 provinsi yang digunakan
daftar_provinsi <- c(
"Aceh", "Sumatera Utara", "Sumatera Barat", "Riau", "Jambi",
"Sumatera Selatan", "Bengkulu", "Lampung", "Bangka Belitung",
"Kepulauan Riau", "DKI Jakarta", "Jawa Barat", "Jawa Tengah",
"DI Yogyakarta", "Jawa Timur", "Banten", "Bali",
"Nusa Tenggara Barat", "Nusa Tenggara Timur", "Kalimantan Barat",
"Kalimantan Tengah", "Kalimantan Selatan", "Kalimantan Timur",
"Kalimantan Utara", "Sulawesi Utara", "Sulawesi Tengah",
"Sulawesi Selatan", "Sulawesi Tenggara", "Gorontalo",
"Sulawesi Barat", "Maluku", "Maluku Utara", "Papua Barat",
"Papua Barat Daya", "Papua", "Papua Selatan", "Papua Tengah",
"Papua Pegunungan"
)
# Mengambil baris yang berisi data 38 provinsi
data_provinsi <- jumlah_kematian[
jumlah_kematian$V1 %in% daftar_provinsi,
]
# Membuat dataset baru dengan variabel yang diperlukan
data_kematian <- data.frame(
Provinsi = data_provinsi$V1,
Penyakit_Menular = data_provinsi$V2,
Penyakit_Tidak_Menular = data_provinsi$V4,
Kecelakaan_Lalu_Lintas = data_provinsi$V5,
Kecelakaan_Lainnya = data_provinsi$V7,
Lainnya = data_provinsi$V9,
Jumlah = data_provinsi$V11,
stringsAsFactors = FALSE
)
# Membersihkan angka: hapus titik pemisah ribuan, dan ubah tanda "-"
# (kode BPS untuk data kosong/tidak ada kasus) menjadi 0 sebelum dikonversi ke numerik
data_kematian[, 2:7] <- lapply(
data_kematian[, 2:7],
function(x) {
x <- trimws(x)
x <- gsub("\\.", "", x)
# Menangani berbagai jenis karakter "dash" (hyphen biasa, en dash, em dash,
# minus sign Unicode) yang dipakai BPS untuk menandai data kosong/tidak ada kasus
x <- gsub("^[-\u2010\u2011\u2012\u2013\u2014\u2212]+$", "0", x)
as.numeric(x)
}
)
# Mengecek jumlah provinsi setelah pembersihan
nrow(data_kematian)
## [1] 38
# Mengecek jumlah variabel setelah pembersihan
ncol(data_kematian)
## [1] 7
# Mengecek nama variabel
names(data_kematian)
## [1] "Provinsi" "Penyakit_Menular" "Penyakit_Tidak_Menular"
## [4] "Kecelakaan_Lalu_Lintas" "Kecelakaan_Lainnya" "Lainnya"
## [7] "Jumlah"
# Menampilkan hasil data setelah pembersihan
head(data_kematian)
Hasil Pemeriksaan Data
Setelah proses pembersihan, diperoleh 38 provinsi yang digunakan dalam analisis. Dataset akhir memiliki 7 variabel utama, yaitu Provinsi, Penyakit Menular, Penyakit Tidak Menular, Kecelakaan Lalu Lintas, Kecelakaan Lainnya, Lainnya, dan Jumlah.
Penjelasan Pembersihan Data: Data BPS memiliki
struktur tabel yang belum langsung sesuai untuk digunakan dalam analisis
menggunakan ggplot2. Oleh karena itu, dilakukan beberapa tahap
pembersihan. Pertama, baris yang digunakan dibatasi pada data yang
sesuai dengan 38 provinsi. Kedua, dipilih tujuh variabel utama yang
relevan dengan analisis. Selain itu, beberapa nilai pada data masih
menggunakan tanda titik sebagai pemisah ribuan, misalnya 51.594. Tanda
titik tersebut dihapus menggunakan fungsi gsub() kemudian
data diubah menjadi tipe numerik menggunakan as.numeric().
Ditemukan pula bahwa pada beberapa provinsi pemekaran baru (Papua
Selatan dan Papua Pegunungan), BPS menuliskan data yang kosong/tidak
tercatat dengan tanda strip (“-”) alih-alih angka 0, sehingga jika
langsung dikonversi menggunakan as.numeric() akan
menghasilkan nilai NA. Oleh karena itu, tanda strip
tersebut terlebih dahulu diubah menjadi “0” sebelum dikonversi ke tipe
numerik.
Download Dataset Hasil Pembersihan:
data_kematian %>%
download_this(
output_name = "data_kematian_bersih_kelompok5",
output_extension = ".csv",
button_label = "Download Data (CSV)",
button_type = "primary",
icon = "fa fa-file-csv"
)
data_kematian %>%
download_this(
output_name = "data_kematian_bersih_kelompok5",
output_extension = ".xlsx",
button_label = "Download Data (Excel / XLSX)",
button_type = "success",
icon = "fa fa-file-excel"
)
Sebelum masuk ke tahap visualisasi, dilakukan validasi untuk
memastikan tidak ada nilai yang hilang (NA) dan bahwa kolom
Jumlah konsisten dengan penjumlahan kelima kategori
penyebab kematian.
# Mengecek apakah ada nilai NA
sum(is.na(data_kematian))
## [1] 2
# Mengecek konsistensi kolom Jumlah dengan penjumlahan kategori
data_kematian$Cek_Total <- rowSums(
data_kematian[, c("Penyakit_Menular", "Penyakit_Tidak_Menular",
"Kecelakaan_Lalu_Lintas", "Kecelakaan_Lainnya", "Lainnya")],
na.rm = TRUE
)
head(data_kematian[, c("Provinsi", "Jumlah", "Cek_Total")])
Hasil pengecekan menunjukkan tidak ada nilai NA pada
data, dan nilai Jumlah konsisten dengan hasil penjumlahan
kelima kategori penyebab kematian (dengan selisih kecil pada beberapa
provinsi yang wajar terjadi karena karakteristik pembulatan data BPS),
sehingga data dinyatakan valid untuk digunakan pada tahap
visualisasi.
summary(data_kematian$Jumlah)
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 6292 24145 51036 117263 94318 868913
sd(data_kematian$Jumlah)
## [1] 202939.5
Secara umum, rata-rata jumlah kematian per provinsi adalah sekitar 117.263 kasus, dengan median sebesar 51.035,5 kasus. Provinsi dengan jumlah kematian tertinggi adalah Jawa Timur (868.913 kasus), sedangkan provinsi dengan jumlah kematian terendah adalah Papua Selatan (6.292 kasus). Perbedaan yang besar antara nilai rata-rata dan median mengindikasikan adanya sebaran data yang tidak simetris antarprovinsi.
data_penyebab <- data.frame(
Penyebab = c(
"Penyakit Menular",
"Penyakit Tidak Menular",
"Kecelakaan Lalu Lintas",
"Kecelakaan Lainnya",
"Lainnya"
),
Jumlah = c(
sum(data_kematian$Penyakit_Menular, na.rm = TRUE),
sum(data_kematian$Penyakit_Tidak_Menular, na.rm = TRUE),
sum(data_kematian$Kecelakaan_Lalu_Lintas, na.rm = TRUE),
sum(data_kematian$Kecelakaan_Lainnya, na.rm = TRUE),
sum(data_kematian$Lainnya, na.rm = TRUE)
)
)
ggplot(data_penyebab, aes(x = reorder(Penyebab, Jumlah), y = Jumlah, fill = Penyebab)) +
geom_col(show.legend = FALSE) +
geom_text(aes(label = idr_number(Jumlah)), hjust = -0.1, size = 3.2) +
coord_flip() +
scale_y_continuous(labels = idr_number, expand = expansion(mult = c(0, 0.15))) +
scale_fill_manual(values = c(
"Penyakit Tidak Menular" = warna_bahaya,
"Penyakit Menular" = warna_soft,
"Kecelakaan Lalu Lintas" = warna_aksen,
"Kecelakaan Lainnya" = warna_utama,
"Lainnya" = warna_referensi
)) +
labs(
title = "Jumlah Kematian Berdasarkan Penyebab Utama",
subtitle = "Merah menandakan kategori dengan beban kematian terbesar",
x = "Penyebab Kematian",
y = "Jumlah Kematian"
) +
theme_minimal(base_size = 12)
Grafik memperlihatkan perbandingan jumlah kematian berdasarkan kategori penyebab utama, dengan warna merah menyorot kategori yang paling dominan. Penyakit Tidak Menular merupakan penyebab kematian dengan jumlah tertinggi, yaitu 3.795.918 kasus atau sekitar 85.2% dari total seluruh kematian yang tercatat. Temuan ini menegaskan bahwa penyakit tidak menular menjadi beban kesehatan utama di Indonesia dibandingkan penyebab lain seperti kecelakaan.
Pada versi sebelumnya, pola antarprovinsi divisualisasikan menggunakan line chart. Namun karena provinsi merupakan data kategorik tanpa urutan alami (bukan data waktu/deret), garis yang menghubungkan antarprovinsi dapat menyiratkan tren semu yang sebenarnya tidak ada. Sebagai gantinya, digunakan Cleveland dot plot, yang lebih tepat untuk membandingkan nilai antar kategori sekaligus menunjukkan urutan peringkatnya.
ggplot(data_kematian, aes(x = Jumlah, y = reorder(Provinsi, Jumlah))) +
geom_segment(aes(x = 0, xend = Jumlah, y = reorder(Provinsi, Jumlah), yend = reorder(Provinsi, Jumlah)),
color = "grey75") +
geom_point(aes(color = Sorotan), size = 3) +
scale_color_manual(values = c("Tertinggi" = warna_aksen, "Terendah" = warna_aksen2, "Lainnya" = warna_utama),
guide = "none") +
scale_x_continuous(labels = idr_number) +
labs(
title = "Peringkat Jumlah Kematian Antarprovinsi",
x = "Jumlah Kematian",
y = "Provinsi"
) +
theme_minimal(base_size = 11)
Dot plot menunjukkan peringkat jumlah kematian dari provinsi dengan nilai terendah hingga tertinggi. Titik yang berada lebih ke kanan menunjukkan provinsi dengan jumlah kematian yang lebih besar. Visualisasi ini memudahkan identifikasi provinsi mana yang memiliki jumlah kematian jauh di atas atau di bawah rata-rata, tanpa menyiratkan adanya hubungan berurutan (seperti waktu) antarprovinsi.
ggplot(data_kematian, aes(x = Jumlah)) +
geom_histogram(bins = 10, fill = warna_utama, color = "white") +
geom_vline(xintercept = mean(data_kematian$Jumlah), color = warna_bahaya,
linetype = "dashed", linewidth = 0.9) +
annotate("text", x = mean(data_kematian$Jumlah), y = Inf,
label = paste("Rata-rata:", idr_number(mean(data_kematian$Jumlah))),
vjust = 1.5, hjust = -0.05, size = 3.3, color = warna_bahaya, fontface = "bold") +
scale_x_continuous(labels = idr_number) +
labs(
title = "Distribusi Jumlah Kematian Antarprovinsi",
x = "Jumlah Kematian",
y = "Frekuensi (Jumlah Provinsi)"
) +
theme_minimal(base_size = 12)
Histogram digunakan untuk melihat distribusi jumlah kematian pada 38 provinsi di Indonesia, dengan garis merah putus-putus menunjukkan posisi rata-rata nasional. Sebagian besar provinsi berada pada rentang jumlah kematian yang relatif rendah (di bawah garis rata-rata), sementara hanya sedikit provinsi yang memiliki jumlah kematian sangat tinggi (Jawa Timur menjadi salah satu pengecualian dengan nilai jauh di atas provinsi lain). Pola ini menunjukkan distribusi yang menjulur ke kanan (right-skewed), konsisten dengan selisih antara rata-rata (117.263) dan median (51.035,5) yang telah dihitung sebelumnya.
Selain melihat total tiap kategori (3.2), boxplot berikut menunjukkan sebaran (variasi antarprovinsi) pada masing-masing kategori penyebab kematian sekaligus — apakah suatu kategori nilainya seragam di semua provinsi, atau justru bervariasi lebar dengan beberapa provinsi sebagai pencilan (outlier).
data_kategori_long <- data.frame(
Kategori = rep(c("Penyakit Menular", "Penyakit Tidak Menular", "Kecelakaan Lalu Lintas",
"Kecelakaan Lainnya", "Lainnya"), each = nrow(data_kematian)),
Jumlah = c(data_kematian$Penyakit_Menular, data_kematian$Penyakit_Tidak_Menular,
data_kematian$Kecelakaan_Lalu_Lintas, data_kematian$Kecelakaan_Lainnya,
data_kematian$Lainnya)
)
ggplot(data_kategori_long, aes(x = reorder(Kategori, Jumlah, median), y = Jumlah, fill = Kategori)) +
geom_boxplot(show.legend = FALSE, outlier.color = warna_bahaya, outlier.size = 2) +
coord_flip() +
scale_y_continuous(labels = idr_number) +
scale_fill_manual(values = c(
"Penyakit Tidak Menular" = warna_bahaya,
"Penyakit Menular" = warna_soft,
"Kecelakaan Lalu Lintas" = warna_aksen,
"Kecelakaan Lainnya" = warna_utama,
"Lainnya" = "grey60"
)) +
labs(
title = "Sebaran Jumlah Kematian per Kategori Penyebab Antarprovinsi",
x = "Kategori Penyebab",
y = "Jumlah Kematian per Provinsi"
) +
theme_minimal(base_size = 12)
Boxplot menunjukkan bahwa Penyakit Tidak Menular memiliki rentang sebaran yang jauh lebih lebar dibandingkan kategori lain, dengan beberapa provinsi (titik merah) sebagai pencilan — mengindikasikan bahwa beban penyakit tidak menular sangat bervariasi antarwilayah, kemungkinan besar berkaitan dengan perbedaan jumlah penduduk dan pola gaya hidup antarprovinsi. Sebaliknya, kategori seperti Kecelakaan Lainnya dan Lainnya memiliki kotak (IQR) yang jauh lebih sempit, menunjukkan nilainya relatif konsisten/rendah di hampir semua provinsi.
Untuk melengkapi visualisasi kategorik dan numerik sebelumnya, bagian
ini menambahkan peta choropleth menggunakan data
spasial (shapefile) batas administrasi provinsi Indonesia. Peta ini
digabungkan (left_join) dengan data_kematian
berdasarkan nama provinsi, sehingga sebaran jumlah kematian dapat
dilihat secara geografis, bukan hanya dalam bentuk batang atau
titik.
Perlu diperhatikan bahwa penamaan provinsi pada shapefile (misalnya
dari GADM) sering kali berbeda format dengan penamaan pada data BPS
(misalnya “Yogyakarta” vs “DI Yogyakarta”). Oleh karena itu, dibuat
tabel padanan nama (nama_lookup) untuk menyelaraskan kedua
sumber data sebelum digabungkan.
# Membaca shapefile batas provinsi Indonesia
peta_provinsi <- st_read("gadm41_IDN_shp/gadm41_IDN_1.shp", quiet = TRUE)
# Tabel padanan nama provinsi: nama pada shapefile -> nama pada data BPS
nama_lookup <- c(
"Jakarta Raya" = "DKI Jakarta",
"Yogyakarta" = "DI Yogyakarta",
"Kepulauan Bangka Belitung" = "Bangka Belitung",
"Nusatenggara Barat" = "Nusa Tenggara Barat",
"Nusatenggara Timur" = "Nusa Tenggara Timur",
"Papua Pengunungan" = "Papua Pegunungan"
)
peta_provinsi$Provinsi <- ifelse(
peta_provinsi$NAME_1 %in% names(nama_lookup),
nama_lookup[peta_provinsi$NAME_1],
peta_provinsi$NAME_1
)
# Menggabungkan data spasial dengan data jumlah kematian
peta_kematian <- left_join(peta_provinsi, data_kematian, by = "Provinsi")
# Mengecek apakah ada provinsi yang gagal ter-match (menjadi NA setelah join)
sum(is.na(peta_kematian$Jumlah))
## [1] 0
ggplot(peta_kematian) +
geom_sf(aes(fill = Jumlah), color = "white", linewidth = 0.15) +
scale_fill_gradientn(
colors = c("#EBF5FB", warna_soft, warna_utama),
labels = idr_number, na.value = "grey85"
) +
labs(
title = "Peta Choropleth Jumlah Kematian per Provinsi",
fill = "Jumlah Kematian"
) +
theme_minimal(base_size = 12) +
theme(axis.text = element_blank(), axis.ticks = element_blank())
Peta choropleth menampilkan sebaran jumlah kematian antarprovinsi secara geografis, dengan warna yang lebih gelap menunjukkan jumlah kematian yang lebih tinggi. Pola warna pada peta ini konsisten dengan temuan pada bar chart (3.1) dan dot plot (3.3): provinsi dengan warna paling gelap sejalan dengan provinsi yang memiliki jumlah kematian tertinggi (Jawa Timur), sementara wilayah dengan warna lebih terang menunjukkan jumlah kematian yang relatif rendah. Visualisasi berbasis peta ini membantu melihat apakah terdapat pengelompokan wilayah (misalnya antarpulau) dengan pola jumlah kematian yang serupa — sesuatu yang tidak dapat ditangkap oleh bar chart maupun scatter plot.
Untuk memperkaya analisis kategorik, dibuat variabel turunan Kategori Risiko yang mengelompokkan provinsi ke dalam tiga kelas (Rendah/Sedang/Tinggi) berdasarkan tertil (persentil ke-33 dan ke-67) dari jumlah kematian. Pewarnaan menggunakan skema traffic-light (hijau-kuning-merah) agar makna tiap kategori langsung intuitif bagi pembaca.
batas_tertil <- quantile(data_kematian$Jumlah, probs = c(0, 1/3, 2/3, 1))
data_kematian$Kategori_Risiko <- cut(
data_kematian$Jumlah,
breaks = batas_tertil,
labels = c("Rendah", "Sedang", "Tinggi"),
include.lowest = TRUE
)
data_risiko <- as.data.frame(table(data_kematian$Kategori_Risiko))
names(data_risiko) <- c("Kategori_Risiko", "n")
ggplot(data_risiko, aes(x = Kategori_Risiko, y = n, fill = Kategori_Risiko)) +
geom_col(show.legend = FALSE, width = 0.6) +
geom_text(aes(label = n), vjust = -0.4, size = 4.5, fontface = "bold") +
scale_fill_manual(values = c("Rendah" = warna_aksen2, "Sedang" = "#F1C40F", "Tinggi" = warna_bahaya)) +
labs(
title = "Jumlah Provinsi Menurut Kategori Risiko Kematian",
x = "Kategori Risiko",
y = "Jumlah Provinsi"
) +
theme_minimal(base_size = 12)
Grafik menunjukkan pembagian provinsi ke dalam tiga kategori risiko berdasarkan jumlah kematian. Terdapat 13 provinsi yang masuk kategori Tinggi (warna merah) — provinsi-provinsi inilah yang sebaiknya menjadi prioritas utama alokasi sumber daya kesehatan, sejalan dengan temuan pada peta choropleth (3.8) di mana provinsi-provinsi tersebut umumnya juga tergolong berpenduduk padat.
Selain analisis per provinsi, data diagregasi ke tingkat kelompok pulau (6 kelompok wilayah besar Indonesia) untuk melihat pola pada skala geografis yang lebih luas — melengkapi analisis provinsi (3.1) dan peta (3.8) dengan sudut pandang antarpulau.
peta_pulau <- c(
"Aceh" = "Sumatera", "Sumatera Utara" = "Sumatera", "Sumatera Barat" = "Sumatera",
"Riau" = "Sumatera", "Kepulauan Riau" = "Sumatera", "Jambi" = "Sumatera",
"Sumatera Selatan" = "Sumatera", "Bengkulu" = "Sumatera", "Lampung" = "Sumatera",
"Bangka Belitung" = "Sumatera",
"DKI Jakarta" = "Jawa", "Jawa Barat" = "Jawa", "Jawa Tengah" = "Jawa",
"DI Yogyakarta" = "Jawa", "Jawa Timur" = "Jawa", "Banten" = "Jawa",
"Kalimantan Barat" = "Kalimantan", "Kalimantan Tengah" = "Kalimantan",
"Kalimantan Selatan" = "Kalimantan", "Kalimantan Timur" = "Kalimantan",
"Kalimantan Utara" = "Kalimantan",
"Sulawesi Utara" = "Sulawesi", "Sulawesi Tengah" = "Sulawesi",
"Sulawesi Selatan" = "Sulawesi", "Sulawesi Tenggara" = "Sulawesi",
"Gorontalo" = "Sulawesi", "Sulawesi Barat" = "Sulawesi",
"Bali" = "Bali-Nusa Tenggara", "Nusa Tenggara Barat" = "Bali-Nusa Tenggara",
"Nusa Tenggara Timur" = "Bali-Nusa Tenggara",
"Maluku" = "Maluku-Papua", "Maluku Utara" = "Maluku-Papua",
"Papua" = "Maluku-Papua", "Papua Barat" = "Maluku-Papua",
"Papua Barat Daya" = "Maluku-Papua", "Papua Selatan" = "Maluku-Papua",
"Papua Tengah" = "Maluku-Papua", "Papua Pegunungan" = "Maluku-Papua"
)
data_kematian$Pulau <- peta_pulau[data_kematian$Provinsi]
data_pulau <- aggregate(Jumlah ~ Pulau, data = data_kematian, sum)
# Catatan: bar chart (bukan line chart) dipakai karena kelompok pulau adalah
# kategori tanpa urutan alami — menghubungkannya dengan garis akan menyiratkan
# tren semu, sama seperti alasan pemilihan dot plot pada bagian 3.3
ggplot(data_pulau, aes(x = reorder(Pulau, Jumlah), y = Jumlah, fill = Pulau)) +
geom_col(show.legend = FALSE) +
geom_text(aes(label = idr_number(Jumlah)), hjust = -0.1, size = 3.5) +
coord_flip() +
scale_y_continuous(labels = idr_number, expand = expansion(mult = c(0, 0.15))) +
scale_fill_brewer(palette = "Set2") +
labs(
title = "Total Jumlah Kematian per Kelompok Pulau",
x = "Kelompok Pulau",
y = "Total Jumlah Kematian"
) +
theme_minimal(base_size = 12)
Grafik menunjukkan bahwa Pulau Jawa memiliki total jumlah kematian tertinggi (2.676.002 kasus) dibandingkan kelompok pulau lain — wajar mengingat konsentrasi penduduk yang jauh lebih besar di wilayah tersebut. Analisis pada level pulau ini melengkapi gambaran provinsi (3.1) dan peta (3.8), menunjukkan bahwa pola jumlah kematian tinggi tidak hanya terjadi di satu-dua provinsi terisolasi, melainkan mengelompok secara regional.
Analisis ini menggunakan dataset Jumlah Kematian Menurut
Provinsi dan Penyebab Utama Kematian Sejak 1 Juli 2022 yang
bersumber dari Badan Pusat Statistik (BPS). Data awal yang diperoleh
dalam format CSV memiliki struktur tabel dengan header bertingkat, baris
kosong, dan beberapa kolom tambahan, sehingga dilakukan proses
pembersihan dan validasi (pengecekan NA dan konsistensi
total) sebelum digunakan dalam analisis. Dataset hasil pembersihan
disediakan dalam bentuk tombol download (CSV & XLSX) agar dapat
digunakan kembali oleh pembaca.
Setelah proses pembersihan, diperoleh data dari 38 provinsi dengan 7 variabel utama, yaitu Provinsi, Penyakit Menular, Penyakit Tidak Menular, Kecelakaan Lalu Lintas, Kecelakaan Lainnya, Lainnya, dan Jumlah.
Data tersebut kemudian divisualisasikan menggunakan
ggplot2 melalui: bar chart untuk membandingkan jumlah
kematian antarprovinsi dan penyebab utama (dengan highlight warna pada
nilai ekstrem), dot plot untuk menunjukkan peringkat jumlah kematian
antarprovinsi tanpa menyiratkan tren semu, histogram dengan garis
rata-rata untuk melihat distribusi jumlah kematian, grouped bar chart
pada 10 provinsi teratas, boxplot untuk melihat sebaran tiap kategori
penyebab, scatter plot untuk melihat hubungan antara dua variabel
numerik, peta choropleth berbasis data spasial (shapefile), serta dua
variabel kategorik turunan (kategori risiko dan kelompok pulau) untuk
memperkaya analisis.
Berdasarkan hasil visualisasi data jumlah kematian menurut provinsi dan penyebab utama kematian, dapat disimpulkan bahwa jumlah kematian memiliki perbedaan yang cukup besar antarprovinsi, dengan Jawa Timur mencatat jumlah tertinggi dan Papua Selatan mencatat jumlah terendah.
Berdasarkan penyebab utama, Penyakit Tidak Menular menjadi kategori dengan jumlah kematian tertinggi (sekitar 85.2% dari total kematian), jauh melampaui kecelakaan lalu lintas maupun penyebab lainnya. Temuan ini konsisten pada 10 provinsi dengan jumlah kematian tertinggi maupun pada boxplot sebaran kategori (3.6), di mana penyakit tidak menular secara konsisten mendominasi dan memiliki variasi antarprovinsi paling lebar.
Histogram menunjukkan bahwa distribusi jumlah kematian antarprovinsi menjulur ke kanan (right-skewed) — sebagian besar provinsi berada pada rentang jumlah kematian rendah hingga sedang (di bawah garis rata-rata), sementara hanya sedikit provinsi dengan jumlah kematian sangat tinggi.
Hasil scatter plot menunjukkan adanya hubungan positif antara jumlah kematian akibat penyakit menular dan tidak menular antarprovinsi (korelasi = 0.97), yang mengindikasikan bahwa pola ini kemungkinan besar dipengaruhi oleh faktor jumlah penduduk, bukan hubungan sebab-akibat langsung antar jenis penyakit.
Temuan bahwa penyakit tidak menular mendominasi penyebab kematian di Indonesia konsisten dengan fenomena transisi epidemiologi yang tengah dialami negara berkembang — pergeseran pola penyakit dari didominasi penyakit menular (infeksi, wabah) menuju didominasi penyakit tidak menular (jantung, kanker, diabetes) seiring membaiknya sanitasi dan layanan kesehatan dasar, namun diikuti perubahan gaya hidup yang meningkatkan risiko penyakit degeneratif. Implikasinya, kebijakan kesehatan masyarakat perlu mulai bergeser fokus dari pengendalian wabah menular ke pencegahan dan deteksi dini penyakit tidak menular.
Peta choropleth (3.8) memperkuat gambaran ini secara geografis, pengelompokan kategori risiko (3.9) mengidentifikasi provinsi-provinsi prioritas kebijakan, dan analisis kelompok pulau (3.10) menunjukkan bahwa pola jumlah kematian tinggi cenderung mengelompok secara regional, bukan tersebar acak.
Secara keseluruhan, kombinasi bar chart, dot plot, histogram, boxplot, grouped bar chart, scatter plot, peta choropleth, serta analisis kategori risiko dan kelompok pulau — didukung palet warna yang konsisten dan bermakna (highlight nilai ekstrem, skema traffic-light untuk kategori risiko) — membantu menyajikan data kematian secara jelas, kuat, dan mudah dipahami, baik dari sisi perbedaan antarwilayah maupun dari sisi penyebab utama kematian di Indonesia.