1. Informasi dan Ulasan Data

2. Memuat dan Membersihkan Data Excel

file_data <- "Tabel_TPT_Provinsi_2026.xlsx"
# Membaca data excel dari BPS (38 provinsi)
data_tpt <- read_excel(
  path = file_data, 
  skip = 4, 
  n_max = 38,
  col_names = c("Provinsi", "TPT_Feb_2026", "TPT_Agustus", "TPT_Tahunan"),
  na = c("", "-", "NA", "N/A")
)

# Pembersihan Data & Pengelompokan Wilayah
data_clean <- data_tpt %>%
  select(Provinsi, TPT_Feb_2026) %>%
  filter(!is.na(Provinsi)) %>%
  filter(!grepl("indonesia", tolower(Provinsi))) %>% # Perbaikan grepl aman tanpa ignore.case
  mutate(TPT_Feb_2026 = as.numeric(gsub(",", ".", TPT_Feb_2026))) %>%
  # Pengelompokan Wilayah berdasarkan Pulau
  mutate(Wilayah = case_when(
    Provinsi %in% c("ACEH", "SUMATERA UTARA", "SUMATERA BARAT", "RIAU", "JAMBI", 
                    "SUMATERA SELATAN", "BENGKULU", "LAMPUNG", "KEP. BANGKA BELITUNG", 
                    "KEP. RIAU") ~ "Sumatera",
    Provinsi %in% c("DKI JAKARTA", "JAWA BARAT", "JAWA TENGAH", "DI YOGYAKARTA", 
                    "JAWA TIMUR", "BANTEN") ~ "Jawa",
    Provinsi %in% c("BALI", "NUSA TENGGARA BARAT", "NUSA TENGGARA TIMUR") ~ "Nusa Tenggara & Bali",
    Provinsi %in% c("KALIMANTAN BARAT", "KALIMANTAN TENGAH", "KALIMANTAN SELATAN", 
                    "KALIMANTAN TIMUR", "KALIMANTAN UTARA") ~ "Kalimantan",
    Provinsi %in% c("SULAWESI UTARA", "SULAWESI TENGAH", "SULAWESI SELATAN", 
                    "SULAWESI TENGGARA", "GORONTALO", "SULAWESI BARAT") ~ "Sulawesi",
    TRUE ~ "Maluku & Papua"
  )) %>%
  mutate(Wilayah = factor(Wilayah, levels = c("Sumatera", "Jawa", "Nusa Tenggara & Bali", "Kalimantan", "Sulawesi", "Maluku & Papua")))

# Menampilkan Tabel Modern Menggunakan gt
tabel_modern <- data_clean %>% 
  gt(groupname_col = "Wilayah") %>% 
  tab_header(
    title = md("**Tingkat Pengangguran Terbuka (TPT) per Provinsi (Februari 2026)**"),
    subtitle = "Data Hasil Sakernas BPS Indonesia (Persen)"
  ) %>% 
  cols_label(
    Provinsi = "Provinsi",
    TPT_Feb_2026 = "TPT Februari 2026 (%)"
  ) %>% 
  fmt_number(
    columns = TPT_Feb_2026,
    decimals = 2,
    dec_mark = ",",
    sep_mark = "."
  ) %>% 
  tab_style(
    style = cell_fill(color = "#f0f4f8"),
    locations = cells_body(columns = TPT_Feb_2026)
  ) %>% 
  tab_style(
    style = list(
      cell_fill(color = "#1e293b"),
      cell_text(color = "white", weight = "bold", align = "center")
    ),
    locations = cells_column_labels()
  ) %>% 
  tab_style(
    style = list(
      cell_fill(color = "#e2e8f0"),
      cell_text(weight = "bold", color = "#0f172a")
    ),
    locations = cells_row_groups()
  ) %>% 
  cols_align(align = "left", columns = Provinsi) %>% 
  cols_align(align = "right", columns = TPT_Feb_2026) %>% 
  tab_options(
    table.border.top.color = "transparent",
    table.border.bottom.color = "#1e293b"
  ) %>% 
  opt_row_striping()

