library(readxl)
library(dplyr)
library(ggplot2)
library(tidyr)
library(scales)

file_path <- "Jumlah Tenaga Kerja Industri Skala Mikro dan Kecil Menurut 2-digit KBLI, 2025.xlsx"

data_kbli <- read_excel(file_path, skip = 3, col_names = FALSE) %>%
  select(KBLI = 1, Mikro = 2, Kecil = 3) %>%
  filter(!is.na(KBLI), KBLI != "JUMLAH") %>%
  mutate(
    Mikro = as.numeric(Mikro),
    Kecil = as.numeric(Kecil),
    Total = Mikro + Kecil,
    KBLI_Bersih = gsub("^[0-9]+\\s*", "", KBLI),
    KBLI_Label = ifelse(nchar(KBLI_Bersih) > 22, paste0(substr(KBLI_Bersih, 1, 20), "..."), KBLI_Bersih)
  )

top10_kbli <- data_kbli %>%
  slice_max(order_by = Total, n = 10)

top10_long <- top10_kbli %>%
  pivot_longer(cols = c(Mikro, Kecil), names_to = "Skala", values_to = "Jumlah")

data_long <- data_kbli %>%
  pivot_longer(cols = c(Mikro, Kecil), names_to = "Skala", values_to = "Jumlah")

p1 <- ggplot(top10_kbli, aes(x = reorder(KBLI_Label, Total), y = Total)) +
  geom_col(fill = "#2c3e50") +
  coord_flip() +
  scale_y_continuous(labels = comma) +
  labs(
    title = "1. Top 10 Kelompok Industri Berdasarkan Total Tenaga Kerja (2025)",
    x = "Kelompok Industri (KBLI)",
    y = "Jumlah Tenaga Kerja (Orang)"
  ) +
  theme_minimal()
print(p1)

- Top 10 industri (total tenaga kerja)

Chart ini nunjukin 10 sektor industri dengan jumlah tenaga kerja (Mikro + Kecil) paling besar, diambil dari 23 sektor yang ada biar grafiknya nggak padet,Batangnya diurutkan dari kecil ke besar dan dibuat horizontal, soalnya nama sektornya panjang-panjang kalau batang berdiri, labelnya bakal numpuk. Angkanya juga dikasih pemisah ribuan biar gampang dibaca,Dipakai bar chart karena nama sektor itu data kategorik, dan cara paling pas buat bandingin jumlah antar kategori adalah bar chart.

p2 <- ggplot(top10_long, aes(x = reorder(KBLI_Label, Jumlah), y = Jumlah, fill = Skala)) +
  geom_bar(stat = "identity", position = "stack") +
  coord_flip() +
  scale_y_continuous(labels = comma) +
  scale_fill_manual(values = c("Mikro" = "#2980b9", "Kecil" = "#e67e22")) +
  labs(
    title = "2. Komposisi Tenaga Kerja Mikro dan Kecil pada Top 10 Industri",
    x = "Kelompok Industri (KBLI)",
    y = "Jumlah Tenaga Kerja (Orang)",
    fill = "Skala Usaha"
  ) +
  theme_minimal()
print(p2)

- Komposisi Mikro vs Kecil

menunjukan dari 10 sektor terbesar, berapa porsi Mikro vs Kecil-nya. Kebanyakan sektor didominasi Mikro, tapi ada yg anomali disektor Pengolahan Tembakau malah kebalik,(±769rb)kecil jauh lebih gede dari Mikro (±173rb).

p3 <- ggplot(data_long, aes(x = Skala, y = Jumlah, fill = Skala)) +
  geom_boxplot(alpha = 0.7, outlier.color = "red") +
  scale_y_log10(labels = comma) +
  scale_fill_manual(values = c("Mikro" = "#2ecc71", "Kecil" = "#8e44ad")) +
  labs(
    title = "3. Sebaran Jumlah Tenaga Kerja Berdasarkan Skala Usaha (Skala Log10)",
    x = "Skala Usaha",
    y = "Jumlah Tenaga Kerja (Orang)"
  ) +
  theme_minimal() +
  theme(legend.position = "none")
print(p3)
## Warning in scale_y_log10(labels = comma): log-10 transformation introduced
## infinite values.
## Warning: Removed 2 rows containing non-finite outside the scale range
## (`stat_boxplot()`).

- Sebaran data numerik

Mikro dan Kecil itu variabel numerik, jadi boxplot dipakai buat liat sebarannya. Sumbu Y di bikin skala log10 karena rentang datanya kejauhan (dari puluhan ribu sampai jutaan) kalo nggak di log, boxplotnya bakal keliatan gepeng. Titik merah = outlier, sektor yang jumlahnya jauh di atas rata-rata sesama skalanya.

p4 <- ggplot(data_kbli, aes(x = Mikro, y = Kecil)) +
  geom_point(color = "#c0392b", size = 3, alpha = 0.8) +
  geom_smooth(method = "lm", se = FALSE, color = "#34495e", linetype = "dashed") +
  scale_x_continuous(labels = comma) +
  scale_y_continuous(labels = comma) +
  labs(
    title = "4. Hubungan Jumlah Tenaga Kerja Usaha Mikro dan Kecil per KBLI",
    x = "Jumlah Tenaga Kerja Mikro (Orang)",
    y = "Jumlah Tenaga Kerja Kecil (Orang)"
  ) +
  theme_minimal()
print(p4)
## `geom_smooth()` using formula = 'y ~ x'

- Mikro vs Kecil

Ngecek apakah sektor yang tenaga kerja Mikronya banyak, Kecilnya juga ikutan banyak. Hasil korelasinya ±0.70 artinya hubungannya positif, sedang ke kuat. Sektor Tembakau lagi-lagi jadi titik yang menyimpang jauh dari pola umum.

- Interpretasi

Data ini menunjukkan jumlah tenaga kerja Industri Mikro dan Kecil di Indonesia tahun 2025 per 29 sektor manufaktur (KBLI 2-digit). Total tenaga kerja Industri Mikro mencapai 6.917.707 orang, jauh lebih banyak dari Industri Kecil yang hanya 2.566.934 orang.

Sektor Makanan (KBLI 10) paling dominan di skala Mikro dengan 3.276.680 pekerja, disusul Kayu/Barang dari Kayu dan Pakaian Jadi. Sementara di skala Kecil, justru Pengolahan Tembakau (KBLI 12) yang tertinggi dengan 769.333 pekerja menandakan industri rokok lebih banyak berskala kecil dibanding mikro. Sebaliknya, sektor padat modal seperti Pengilangan Minyak Bumi (KBLI 19) tidak punya tenaga kerja sama sekali di kedua skala, karena biasanya dikuasai industri besar.

Polanya konsisten dengan karakteristik UMKM Indonesia: sektor pangan, tekstil, dan olahan kayu jadi penyerap tenaga kerja terbesar, bukan sektor padat modal atau teknologi tinggi.

- Alasan memilih data ini

Karena kami berpikir data ini cocok untuk dijelaskan dan dibuat bentuk beberapa chart,dengan sumber yg jelas dan sudah pasti.

- Sumber data

Data ini berasal dari Badan Pusat Statistik (BPS) RI — tabel statistik “Jumlah Tenaga Kerja Industri Skala Mikro dan Kecil Menurut 2-digit KBLI”:

🔗 https://www.bps.go.id/id/statistics-table/2/NDQ4IzI=/jumlah-tenaga-kerja-menurut-2-digit-kbli.html

Data ini merupakan hasil dari Survei Industri Mikro dan Kecil (VIMK) yang dilakukan BPS secara tahunan.