Tugas ini disusun untuk memenuhi Tugas Pendalaman Materi mata kuliah Statistika. Kelompok kami mengambil data real dari Badan Pusat Statistik (BPS) Provinsi Banten dengan fokus bidang Kesehatan/Kependudukan, yaitu data Jumlah Penduduk Menurut Kelompok Umur dan Jenis Kelamin (ribu jiwa) di Provinsi Banten, 2026.
Data jumlah penduduk menurut umur dan jenis kelamin penting dianalisis karena menjadi dasar perencanaan kebijakan publik, misalnya kebutuhan fasilitas kesehatan ibu dan anak, proyeksi jumlah tenaga kerja usia produktif, hingga kebutuhan layanan lanjut usia. Oleh karena itu kelompok kami memilih data ini sebagai bahan pendalaman materi visualisasi statistika.
Sumber data: Badan Pusat Statistik (BPS) Provinsi Banten Link: https://banten.bps.go.id/id/statistics-table/3/WVc0MGEyMXBkVFUxY25KeE9HdDZkbTQzWkVkb1p6MDkjMw==/jumlah-penduduk-menurut-kelompok-umur-dan-jenis-kelamin-di-provinsi-banten--2019.html
Diunggah Oleh: KELOMPOK 7
Anggota Kelompok 7 : 1. Laila fitriani - 3337260160 2. Boby Nurul Ahmad - 3337260165 3. Rahmatul Adawiyah - 3337260040 4. Mullah Muhammad Umar - 3337260062
Beberapa poin penting: 1. Relevansi dengan isu kependudukan aktual — Data jumlah penduduk menurut kelompok umur dan jenis kelamin berkaitan langsung dengan isu bonus demografi yang sedang dialami Indonesia, termasuk Provinsi Banten. Topik ini aktual dan relevan untuk perencanaan kebijakan publik ke depan. 2.Kredibilitas dan keresmian sumber — Data diperoleh langsung dari situs resmi Badan Pusat Statistik (BPS) Provinsi Banten, sehingga validitas dan akurasinya terjamin dibandingkan sumber data sekunder lain yang belum tentu terverifikasi. 3. Kelengkapan struktur data untuk kebutuhan visualisasi — Data ini memiliki struktur yang kaya (variabel kelompok umur yang bertingkat serta pembagian jenis kelamin), sehingga cocok diolah menjadi berbagai jenis visualisasi yang dipelajari di kelas, baik data kategorik (pie chart, bar chart) maupun data numerik (piramida penduduk, line chart, histogram, boxplot). 4. Nilai kegunaan praktis (aplikatif) — Data kependudukan seperti ini menjadi dasar bagi banyak kebijakan nyata, misalnya perencanaan fasilitas kesehatan ibu dan anak, proyeksi tenaga kerja usia produktif, hingga penyediaan layanan lanjut usia. Ini menjadikan tugas visualisasi kelompok kami tidak sekadar latihan teknis, tetapi juga bermakna secara kontekstual. 5. Kesesuaian dengan bidang studi kelompok — Sebagai mahasiswa Statistika dan Informatika, kelompok kami tertarik mengaitkan konsep statistika deskriptif dan visualisasi data dengan isu sosial-demografis nyata, sehingga pembelajaran menjadi lebih kontekstual dan tidak abstrak. 6. Ketersediaan dan kemudahan akses data — Data tersedia secara terbuka (open data) dalam format yang bisa diunduh dan diolah, memudahkan proses pembersihan data (data cleaning) serta transformasi variabel (seperti pembuatan kategori usia fungsional) sesuai kebutuhan analisis kelompok.
# install.packages(c("readxl","dplyr","tidyr","ggplot2","scales","forcats"))
library(readxl) # membaca file Excel
library(dplyr) # wrangling data
library(tidyr) # merapikan data (pivot)
library(ggplot2) # visualisasi
library(scales) # format angka pada sumbu/label
library(forcats) # mengatur urutan level faktorAgar seluruh grafik pada laporan ini terlihat konsisten dan menarik, kami menetapkan satu palet warna khusus yang dipakai berulang di semua visualisasi: maroon untuk kategori Laki-laki dan emas (gold) untuk kategori Perempuan, terinspirasi dari warna identitas kampus.
warna_lk <- "#7B241C" # maroon - Laki-laki
warna_pr <- "#D4AC0D" # gold - Perempuan
warna_total <- "#1B4F72" # navy - total/garis tren
warna_pal_umur <- c("#7B241C", "#A9611E", "#D4AC0D") # muda - produktif - tua
tema_kelompok <- theme_minimal(base_size = 12) +
theme(
plot.title = element_text(face = "bold", size = 14, color = "#1B2631"),
plot.subtitle = element_text(color = "#5D6D7E"),
axis.title = element_text(face = "bold"),
legend.position = "bottom",
legend.title = element_blank(),
panel.grid.minor = element_blank()
)penduduk <- read_excel("Jumlah Penduduk Menurut Kelompok Umur dan Jenis Kelamin (ribu jiwa) di Provinsi Banten, 2026.xlsx",
sheet = 1) %>%
# Ambil 4 kolom pertama saja sekaligus beri nama variabel baru
select(
Kelompok_Umur = 1,
Laki_laki = 2,
Perempuan = 3,
Jumlah = 4
) %>%
# Hapus baris kosong, baris Total/Jumlah, dan metadata BPS
filter(!is.na(Kelompok_Umur) & !grepl("Total|Jumlah|Metadata|Indikator", Kelompok_Umur)) %>%
mutate(
Kelompok_Umur = fct_inorder(Kelompok_Umur),
Laki_laki = as.numeric(Laki_laki),
Perempuan = as.numeric(Perempuan),
Jumlah = Laki_laki + Perempuan
)
glimpse(penduduk)## Rows: 16
## Columns: 4
## $ Kelompok_Umur <fct> 0-4, 5-9, 10-14, 15-19, 20-24, 25-29, 30-34, 35-39, 40-4…
## $ Laki_laki <dbl> 490.0, 522.0, 532.0, 514.1, 506.7, 523.4, 522.9, 518.2, …
## $ Perempuan <dbl> 470.4, 498.6, 509.0, 485.0, 478.2, 497.4, 501.8, 501.7, …
## $ Jumlah <dbl> 960.4, 1020.6, 1041.0, 999.1, 984.9, 1020.8, 1024.7, 101…
Kami juga membentuk variabel kategorik baru, yaitu kelompok usia fungsional (Muda/Produktif/Tua), untuk memperlihatkan cara mengubah data numerik menjadi data kategorik pada analisis kependudukan.
penduduk <- penduduk %>%
mutate(
Kategori_Usia = case_when(
Kelompok_Umur %in% c("0-4","5-9","10-14") ~ "Muda (0-14)",
Kelompok_Umur %in% c("65-69","70-74","75+") ~ "Tua (65+)",
TRUE ~ "Produktif (15-64)"
),
Kategori_Usia = factor(Kategori_Usia,
levels = c("Muda (0-14)", "Produktif (15-64)", "Tua (65+)"))
)
data_long <- penduduk %>%
select(Kelompok_Umur, Laki_laki, Perempuan) %>%
pivot_longer(cols = c(Laki_laki, Perempuan),
names_to = "Jenis_Kelamin", values_to = "Jumlah_Ribu") %>%
mutate(Jenis_Kelamin = recode(Jenis_Kelamin,
Laki_laki = "Laki-laki", Perempuan = "Perempuan"))prop_gender <- penduduk %>%
summarise(Laki_laki = sum(Laki_laki), Perempuan = sum(Perempuan)) %>%
pivot_longer(everything(), names_to = "Jenis_Kelamin", values_to = "Jumlah") %>%
mutate(Jenis_Kelamin = recode(Jenis_Kelamin,
Laki_laki = "Laki-laki", Perempuan = "Perempuan"),
Persen = Jumlah / sum(Jumlah))
ggplot(prop_gender, aes(x = "", y = Jumlah, fill = Jenis_Kelamin)) +
geom_col(width = 1, color = "white") +
coord_polar(theta = "y") +
scale_fill_manual(values = c("Laki-laki" = warna_lk, "Perempuan" = warna_pr)) +
geom_text(aes(label = percent(Persen, accuracy = 0.1)),
position = position_stack(vjust = 0.5), color = "white", fontface = "bold") +
labs(title = "Proporsi Penduduk Provinsi Banten Menurut Jenis Kelamin",
subtitle = "Tahun 2026 (ribu jiwa)") +
tema_kelompok +
theme(axis.text = element_blank(), axis.title = element_blank(), panel.grid = element_blank())Interpretasi: diagram lingkaran di atas memperlihatkan komposisi penduduk Banten menurut jenis kelamin. Apabila proporsi laki-laki sedikit lebih besar dari 50%, hal ini konsisten dengan rasio jenis kelamin (sex ratio) Provinsi Banten yang cenderung di atas 100, salah satunya didorong oleh migrasi tenaga kerja laki-laki ke kawasan industri.
kategori_summary <- penduduk %>%
group_by(Kategori_Usia) %>%
summarise(Total = sum(Jumlah)) %>%
mutate(Persen = Total / sum(Total))
ggplot(kategori_summary, aes(x = Kategori_Usia, y = Total, fill = Kategori_Usia)) +
geom_col(width = 0.6) +
geom_text(aes(label = paste0(comma(Total), "\n(", percent(Persen, accuracy = 0.1), ")")),
vjust = -0.3, fontface = "bold", size = 3.5) +
scale_fill_manual(values = warna_pal_umur) +
scale_y_continuous(labels = comma, expand = expansion(mult = c(0, 0.15))) +
labs(title = "Jumlah Penduduk Banten Menurut Kategori Usia Fungsional",
subtitle = "Tahun 2026 (ribu jiwa)",
x = "Kategori Usia", y = "Jumlah Penduduk (ribu jiwa)") +
tema_kelompok +
theme(legend.position = "none")Interpretasi: diagram batang ini mengelompokkan penduduk menjadi tiga kategori usia fungsional. Kelompok usia produktif (15-64 tahun) mendominasi jumlah penduduk, menunjukkan Provinsi Banten berada pada periode bonus demografi, yaitu proporsi penduduk usia kerja jauh lebih besar dibanding usia non-produktif (muda dan tua). Kondisi ini berpotensi menjadi modal pembangunan ekonomi jika diimbangi lapangan kerja dan peningkatan kualitas SDM yang memadai.
piramida_data <- penduduk %>%
select(Kelompok_Umur, Laki_laki, Perempuan) %>%
mutate(Laki_laki = -Laki_laki) %>%
pivot_longer(cols = c(Laki_laki, Perempuan),
names_to = "Jenis_Kelamin", values_to = "Jumlah") %>%
mutate(Jenis_Kelamin = recode(Jenis_Kelamin,
Laki_laki = "Laki-laki", Perempuan = "Perempuan"))
batas <- max(abs(piramida_data$Jumlah))
ggplot(piramida_data, aes(x = Kelompok_Umur, y = Jumlah, fill = Jenis_Kelamin)) +
geom_col(width = 0.8) +
coord_flip() +
scale_y_continuous(limits = c(-batas, batas) * 1.05,
labels = function(x) comma(abs(x))) +
scale_fill_manual(values = c("Laki-laki" = warna_lk, "Perempuan" = warna_pr)) +
labs(title = "Piramida Penduduk Provinsi Banten Tahun 2026",
subtitle = "Menurut Kelompok Umur dan Jenis Kelamin (ribu jiwa)",
x = "Kelompok Umur", y = "Jumlah Penduduk (ribu jiwa)") +
tema_kelompokInterpretasi: bentuk piramida yang melebar di kelompok umur muda hingga usia produktif awal (0-34 tahun) lalu menyempit tajam di usia tua menunjukkan struktur penduduk ekspansif/muda, khas negara berkembang dengan fertilitas yang masih relatif tinggi dan harapan hidup yang terus meningkat sehingga penduduk lansia belum terlalu banyak dibanding kelompok usia muda dan produktif.
ggplot(data_long, aes(x = Kelompok_Umur, y = Jumlah_Ribu,
color = Jenis_Kelamin, group = Jenis_Kelamin)) +
geom_line(linewidth = 1.1) +
geom_point(size = 2) +
scale_color_manual(values = c("Laki-laki" = warna_lk, "Perempuan" = warna_pr)) +
scale_y_continuous(labels = comma) +
labs(title = "Tren Jumlah Penduduk Banten Antar Kelompok Umur",
subtitle = "Tahun 2026 (ribu jiwa)",
x = "Kelompok Umur", y = "Jumlah Penduduk (ribu jiwa)") +
tema_kelompok +
theme(axis.text.x = element_text(angle = 45, hjust = 1))Interpretasi: garis tren pada kedua jenis kelamin menurun secara konsisten seiring bertambahnya kelompok umur, terutama setelah usia 45 tahun. Penurunan ini sejalan dengan proses alami penuaan penduduk (semakin tua kelompok umur, semakin sedikit jumlahnya) dan terlihat bahwa garis Perempuan berada di atas garis Laki-laki pada kelompok umur lanjut, mengindikasikan harapan hidup perempuan yang lebih tinggi.
ggplot(penduduk, aes(x = Jumlah)) +
geom_histogram(binwidth = 100, fill = warna_total, color = "white", boundary = 0) +
scale_x_continuous(labels = comma) +
labs(title = "Sebaran (Distribusi) Jumlah Penduduk per Kelompok Umur",
subtitle = "Provinsi Banten, Tahun 2026 (ribu jiwa)",
x = "Jumlah Penduduk per Kelompok Umur (ribu jiwa)", y = "Frekuensi Kelompok Umur") +
tema_kelompokInterpretasi: histogram memperlihatkan bahwa sebagian besar kelompok umur memiliki jumlah penduduk pada kisaran menengah hingga tinggi (400-600 ribu jiwa), sedangkan hanya sedikit kelompok umur (umumnya kelompok usia lanjut) yang jumlah penduduknya rendah. Pola ini konsisten dengan bentuk piramida penduduk yang ekspansif pada bagian sebelumnya.
ggplot(data_long, aes(x = Jenis_Kelamin, y = Jumlah_Ribu, fill = Jenis_Kelamin)) +
geom_boxplot(width = 0.5, alpha = 0.9) +
geom_jitter(width = 0.08, color = "#2C3E50", alpha = 0.6, size = 1.8) +
scale_fill_manual(values = c("Laki-laki" = warna_lk, "Perempuan" = warna_pr)) +
scale_y_continuous(labels = comma) +
labs(title = "Perbandingan Sebaran Jumlah Penduduk: Laki-laki vs Perempuan",
subtitle = "Provinsi Banten, Tahun 2026 (ribu jiwa)",
x = NULL, y = "Jumlah Penduduk (ribu jiwa)") +
tema_kelompok +
theme(legend.position = "none")Interpretasi: median jumlah penduduk laki-laki dan perempuan per kelompok umur terlihat relatif berdekatan, namun sebaran (variasi) pada masing-masing jenis kelamin menunjukkan rentang yang cukup lebar karena mencakup kelompok umur muda yang jumlahnya besar hingga kelompok umur lanjut yang jumlahnya kecil.
ringkasan <- data_long %>%
group_by(Jenis_Kelamin) %>%
summarise(
Total = sum(Jumlah_Ribu),
Rata2 = mean(Jumlah_Ribu),
Median = median(Jumlah_Ribu),
SD = sd(Jumlah_Ribu),
Min = min(Jumlah_Ribu),
Max = max(Jumlah_Ribu)
)
knitr::kable(ringkasan, digits = 1,
caption = "Statistik Deskriptif Jumlah Penduduk per Jenis Kelamin (ribu jiwa)")| Jenis_Kelamin | Total | Rata2 | Median | SD | Min | Max |
|---|---|---|---|---|---|---|
| Laki-laki | 6417.3 | 401.1 | 490.1 | 159.7 | 75.1 | 532 |
| Perempuan | 6224.3 | 389.0 | 474.3 | 147.9 | 92.7 | 509 |
Kenapa kelompok kami memilih data ini? Data struktur umur dan jenis kelamin merupakan data dasar (fundamental) dalam bidang kesehatan dan kependudukan. Data ini dipilih karena mudah diakses secara resmi dari BPS, relevan dengan isu aktual seperti bonus demografi, dan cukup kaya untuk dieksplorasi dengan berbagai jenis visualisasi kategorik maupun numerik yang telah dipelajari di kelas Statistika.
Berdasarkan seluruh visualisasi di atas, dapat disimpulkan bahwa struktur penduduk Provinsi Banten tahun 2026 didominasi oleh kelompok usia produktif, dengan proporsi jenis kelamin yang relatif seimbang namun sedikit lebih banyak laki-laki pada usia muda-produktif dan lebih banyak perempuan pada usia lanjut. Kondisi ini mengindikasikan Provinsi Banten sedang berada pada fase bonus demografi yang perlu dimanfaatkan melalui penyediaan lapangan kerja dan peningkatan kualitas pendidikan/keterampilan angkatan kerja.
Catatan pengerjaan: setelah file ini di-Knit, publish hasilnya ke akun RPubs kelompok (Publish button di RStudio), lalu salin link RPubs tersebut untuk dikumpulkan bersama file .Rmd dan Excel, dan diunggah oleh SETIAP anggota kelompok ke SPADA.