tabel_modern
Tingkat Pengangguran Terbuka (TPT) per Provinsi (Februari 2026)
Data Hasil Sakernas BPS Indonesia (Persen)
Provinsi TPT Februari 2026 (%)
Maluku & Papua
38 PROVINSI NA
MALUKU 5,80
MALUKU UTARA 4,46
PAPUA BARAT 4,10
PAPUA BARAT DAYA 6,41
PAPUA 7,02
PAPUA SELATAN 5,25
PAPUA TENGAH 3,83
Sumatera
ACEH 5,88
SUMATERA UTARA 5,01
SUMATERA BARAT 5,51
RIAU 4,09
JAMBI 3,99
SUMATERA SELATAN 3,59
BENGKULU 3,23
LAMPUNG 3,95
KEP. BANGKA BELITUNG 4,15
KEP. RIAU 6,87
Jawa
DKI JAKARTA 6,03
JAWA BARAT 6,64
JAWA TENGAH 4,24
DI YOGYAKARTA 3,05
JAWA TIMUR 3,55
BANTEN 6,59
Nusa Tenggara & Bali
BALI 1,59
NUSA TENGGARA BARAT 2,99
NUSA TENGGARA TIMUR 3,16
Kalimantan
KALIMANTAN BARAT 4,57
KALIMANTAN TENGAH 3,44
KALIMANTAN SELATAN 3,80
KALIMANTAN TIMUR 5,27
KALIMANTAN UTARA 3,90
Sulawesi
SULAWESI UTARA 5,75
SULAWESI TENGAH 2,95
SULAWESI SELATAN 4,95
SULAWESI TENGGARA 3,25
GORONTALO 3,17
SULAWESI BARAT 2,93

3. Visualisasi Data Kategorik / Wilayah

3.1. Top 10 Provinsi dengan TPT Tertinggi (Bar Chart)

top10_2026 <- data_clean %>%
  arrange(desc(TPT_Feb_2026)) %>%
  head(10)

ggplot(top10_2026, aes(x = reorder(Provinsi, TPT_Feb_2026), y = TPT_Feb_2026, fill = Wilayah)) +
  geom_col(color = "black", alpha = 0.85, width = 0.7) +
  coord_flip() +
  geom_text(
    aes(label = paste0(format(TPT_Feb_2026, nsmall = 2), "%")),
    hjust = -0.1,
    size = 3.8,
    fontface = "bold"
  ) +
  scale_fill_brewer(palette = "Set2") +
  scale_y_continuous(limits = c(0, 8.5), breaks = seq(0, 8, by = 2)) +
  theme_minimal() +
  labs(
    title = "Top 10 Provinsi dengan Pengangguran Terbuka Tertinggi (Februari 2026)",
    x = "Provinsi",
    y = "Tingkat Pengangguran Terbuka (%)",
    fill = "Wilayah/Pulau"
  ) +
  theme(
    plot.title = element_text(face = "bold", size = 13),
    axis.text = element_text(size = 10)
  )

> Interpretasi: > Berdasarkan bar chart, terlihat 10 provinsi dengan nilai Tingkat Pengangguran Terbuka (TPT) tertinggi pada Februari 2026. Perbedaan panjang batang menunjukkan adanya variasi tingkat pengangguran antarprovinsi. Provinsi yang berada di posisi teratas memiliki persentase TPT yang lebih tinggi dibandingkan provinsi lainnya dalam data. Warna pada grafik menunjukkan pengelompokan wilayah atau pulau, sehingga dapat digunakan untuk melihat persebaran provinsi dengan TPT tinggi berdasarkan wilayah geografis.

4. Visualisasi Data Numerik & Distribusi

4.1. Perbandingan TPT Seluruh Provinsi Terhadap Rata-Rata Nasional (Dot Plot)

rata_nasional <- 4.68 # Angka acuan Rata-rata Nasional BPS 2026

ggplot(data_clean, aes(x = reorder(Provinsi, TPT_Feb_2026), y = TPT_Feb_2026, color = Wilayah)) +
  geom_point(size = 3.5) +
  geom_hline(yintercept = rata_nasional, linetype = "dashed", color = "red", size = 1) +
  annotate("text", x = 5, y = rata_nasional + 0.4, label = paste0("Rata-rata Nasional: ", rata_nasional, "%"), color = "red", fontface = "bold") +
  coord_flip() +
  scale_color_brewer(palette = "Dark2") +
  theme_bw() +
  labs(
    title = "Sebaran TPT Seluruh Provinsi vs Rata-Rata Nasional (Februari 2026)",
    x = "Provinsi",
    y = "Tingkat Pengangguran Terbuka (%)",
    color = "Wilayah/Pulau"
  ) +
  theme(
    axis.text.y = element_text(size = 8),
    plot.title = element_text(face = "bold", size = 13)
  )

