Data yang digunakan berasal dari Berita Resmi Statistik (BRS) Badan Pusat Statistik Provinsi Banten, 5 Mei 2026, yang memuat empat topik:
Link data: https://banten.bps.go.id (ganti dengan link langsung ke berkas BRS yang kalian pakai)
Data mentah sudah dirapikan lebih dulu di Microsoft
Excel (data_banten.xlsx) dengan satu sheet per
topik, lalu dibaca ke R menggunakan paket readxl.
Kelompok kami memilih data ini karena:
Catatan: Pastikan file
data_banten.xlsxberada di folder kerja (working directory) yang sama dengan file.Rmdini. Cek dengangetwd().
path_excel <- "data_banten.xlsx"
# Setiap sheet punya 1 baris judul + 1 baris kosong di atas header,
# sehingga data sesungguhnya dimulai dari baris ke-3 (skip = 2)
lapus <- read_excel(path_excel, sheet = "LapanganUsaha", skip = 2) %>% drop_na()
pendidikan <- read_excel(path_excel, sheet = "Pendidikan", skip = 2) %>% drop_na()
status <- read_excel(path_excel, sheet = "StatusPekerjaan", skip = 2) %>% drop_na()
tpt <- read_excel(path_excel, sheet = "TPT", skip = 2) %>% drop_na()
tpak <- read_excel(path_excel, sheet = "TPAK", skip = 2) %>% drop_na()
formal <- read_excel(path_excel, sheet = "Formal", skip = 2) %>% drop_na()
ekonomi <- read_excel(path_excel, sheet = "Ekonomi", skip = 2) %>% drop_na()
kabkota <- read_excel(path_excel, sheet = "KabKota", skip = 2) %>% drop_na()
names(lapus) <- c("lapangan_usaha", "persen")
names(pendidikan) <- c("pendidikan", "persen")
names(status) <- c("status", "persen")
names(tpt) <- c("periode", "pengangguran", "tpt")
names(tpak) <- c("periode", "jenis_kelamin", "tpak")
names(formal) <- c("periode", "sektor", "persen")
names(ekonomi) <- c("periode", "tahun", "qtoq", "yoy")
names(kabkota) <- c("wilayah", "tfr", "imr", "lansia", "ikg2024", "ikg2025")
tpt$periode <- factor(tpt$periode, levels = tpt$periode)
tpak$periode <- factor(tpak$periode, levels = unique(tpak$periode))
formal$periode <- factor(formal$periode, levels = unique(formal$periode))
ekonomi$periode <- factor(ekonomi$periode, levels = ekonomi$periode)
glimpse(lapus)
## Rows: 17
## Columns: 2
## $ lapangan_usaha <chr> "Perdagangan Besar dan Eceran", "Industri", "Pertanian"…
## $ persen <dbl> 19.82, 18.55, 15.80, 8.60, 7.30, 6.46, 6.28, 5.93, 2.57…
Untuk data kategorik, kelompok kami menggunakan diagram batang (bar chart) dan diagram lingkaran (pie chart).
lapus %>%
ggplot(aes(x = reorder(lapangan_usaha, persen), y = persen, fill = persen)) +
geom_col(show.legend = FALSE) +
geom_text(aes(label = paste0(persen, "%")), hjust = -0.1, size = 3.3) +
coord_flip() +
scale_fill_gradient(low = "#fdd49e", high = "#d94801") +
scale_y_continuous(expand = expansion(mult = c(0, .12))) +
labs(title = "Distribusi Penduduk Bekerja Menurut Lapangan Usaha",
subtitle = "Banten, Februari 2026",
x = NULL, y = "Persentase (%)",
caption = "Sumber: BPS Provinsi Banten (BRS 5 Mei 2026)")
Interpretasi: Tiga lapangan usaha terbesar penyerap tenaga kerja Banten adalah Perdagangan (19,82%), Industri (18,55%), dan Pertanian (15,80%). Ketiganya menyerap sekitar 54,17% dari seluruh penduduk bekerja, sementara Listrik dan Gas (0,30%), Pertambangan (0,75%), dan Informasi-Komunikasi (0,77%) menyerap tenaga kerja paling sedikit.
status %>%
ggplot(aes(x = reorder(status, -persen), y = persen)) +
geom_col(fill = "#2b8cbe") +
geom_text(aes(label = paste0(persen, "%")), vjust = -0.4, size = 3.5) +
scale_x_discrete(labels = function(x) str_wrap(x, 14)) +
scale_y_continuous(expand = expansion(mult = c(0, .12))) +
labs(title = "Penduduk Bekerja Menurut Status Pekerjaan Utama",
subtitle = "Banten, Februari 2026",
x = NULL, y = "Persentase (%)",
caption = "Sumber: BPS Provinsi Banten (BRS 5 Mei 2026)")
Interpretasi: Hampir separuh pekerja (49,03%) berstatus buruh/karyawan/pegawai, diikuti berusaha sendiri (16,67%). Status yang paling jarang adalah berusaha dibantu buruh tetap (3,16%).
pendidikan %>%
mutate(pendidikan = factor(pendidikan, levels = pendidikan),
label = paste0(persen, "%")) %>%
ggplot(aes(x = "", y = persen, fill = pendidikan)) +
geom_col(width = 1, color = "white") +
coord_polar(theta = "y") +
geom_text(aes(label = label), position = position_stack(vjust = 0.5),
color = "white", fontface = "bold", size = 3.5) +
scale_fill_brewer(palette = "Dark2", name = "Pendidikan") +
labs(title = "Komposisi Penduduk Bekerja Menurut Tingkat Pendidikan",
subtitle = "Banten, Februari 2026",
caption = "Sumber: BPS Provinsi Banten (BRS 5 Mei 2026)") +
theme_void(base_size = 12) +
theme(plot.title = element_text(face = "bold"))
Interpretasi: Kelompok terbesar adalah lulusan SD ke bawah (35,74%), disusul SMA (22,62%) dan SMP (17,32%). Penduduk bekerja berpendidikan tinggi (Diploma ke atas) hanya sekitar 11,97%. Artinya, lebih dari separuh pekerja Banten berpendidikan SMP ke bawah.
formal %>%
filter(periode == "Feb 2026") %>%
mutate(label = paste0(sektor, "\n", persen, "%")) %>%
ggplot(aes(x = "", y = persen, fill = sektor)) +
geom_col(width = 1, color = "white") +
coord_polar(theta = "y") +
geom_text(aes(label = label), position = position_stack(vjust = 0.5),
color = "white", fontface = "bold", size = 4.5) +
scale_fill_manual(values = c("Formal" = "#c2571a", "Informal" = "#fdb913"), name = NULL) +
labs(title = "Proporsi Pekerja Formal dan Informal",
subtitle = "Banten, Februari 2026",
caption = "Sumber: BPS Provinsi Banten (BRS 5 Mei 2026)") +
theme_void(base_size = 12) +
theme(plot.title = element_text(face = "bold"), legend.position = "none")
Interpretasi: Pada Februari 2026, proporsi pekerja formal (52,19%) masih sedikit lebih besar dibanding informal (47,81%), meskipun formal sempat lebih tinggi (53,37%) setahun sebelumnya. Ini mengindikasikan sebagian tenaga kerja bergeser ke kegiatan informal.
Untuk data numerik, kelompok kami menggunakan histogram, poligon frekuensi dan ogive, diagram garis (line chart), diagram pencar (scatter plot), dan box-and-whisker plot.
ggplot(ekonomi, aes(x = qtoq)) +
geom_histogram(binwidth = 0.5, boundary = 0.5, fill = "#31a354", color = "white") +
geom_vline(aes(xintercept = mean(qtoq)), color = "red", linetype = "dashed", linewidth = 1) +
scale_x_continuous(breaks = seq(0.5, 2.5, by = 0.5)) +
labs(title = "Histogram Pertumbuhan Ekonomi Banten (q-to-q)",
subtitle = paste0("Triwulan I-2023 s.d. Triwulan I-2026 (13 triwulan). Garis merah putus-putus = rata-rata (",
round(mean(ekonomi$qtoq), 2), "%)"),
x = "Pertumbuhan q-to-q (%)", y = "Frekuensi (jumlah triwulan)",
caption = "Sumber: BPS Provinsi Banten (BRS 5 Mei 2026), diolah")
Interpretasi: Dari 13 triwulan pengamatan, sebagian besar pertumbuhan q-to-q berada pada kelas 1,00-1,50% dengan rata-rata sekitar 1.25%. Nilai di atas 2,00% hanya muncul sekali (Triwulan IV-2025). Distribusinya menjulur ke kanan (right-skewed) karena efek musiman akhir tahun.
Poligon frekuensi dan ogive dibuat dari tabel distribusi frekuensi data pertumbuhan ekonomi q-to-q pada bagian Histogram di atas, dengan lebar kelas 0,5.
# Membuat tabel distribusi frekuensi
breaks_qtoq <- seq(0.5, 2.5, by = 0.5)
kelas <- cut(ekonomi$qtoq, breaks = breaks_qtoq, right = FALSE, include.lowest = TRUE)
tabel_frek <- tibble(kelas = kelas) %>%
count(kelas, name = "frekuensi") %>%
complete(kelas, fill = list(frekuensi = 0)) %>%
mutate(
batas_bawah = breaks_qtoq[-length(breaks_qtoq)],
batas_atas = breaks_qtoq[-1],
titik_tengah = (batas_bawah + batas_atas) / 2,
frek_kumulatif = cumsum(frekuensi)
)
knitr::kable(
tabel_frek %>% select(Kelas = kelas, `Titik Tengah` = titik_tengah,
Frekuensi = frekuensi, `Frekuensi Kumulatif` = frek_kumulatif),
caption = "Tabel Distribusi Frekuensi Pertumbuhan Ekonomi q-to-q"
)
| Kelas | Titik Tengah | Frekuensi | Frekuensi Kumulatif |
|---|---|---|---|
| [0.5,1) | 0.75 | 4 | 4 |
| [1,1.5) | 1.25 | 6 | 10 |
| [1.5,2) | 1.75 | 2 | 12 |
| [2,2.5] | 2.25 | 1 | 13 |
# Tambahkan titik semu berfrekuensi 0 di kedua ujung supaya poligon tertutup
poligon_data <- tabel_frek %>%
select(titik_tengah, frekuensi) %>%
add_row(titik_tengah = min(tabel_frek$titik_tengah) - 0.5, frekuensi = 0, .before = 1) %>%
add_row(titik_tengah = max(tabel_frek$titik_tengah) + 0.5, frekuensi = 0)
ggplot(poligon_data, aes(x = titik_tengah, y = frekuensi)) +
geom_line(color = "#08519c", linewidth = 1.2) +
geom_point(data = tabel_frek, aes(x = titik_tengah, y = frekuensi),
color = "#08519c", size = 3) +
geom_text(data = tabel_frek, aes(x = titik_tengah, y = frekuensi, label = frekuensi),
vjust = -1, size = 3.5) +
scale_x_continuous(breaks = poligon_data$titik_tengah) +
labs(title = "Poligon Frekuensi Pertumbuhan Ekonomi Banten (q-to-q)",
x = "Titik Tengah Kelas (%)", y = "Frekuensi",
caption = "Sumber: BPS Provinsi Banten (BRS 5 Mei 2026), diolah")
Interpretasi: Poligon frekuensi menegaskan pola pada histogram: frekuensi memuncak pada titik tengah 1,25% (6 triwulan), lalu menurun tajam ke kelas dengan titik tengah 1,75% dan 2,25%. Bentuk kurva menjulur ke kanan (positively skewed).
ogive_data <- tabel_frek %>%
select(batas_atas, frek_kumulatif) %>%
add_row(batas_atas = min(tabel_frek$batas_bawah), frek_kumulatif = 0, .before = 1)
ggplot(ogive_data, aes(x = batas_atas, y = frek_kumulatif)) +
geom_line(color = "#c2571a", linewidth = 1.2) +
geom_point(size = 3, color = "#c2571a") +
geom_text(aes(label = frek_kumulatif), vjust = -1, size = 3.5) +
scale_x_continuous(breaks = breaks_qtoq) +
scale_y_continuous(breaks = seq(0, 13, by = 2)) +
labs(title = "Ogive Pertumbuhan Ekonomi Banten (q-to-q)",
x = "Batas Atas Kelas (%)", y = "Frekuensi Kumulatif",
caption = "Sumber: BPS Provinsi Banten (BRS 5 Mei 2026), diolah")
Interpretasi: Ogive naik curam antara batas kelas 1,00% dan 1,50%, menunjukkan bahwa 10 dari 13 triwulan (76,9%) memiliki pertumbuhan q-to-q di bawah 1,50%. Kurva melandai setelahnya, menandakan hanya sedikit triwulan dengan pertumbuhan tinggi (>1,50%).
ggplot(tpt, aes(x = periode, group = 1)) +
geom_col(aes(y = pengangguran), fill = "#fdae6b", width = .6) +
geom_line(aes(y = tpt * 60), color = "#08519c", linewidth = 1.2) +
geom_point(aes(y = tpt * 60), color = "#08519c", size = 3) +
geom_text(aes(y = tpt * 60, label = paste0(tpt, "%")),
vjust = -1, color = "#08519c", fontface = "bold") +
geom_text(aes(y = pengangguran, label = pengangguran), vjust = 1.5, size = 3.3) +
scale_y_continuous(name = "Pengangguran (ribu orang)",
sec.axis = sec_axis(~ . / 60, name = "TPT (%)")) +
labs(title = "Jumlah Pengangguran dan Tingkat Pengangguran Terbuka (TPT)",
subtitle = "Banten, Februari 2022 - Februari 2026", x = NULL,
caption = "Sumber: BPS Provinsi Banten (BRS 5 Mei 2026)")
Interpretasi: Jumlah pengangguran turun dari 504,26 ribu orang (Feb 2022) menjadi 411,24 ribu orang (Feb 2026). TPT ikut turun dari 8,53% menjadi 6,59%, namun penurunan mulai melandai (hanya 0,05 poin persentase dari Feb 2025 ke Feb 2026).
ekonomi %>%
pivot_longer(c(qtoq, yoy), names_to = "jenis", values_to = "nilai") %>%
mutate(jenis = recode(jenis, qtoq = "q-to-q", yoy = "y-on-y")) %>%
ggplot(aes(x = periode, y = nilai, group = jenis, color = jenis)) +
geom_line(linewidth = 1) + geom_point(size = 2) +
geom_text(aes(label = nilai), vjust = -0.9, size = 3, show.legend = FALSE) +
scale_color_manual(values = c("q-to-q" = "#c2571a", "y-on-y" = "#08519c"), name = NULL) +
scale_y_continuous(expand = expansion(mult = c(.05, .12))) +
labs(title = "Pertumbuhan Ekonomi Banten Triwulanan (%)",
subtitle = "Triwulan I-2023 s.d. Triwulan I-2026",
x = NULL, y = "Pertumbuhan (%)",
caption = "Sumber: BPS Provinsi Banten (BRS 5 Mei 2026)") +
theme(axis.text.x = element_text(angle = 45, hjust = 1))
Interpretasi: Pertumbuhan y-on-y naik bertahap dari 4,66% (Q1-2023) hingga 5,64% (Q1-2026). Pertumbuhan q-to-q berpola musiman: selalu tertinggi di Triwulan IV lalu turun di Triwulan I, sehingga penurunan q-to-q Q1-2026 (1,01%) dari Q4-2025 (2,22%) adalah pola musiman, bukan tanda perlambatan.
r <- cor(kabkota$tfr, kabkota$imr)
ggplot(kabkota, aes(x = tfr, y = imr)) +
geom_smooth(method = "lm", se = TRUE, color = "#08519c", fill = "#c6dbef") +
geom_point(size = 3.5, color = "#c2571a") +
ggrepel::geom_text_repel(aes(label = wilayah), size = 3.3) +
labs(title = "Hubungan TFR dan Angka Kematian Bayi (IMR) per Kabupaten/Kota",
subtitle = paste0("Koefisien korelasi Pearson r = ", round(r, 2)),
x = "TFR (anak per perempuan)", y = "IMR (per 1.000 kelahiran hidup)",
caption = "Sumber: BPS Provinsi Banten (BRS 5 Mei 2026), SUPAS 2025")
Interpretasi: Terdapat hubungan positif yang kuat antara TFR dan IMR (r = 0.89). Wilayah dengan TFR tinggi (Pandeglang, Lebak) juga memiliki IMR tinggi, menunjukkan pola disparitas Banten Utara vs Banten Selatan. Dengan hanya 8 titik data, korelasi ini bersifat deskriptif, bukan sebab-akibat.
kabkota %>%
select(wilayah, ikg2024, ikg2025) %>%
pivot_longer(-wilayah, names_to = "tahun", values_to = "ikg") %>%
mutate(tahun = str_remove(tahun, "ikg")) %>%
ggplot(aes(x = tahun, y = ikg, fill = tahun)) +
geom_boxplot(alpha = .7, show.legend = FALSE, outlier.colour = "red") +
geom_jitter(width = .08, size = 2, alpha = .8) +
scale_fill_manual(values = c("2024" = "#fdb913", "2025" = "#c2571a")) +
labs(title = "Sebaran Indeks Ketimpangan Gender (IKG) 8 Kabupaten/Kota di Banten",
subtitle = "Semakin kecil nilai IKG, semakin rendah ketimpangan gender",
x = "Tahun", y = "IKG",
caption = "Sumber: BPS Provinsi Banten (BRS 5 Mei 2026)")
Interpretasi: Median IKG kabupaten/kota turun dari 2024 ke 2025. Data terlihat bimodal: Tangerang Raya dan Cilegon berada di kelompok rendah (0,15-0,27), sedangkan Pandeglang, Lebak, Serang, dan Kota Serang di kelompok tinggi (0,48-0,55). Tidak ada outlier ekstrem yang terlihat pada boxplot ini. IKG Provinsi Banten sendiri turun dari 0,453 (2024) menjadi 0,418 (2025).
Badan Pusat Statistik Provinsi Banten. (2026). Berita Resmi Statistik: Pertumbuhan Ekonomi Triwulan I-2026, Keadaan Ketenagakerjaan Februari 2026, Indeks Ketimpangan Gender 2025, dan Hasil SUPAS 2025 Provinsi Banten (5 Mei 2026). https://banten.bps.go.id