> Interpretasi: > Berdasarkan dot plot, nilai TPT setiap provinsi menunjukkan adanya perbedaan tingkat pengangguran antarwilayah. Garis putus-putus menunjukkan rata-rata nasional sebesar 4,68%. Provinsi yang titiknya berada di atas garis tersebut memiliki TPT lebih tinggi daripada rata-rata nasional, sedangkan provinsi yang berada di bawah garis memiliki TPT lebih rendah. Hal ini menunjukkan bahwa tingkat pengangguran di setiap provinsi tidak sama dan memiliki variasi terhadap rata-rata nasional.

4.2. Sebaran Pengangguran Terbuka Menurut Wilayah/Pulau (Boxplot)

ggplot(data_clean, aes(x = Wilayah, y = TPT_Feb_2026, fill = Wilayah)) +
  geom_boxplot(alpha = 0.8, color = "black", outlier.colour = "red", outlier.size = 2.5) +
  scale_fill_brewer(palette = "Pastel1") +
  theme_classic() +
  labs(
    title = "Sebaran Tingkat Pengangguran Terbuka (TPT) per Wilayah (Februari 2026)",
    x = "Wilayah / Kelompok Pulau",
    y = "Tingkat Pengangguran Terbuka (%)"
  ) +
  theme(
    legend.position = "none",
    axis.text.x = element_text(angle = 15, hjust = 1, face = "bold"),
    plot.title = element_text(face = "bold", size = 13)
  )

> Interpretasi: > Berdasarkan boxplot, dapat dilihat bahwa persebaran TPT berbeda pada setiap kelompok wilayah. Posisi kotak menunjukkan rentang nilai TPT pada masing-masing wilayah, sedangkan garis di dalam kotak menunjukkan nilai median. Perbedaan posisi dan ukuran kotak menunjukkan adanya variasi tingkat pengangguran antarwilayah. Titik yang berada di luar pola utama menunjukkan nilai yang relatif berbeda dari provinsi lain dalam kelompok wilayah tersebut.

4.3. Distribusi Tingkat Pengangguran Terbuka (Histogram & Density)

ggplot(data_clean, aes(x = TPT_Feb_2026)) +
  geom_histogram(
    bins = 7, 
    fill = "#3b82f6", 
    color = "#1e293b", 
    alpha = 0.7
  ) +
  geom_density(
    aes(y = ..count.. * 0.8), 
    color = "#ef4444", 
    size = 1.2
  ) +
  geom_vline(
    xintercept = mean(data_clean$TPT_Feb_2026, na.rm = TRUE), 
    linetype = "dashed", 
    color = "#059669", 
    size = 1
  ) +
  annotate(
    "text", 
    x = mean(data_clean$TPT_Feb_2026, na.rm = TRUE) + 0.6, 
    y = 9, 
    label = paste0("Rata-Rata: ", round(mean(data_clean$TPT_Feb_2026, na.rm = TRUE), 2), "%"), 
    color = "#059669", 
    fontface = "bold"
  ) +
  theme_minimal() +
  labs(
    title = "Distribusi Frekuensi TPT Seluruh Provinsi (Februari 2026)",
    subtitle = "Garis Hijau: Rata-Rata | Garis Merah: Kurva Sebaran Data (Density)",
    x = "Tingkat Pengangguran Terbuka (%)",
    y = "Jumlah Provinsi"
  ) +
  theme(
    plot.title = element_text(face = "bold", size = 13),
    axis.text = element_text(size = 10)
  )

> Interpretasi: > Berdasarkan histogram, nilai TPT 38 provinsi tersebar pada beberapa rentang persentase. Tinggi batang menunjukkan jumlah provinsi yang berada pada masing-masing rentang TPT. Kurva density membantu memperlihatkan pola persebaran data secara lebih halus, sedangkan garis vertikal menunjukkan nilai rata-rata TPT seluruh provinsi. Dari grafik tersebut dapat dilihat apakah sebagian besar provinsi memiliki nilai TPT yang berada di sekitar rata-rata atau tersebar pada rentang yang lebih luas.

5. Kesimpulan

Tingkat Pengangguran Terbuka (TPT) di Indonesia pada Februari 2026 tercatat sebesar 4,68% secara nasional. Terdapat variasi geografis yang cukup mencolok:

  1. Wilayah Industri Utama & Pusat Ekonomi (seperti Jawa Barat, Banten, DKI Jakarta) serta Papua mencatatkan pengangguran di atas rata-rata nasional akibat besarnya jumlah angkatan kerja baru dan pencari kerja harian.

  2. Wilayah Nusa Tenggara & Bali mencatatkan angka pengangguran terendah secara nasional, didukung oleh daya serap sektor pariwisata dan sektor informal lokal.