1 Pendahuluan

Kajian ini bertujuan untuk menganalisis dan memetakan potensi sektoral kabupaten/kota di Provinsi Kalimantan Selatan berdasarkan kinerja pertumbuhan ekonomi, struktur sektor unggulan, dan dinamika kontribusi sektoral terhadap PDRB daerah. Data yang digunakan bersumber dari publikasi Badan Pusat Statistik (BPS) Provinsi Kalimantan Selatan, mencakup data PDRB atas dasar harga konstan menurut lapangan usaha di setiap kabupaten/kota.

Kajian ini menyajikan Analisis Potensi Sektoral dengan tiga alat analisis, yaitu Tipologi Klassen, Location Quotient (LQ), dan Model Rasio Pertumbuhan (MRP).
Ketiga metode ini digunakan untuk menilai kondisi, keunggulan, dan prospek sektor ekonomi di tingkat kabupaten/kota.

1.0.1 Tipologi Klassen

Metode Tipologi Klassen digunakan untuk mengelompokkan daerah berdasarkan tingkat pertumbuhan ekonomi (r) dan PDRB per kapita (y) terhadap rata-rata provinsi.

1.0.2 Location Quotient (LQ)

Metode Location Quotient (LQ) digunakan untuk mengidentifikasi sektor unggulan (basis) pada setiap daerah dengan membandingkan kontribusi sektor di tingkat kabupaten/kota terhadap kontribusi sektor yang sama di tingkat provinsi atau nasional.
Nilai LQ > 1 menunjukkan bahwa sektor tersebut merupakan sektor basis yang memiliki keunggulan kompetitif dan berpotensi menjadi penggerak utama ekonomi daerah.

1.0.3 Model Rasio Pertumbuhan (MRP)

Metode Model Rasio Pertumbuhan (MRP) digunakan untuk menilai kinerja pertumbuhan (RPr) dan perubahan pangsa (RPs) sektor di suatu daerah relatif terhadap wilayah acuan (provinsi).
Menurut Yusuf (1999), kombinasi kedua indikator ini digunakan untuk mengidentifikasi sektor-sektor potensial:

  • RPr > 1 → laju pertumbuhan sektor di daerah lebih cepat dibandingkan acuan,
  • RPs > 1 → pangsa sektor meningkat lebih cepat dibandingkan acuan.

Sektor yang memenuhi kedua kondisi tersebut dikategorikan sebagai sektor potensial dan dinamis.

2 Menyiapkan Packages yang Dibutuhkan

# Packages yang digunakan
library(dplyr)
library(ggplot2)
library(readr)
library(tibble)
library(forcats)
library(sf)
library(stringr)
library(tidyr)
library(purrr)
library(leaflet)
library(htmltools)

3 Analisis Bagian A — Tipologi Klassen

3.1 Melakukan Input Data dan Penghitungan Rata-Rata

data <- data.frame(
  daerah = c("TANAH LAUT", "KOTABARU", "BANJAR", "BARITO KUALA", "TAPIN", "HULU SUNGAI SELATAN","HULU SUNGAI TENGAH","HULU SUNGAI UTARA","TABALONG","TANAH BUMBU","BALANGAN","KOTA BANJARMASIN","KOTA BANJARBARU"),
  r = c(5.12,4.58,4.48,3.59,4.91,4.02,3.92,4.08,5.29,5.45,5.24,5.69,7.93),  # pertumbuhan ekonomi (%)
  y = c(30.990,55.941,21.729,19.147,35.558,21.616,19.628,15.305,60.598,50.939,74.393,36.102,25.970) # PDRB per kapita HK (dalam juta rupiah)
)

# Rata-rata
r_mean <- mean(data$r)
y_mean <- mean(data$y)

tibble(Rata_r = r_mean, Rata_y = y_mean)

3.2 Interpretasi Rata-rata Pertumbuhan Ekonomi dan PDRB Per Kapita

Hasil perhitungan menunjukkan nilai rata-rata dari dua indikator utama dalam analisis Tipologi Klassen, yaitu:

  • Rata-rata laju pertumbuhan ekonomi (Rata_r): 4,946154 %
  • Rata-rata PDRB per kapita (Rata_y): 35,98892 juta rupiah

Nilai ini berfungsi sebagai garis batas (benchmark) untuk menentukan posisi relatif tiap kabupaten/kota di Provinsi Kalimantan Selatan dalam empat kuadran Tipologi Klassen, yaitu:

  1. Kuadran I (r > 4,95 dan y > 35,99) → Wilayah maju dan cepat tumbuh, dengan pertumbuhan ekonomi dan pendapatan per kapita di atas rata-rata provinsi.
  2. Kuadran II (r < 4,95 dan y > 35,99) → Wilayah maju namun pertumbuhannya melambat, menandakan struktur ekonomi kuat tetapi dinamika pertumbuhan mulai menurun.
  3. Kuadran III (r > 4,95 dan y < 35,99) → Wilayah berkembang cepat, menunjukkan daerah yang tumbuh pesat meskipun pendapatan per kapitanya masih relatif rendah.
  4. Kuadran IV (r < 4,95 dan y < 35,99) → Wilayah relatif tertinggal, di mana baik pertumbuhan ekonomi maupun pendapatan per kapita masih di bawah rata-rata provinsi.

Secara umum, nilai 4,95% dan 35,99 juta rupiah digunakan sebagai acuan pembanding untuk mengelompokkan daerah berdasarkan kinerja ekonominya.
Hasil ini membantu mengidentifikasi wilayah yang memiliki potensi pertumbuhan tinggi serta wilayah yang memerlukan perhatian lebih dalam kebijakan pembangunan ekonomi daerah.

3.3 Visualisasi Tipologi Klassen (Scatter)

ggplot(data, aes(x = y, y = r, label = daerah)) +
  geom_point(size = 3, color = "steelblue") +
  geom_vline(xintercept = y_mean, linetype = "dashed", color = "red") +
  geom_hline(yintercept = r_mean, linetype = "dashed", color = "red") +
  geom_text(vjust = -0.8, size = 3.5) +
  labs(
    title = "Visualisasi Tipologi Klassen",
    x = "Pendapatan per Kapita (y)",
    y = "Pertumbuhan Ekonomi (r)"
  ) +
  theme_minimal()
Visualisasi Tipologi Klassen: perbandingan r vs y

Visualisasi Tipologi Klassen: perbandingan r vs y

3.4 Klasifikasi Kuadran & Ringkasan

klassen_tbl <- data %>%
  mutate(
    kategori = dplyr::case_when(
      r > r_mean & y > y_mean ~ "Kuadran I: Maju & Cepat Tumbuh",
      r < r_mean & y > y_mean ~ "Kuadran II: Sedang Berkembang",
      r > r_mean & y < y_mean ~ "Kuadran III: Maju tetapi Terkekan",
      TRUE ~ "Kuadran IV: Relatif Tertinggal"
    ),
    kategori = forcats::fct_relevel(
      kategori,
      "Kuadran I: Maju & Cepat Tumbuh",
      "Kuadran II: Sedang Berkembang",
      "Kuadran III: Maju Tetapi Tertekan",
      "Kuadran IV: Relatif Tertinggal"
    )
  )

klassen_tbl
klassen_tbl %>%
  count(kategori, name = "n_daerah") %>%
  arrange(kategori)

3.5 Peta Tipologi Klassen

# --- BACA DAN FILTER SHAPEFILE ---
peta <- st_read("C:/Users/dhita/Downloads/BATAS KABUPATEN KOTA DESEMBER 2019 DUKCAPIL/BATAS KABUPATEN KOTA DESEMBER 2019 DUKCAPIL/BATAS KABUPATEN KOTA DESEMBER 2019 DUKCAPIL.shp") %>%
  filter(KAB_KOTA %in% c(
    "BARITO KUALA", "HULU SUNGAI SELATAN", "HULU SUNGAI TENGAH", "HULU SUNGAI UTARA",
    "KOTA BANJARBARU", "KOTA BANJARMASIN", "BALANGAN", "BANJAR",
    "KOTABARU", "TANAH LAUT", "TANAH BUMBU", "TAPIN", "TABALONG"
  ))
## Reading layer `BATAS KABUPATEN KOTA DESEMBER 2019 DUKCAPIL' from data source 
##   `C:\Users\dhita\Downloads\BATAS KABUPATEN KOTA DESEMBER 2019 DUKCAPIL\BATAS KABUPATEN KOTA DESEMBER 2019 DUKCAPIL\BATAS KABUPATEN KOTA DESEMBER 2019 DUKCAPIL.shp' 
##   using driver `ESRI Shapefile'
## Simple feature collection with 515 features and 1 field
## Geometry type: MULTIPOLYGON
## Dimension:     XY
## Bounding box:  xmin: 95.00971 ymin: -11.00762 xmax: 141.0194 ymax: 6.07694
## Geodetic CRS:  WGS 84
# --- STANDARISASI NAMA DAERAH DI SHAPEFILE DAN DATA ---
peta <- peta %>%
  mutate(daerah = KAB_KOTA) %>%
  mutate(daerah = daerah %>%
           stringr::str_squish() %>%
           stringr::str_to_title())

data <- data %>%
  mutate(daerah = daerah %>%
           stringr::str_squish() %>%
           stringr::str_to_title())

# --- HITUNG RATA-RATA DAN KLASIFIKASI TIP0LOGI KLASSEN ---
r_mean <- mean(data$r, na.rm = TRUE)
y_mean <- mean(data$y, na.rm = TRUE)

peta_data <- peta %>%
  left_join(data, by = "daerah") %>%
  mutate(
    kategori = case_when(
      r > r_mean & y > y_mean ~ "Kuadran I: Maju & Cepat Tumbuh",
      r < r_mean & y > y_mean ~ "Kuadran II: Sedang Berkembang",
      r > r_mean & y < y_mean ~ "Kuadran III: Maju tetapi Tertekan",
      TRUE ~ "Kuadran IV: Relatif Tertinggal"
    ),
    kategori = forcats::fct_relevel(
      kategori,
      "Kuadran I: Maju & Cepat Tumbuh",
      "Kuadran II: Sedang Berkembang",
      "Kuadran III: Maju tetapi Tertekan",
      "Kuadran IV: Relatif Tertinggal"
    )
  )

# --- DATA UNTUK LABEL TITIK TENGAH POLYGON ---
peta_label <- peta_data %>%
  st_point_on_surface()   # aman untuk polygon tidak beraturan

# --- PETA FINAL DENGAN BATAS ADMINISTRASI + LABEL ---
ggplot(peta_data) +
  geom_sf(aes(fill = kategori), color = "grey40", size = 0.3) +  # tampilkan garis batas admin
  geom_sf_text(
    data = peta_label,
    aes(label = KAB_KOTA),
    size = 2
  ) +
  scale_fill_manual(values = c(
    "Kuadran I: Maju & Cepat Tumbuh" = "#2E8B57",
    "Kuadran II: Sedang Berkembang" = "#FFD700",
    "Kuadran III: Maju tetapi Tertekan" = "#1E90FF",
    "Kuadran IV: Relatif Tertinggal" = "#DC143C"
  )) +
  labs(
    title = "Peta Tipologi Klassen",
    fill  = "Kategori"
  ) +
  theme_minimal()

3.6 Peta Tipologi Klassen (dengan Peta Interaktif Leaflet)

# --- MENYIAPKAN DATA UNTUK LEAFLET (CRS & GEOMETRI VALID) ---
peta_leaf <- peta_data %>%
  st_make_valid() %>%
  filter(!st_is_empty(geometry))

# Memastikan CRS = WGS84 (EPSG:4326) untuk leaflet
if (is.na(st_crs(peta_leaf)) || st_crs(peta_leaf)$epsg != 4326) {
  peta_leaf <- st_transform(peta_leaf, 4326)
}

# --- MEMPERSIAPKAN PALET WARNA BERDASARKAN KATEGORI ---
pal <- colorFactor(
  palette = c(
    "Kuadran I: Maju & Cepat Tumbuh"   = "#2E8B57",
    "Kuadran II: Sedang Berkembang"    = "#FFD700",
    "Kuadran III: Maju tetapi Tertekan"= "#1E90FF",
    "Kuadran IV: Relatif Tertinggal"   = "#DC143C"
  ),
  domain = peta_leaf$kategori,
  na.color = "lightgrey"
)

# --- MENAMPILKAN PETA LEAFLET TIPOLOGI KLASSEN ---
leaflet(peta_leaf) %>%
  addProviderTiles(providers$CartoDB.Positron) %>%
  addPolygons(
    fillColor   = ~pal(kategori),
    color       = "#444444",
    weight      = 1,
    fillOpacity = 0.7,
    # LABEL (hover)
    label = ~paste0(
      "<b>", KAB_KOTA, "</b><br>",
      "Kategori: ", kategori, "<br>",
      "r (pertumbuhan): ", round(r, 2), " %<br>",
      "y (PDRB per kapita): ", round(y, 2)
    ) %>% lapply(htmltools::HTML),
    # POPUP (klik)
    popup = ~paste0(
      "<b>Kabupaten/Kota:</b> ", KAB_KOTA,
      "<br><b>Kategori:</b> ", kategori,
      "<br><b>Pertumbuhan (r):</b> ", round(r, 2), " %",
      "<br><b>PDRB per kapita (y):</b> ", round(y, 2)
    ),
    highlightOptions = highlightOptions(
      weight = 2,
      color  = "black",
      bringToFront = TRUE
    )
  ) %>%
  addLegend(
    pal    = pal,
    values = ~kategori,
    title  = "Tipologi Klassen",
    opacity = 1
  ) %>%
  addScaleBar(position = "bottomleft")

4 Analisis Bagian B — Analisis Sektoral Unggulan (Location Quotient, LQ)

4.1 Konsep Singkat

  • LQ > 1 → sektor basis/unggulan di suatu daerah (kontribusi relatif lebih tinggi daripada acuan provinsi/nasional).
  • LQ = 1 → kontribusi setara acuan.
  • LQ < 1 → non-basis.

4.2 Melakukan Input Data PDRB Sektoral

# Data PDRB sektoral untuk 3 sektor di 3 daerah
pdrb <- data.frame(
  daerah = c("TANAH LAUT", "TANAH LAUT", "TANAH LAUT", "KOTABARU", "KOTABARU", "KOTABARU", "BANJAR", "BANJAR", "BANJAR","BARITO KUALA","BARITO KUALA","BARITO KUALA","TAPIN","TAPIN","TAPIN","HULU SUNGAI SELATAN","HULU SUNGAI SELATAN","HULU SUNGAI SELATAN","HULU SUNGAI TENGAH","HULU SUNGAI TENGAH","HULU SUNGAI TENGAH","HULU SUNGAI UTARA","HULU SUNGAI UTARA","HULU SUNGAI UTARA","TABALONG","TABALONG","TABALONG","TANAH BUMBU","TANAH BUMBU","TANAH BUMBU","BALANGAN","BALANGAN","BALANGAN","KOTA BANJARMASIN","KOTA BANJARMASIN","KOTA BANJARMASIN","KOTA BANJARBARU","KOTA BANJARBARU","KOTA BANJARBARU"),
  sektor = rep(c("Pertanian", "Industri", "Jasa"), times = 13),
  pdrb_daerah = c(1944197.71,5176879.24,3934938.83,3455025.5, 11277554,3970869.6, 2028284,4521711.4, 6101494.8, 1629038.1, 1866839.3, 2659976,1188681.4,3285381.1
, 2424820.8, 1141633.7, 1551342.6, 2346798, 1246685.5, 1247490.1, 2679399.9
, 555526.1,760604.9, 2232393.5, 1571804.5, 9839322.8, 4334596.9
, 2711862.4, 9268693.6, 4940204.5, 1030657, 7309225.5, 1634765.4, 566945.2
, 6812658, 16587379.2, 128670.9, 1841279.5, 4853331.4) # PDRB per kapita HK (dalam juta rupiah)
)

# Total per daerah & total provinsi (agregat seluruh daerah)
total_daerah <- pdrb %>%
  group_by(daerah) %>%
  summarise(total_daerah = sum(pdrb_daerah), .groups = "drop")

total_provinsi <- pdrb %>%
  group_by(sektor) %>%
  summarise(total_prov = sum(pdrb_daerah), .groups = "drop") %>%
  mutate(total_seluruh = sum(total_prov))

# Hitung LQ
lq <- pdrb %>%
  left_join(total_daerah, by = "daerah") %>%
  left_join(total_provinsi, by = "sektor") %>%
  mutate(
    share_daerah = pdrb_daerah / total_daerah,
    share_prov   = total_prov / total_seluruh,
    LQ = share_daerah / share_prov
  ) %>%
  mutate(LQ = round(LQ, 2))

lq

4.3 Visualisasi LQ per Sektor

ggplot(lq, aes(x = sektor, y = LQ, fill = daerah)) +
  geom_bar(stat = "identity", position = "dodge") +
  geom_hline(yintercept = 1, linetype = "dashed", color = "red") +
  labs(
    title = "Analisis Sektoral Unggulan (Location Quotient)",
    x = "Sektor Ekonomi",
    y = "Nilai LQ"
  ) +
  theme_minimal()
Nilai LQ per sektor per daerah

Nilai LQ per sektor per daerah

4.4 Interpretasi Grafik Location Quotient (LQ)

Grafik ini menampilkan nilai Location Quotient (LQ) untuk tiga sektor utama (yakni Industri, Jasa, dan Pertanian) pada setiap kabupaten/kota di Provinsi Kalimantan Selatan. Nilai LQ digunakan untuk mengidentifikasi sektor basis (unggulan), yaitu sektor ekonomi yang memiliki peran lebih besar di suatu daerah dibandingkan rata-rata provinsi.

Garis horizontal merah dengan nilai LQ = 1 menjadi batas pembeda antara sektor basis dan non-basis. Sektor dengan LQ > 1 dikategorikan sebagai sektor basis (unggulan) karena kontribusinya lebih besar dibandingkan rata-rata provinsi, sedangkan sektor dengan LQ < 1 tergolong non-basis, artinya kontribusinya masih di bawah rata-rata provinsi.

Secara keseluruhan, hasil analisis ini menunjukkan adanya variasi sektoral antarwilayah di Kalimantan Selatan. Wilayah perkotaan cenderung memiliki keunggulan pada sektor jasa, sedangkan wilayah rural dan hinterland masih bergantung pada sektor pertanian dan industri primer. Analisis Location Quotient ini menjadi dasar penting dalam perencanaan pembangunan ekonomi daerah, baik untuk memperkuat sektor basis yang sudah mapan maupun mengembangkan sektor potensial di daerah dengan nilai LQ mendekati 1 agar dapat menjadi sektor unggulan baru di masa depan.

4.5 Daftar Sektor Unggulan per Daerah

unggulan <- lq %>%
  group_by(daerah) %>%
  filter(LQ > 1) %>%
  arrange(daerah, desc(LQ)) %>%
  select(daerah, sektor, LQ)

unggulan

4.6 Ringkasan Jumlah Sektor Basis & Sektor Dominan

ringkasan_basis <- lq %>%
  mutate(basis = LQ > 1) %>%
  group_by(daerah) %>%
  summarise(
    n_basis = sum(basis, na.rm = TRUE),
    sektor_dominan = sektor[which.max(LQ)],
    LQ_dominan = max(LQ, na.rm = TRUE),
    .groups = "drop"
  )

ringkasan_basis

4.7 Peta LQ

# --- Persiapan data peta ---
peta_lq <- peta %>%
  mutate(daerah = KAB_KOTA) %>%
  mutate(
    daerah = daerah %>%
      str_squish() %>%
      str_to_title()
  )

# --- Persiapan data ringkasan ---
ringkasan_basis_map <- ringkasan_basis %>%
  mutate(
    daerah = daerah %>%
      str_squish() %>%
      str_to_title()
  )

# --- Gabungkan data ---
peta_lq_data <- peta_lq %>%
  left_join(ringkasan_basis_map, by = "daerah")

# --- Tambahkan centroid untuk label ---
centroid <- st_point_on_surface(peta_lq_data)

# --- Peta LQ dengan label sektor dominan dan batas administrasi ---
ggplot() +
  # Layer isi peta
  geom_sf(data = peta_lq_data,
          aes(fill = n_basis),
          color = "grey50", size = 0.3) +
  # Layer batas administrasi
  geom_sf(data = peta_lq,
          fill = NA,
          color = "black",
          size = 0.4) +
  # Label sektor dominan
  geom_sf_text(data = centroid,
               aes(label = sektor_dominan),
               size = 3) +
  scale_fill_viridis_c(option = "C", na.value = "grey90") +
  labs(
    title = "Peta LQ dengan Label Sektor Dominan",
    fill = "Jumlah Sektor\nLQ > 1"
  ) +
  theme_minimal()

4.8 Peta LQ (dengan Peta Interaktif Leaflet)

# --- MENYIAPKAN DATA UNTUK LEAFLET (CRS & GEOMETRI VALID) ---
peta_lq_leaf <- peta_lq_data %>%
  st_make_valid() %>%
  filter(!st_is_empty(geometry))

# Memastikan CRS = WGS84 (EPSG:4326) untuk leaflet
if (is.na(st_crs(peta_lq_leaf)) || st_crs(peta_lq_leaf)$epsg != 4326) {
  peta_lq_leaf <- st_transform(peta_lq_leaf, 4326)
}

# --- MEMPERSIAPKAN PALET WARNA BERDASARKAN n_basis (NUMERIK) ---
pal_lq <- colorNumeric(
  palette  = viridisLite::viridis(7),  # bisa diganti jumlah/jenis warna
  domain   = peta_lq_leaf$n_basis,
  na.color = "grey90"
)

# --- MENAMPILKAN PETA LEAFLET LQ: JUMLAH SEKTOR BASIS + SEKTOR DOMINAN ---
leaflet(peta_lq_leaf) %>%
  addProviderTiles(providers$CartoDB.Positron) %>%
  addPolygons(
    fillColor   = ~pal_lq(n_basis),
    color       = "#444444",
    weight      = 1,
    fillOpacity = 0.7,
    # LABEL (hover)
    label = ~paste0(
      "<b>", KAB_KOTA, "</b><br>",
      "Jumlah sektor basis (LQ > 1): ", n_basis, "<br>",
      "Sektor dominan: ", sektor_dominan
    ) %>% lapply(htmltools::HTML),
    # POPUP (klik)
    popup = ~paste0(
      "<b>Kabupaten/Kota:</b> ", KAB_KOTA,
      "<br><b>Jumlah sektor basis (LQ > 1):</b> ", n_basis,
      "<br><b>Sektor dominan:</b> ", sektor_dominan
    ),
    highlightOptions = highlightOptions(
      weight = 2,
      color  = "black",
      bringToFront = TRUE
    )
  ) %>%
  addLegend(
    pal    = pal_lq,
    values = ~n_basis,
    title  = "Jumlah Sektor Basis (LQ > 1)",
    opacity = 1
  ) %>%
  addScaleBar(position = "bottomleft")

5 Analisis Bagian C — Model Rasio Pertumbuhan (MRP)

5.1 Konsep & Rumus

Diberikan data PDRB sektoral dua periode (mis. t0 dan t1) baik untuk daerah maupun agregat acuan (provinsi/nasional):

  • Pertumbuhan sektor di daerah: \(g_{ij} = \frac{E_{ij}^{t1} - E_{ij}^{t0}}{E_{ij}^{t0}}\)
  • Pertumbuhan sektor di acuan: \(g_{in} = \frac{E_{in}^{t1} - E_{in}^{t0}}{E_{in}^{t0}}\)
  • Rasio Pertumbuhan (RPr): \(\text{RPr}_{ij} = \frac{g_{ij}}{g_{in}}\)

Pangsa (share) sektor:

  • Pangsa daerah: \(s_{ij}^{t} = \frac{E_{ij}^{t}}{E_{j}^{t}}\), dengan \(E_{j}^{t} = \sum_i E_{ij}^{t}\)

  • Pangsa acuan: \(s_{in}^{t} = \frac{E_{in}^{t}}{E_{n}^{t}}\), dengan \(E_{n}^{t} = \sum_i E_{in}^{t}\)

  • Rasio Pangsa (RPs): \(\text{RPs}_{ij} = \frac{s_{ij}^{t1}/s_{ij}^{t0}}{s_{in}^{t1}/s_{in}^{t0}}\)

Klasifikasi MRP (4 kuadran):
1) RPr>1 & RPs>1 → Maju & Pangsa Naik (sektor prospektif/unggul).
2) RPr>1 & RPs<1 → Tumbuh Cepat tapi Pangsa Turun (perlu penguatan daya saing).
3) RPr<1 & RPs>1 → Pertumbuhan Lambat tapi Pangsa Naik (relatif mapan, butuh inovasi).
4) RPr<1 & RPs<1 → Lambat & Pangsa Turun (sektor tertinggal).

5.2 Melakukan Input Data MRP (Tahun 2020 dan Tahun 2022)

set.seed(1)

# daftar kabupaten/kota
daerah_list <- c(
  "TANAH LAUT", "KOTABARU", "BANJAR", "BARITO KUALA", "TAPIN",
  "HULU SUNGAI SELATAN", "HULU SUNGAI TENGAH", "HULU SUNGAI UTARA",
  "TABALONG", "TANAH BUMBU", "BALANGAN",
  "KOTA BANJARMASIN", "KOTA BANJARBARU"
)

# buat kombinasi daerah x sektor x tahun
pdrb_time <- expand.grid(
  daerah = daerah_list,
  sektor = c("Pertanian", "Industri", "Jasa"),
  tahun  = c(2020, 2022)
) %>%
  arrange(daerah, sektor, tahun)

# isi nilai (harus 13 daerah × 3 sektor × 2 tahun = 78 angka)
pdrb_time <- pdrb_time %>%
  mutate(nilai = c(
  1862142.96, 1944197.71,  
    4701245.18, 5176879.24,  
    3600673.85, 3934938.83,  
    3289997.9, 3455025.5,  
    10378682.7, 11277554, 
    3636188.2, 3970869.6,  
    1984086.6, 2028284,  
    4088165.7, 4521711.4,  
    5660406.5, 6101494.8,  
    1595855.3, 1629038.1,  
    1710688.7, 1866839.3,  
    2453823.7, 2659976,  
    1211918.1, 1188681.4,  
    2923950.6, 3285381.1,  
    3210831.2, 2424820.8,  
    1147630.9, 1141633.7,  
    1337279.7, 1551342.6,  
    2165321, 2346798,
    1225922.1, 1246685.5,  
    1166059.8, 1247490.1,  
    2440765, 2679399.9,  
    547255.3, 555526.1,  
    699182.3, 760604.9, 
    2056899, 2232393.5,  
    1487516, 1571804.5,  
    9133409, 9839322.8,  
    3860384, 4334596.9,  
    2544394, 2711862.4,  
    8271395, 9268693.6,  
    4579876, 4940204.5,  
    991904.8, 1030657,  
    6647909, 7309225.5,  
    1538056, 1634765.4,  
    540330.5, 566945.2,  
    6332073, 6812658,  
    15056837, 16587379.2, 
    124734.2, 128670.9,  
    1709354, 1841279.5,  
    4284298, 4853331.4 # PDRB per kapita HK (dalam juta rupiah)
  ))

head(pdrb_time)

5.3 Perhitungan RPr & RPs

# Agregat referensi (provinsi/nasional) = penjumlahan seluruh daerah
agg_ref <- pdrb_time %>%
  group_by(sektor, tahun) %>%
  summarise(E_in = sum(nilai), .groups = "drop")

# Total ekonomi per daerah & total acuan
total_daerah_t <- pdrb_time %>%
  group_by(daerah, tahun) %>%
  summarise(E_jt = sum(nilai), .groups = "drop")

total_ref_t <- agg_ref %>%
  group_by(tahun) %>%
  summarise(E_nt = sum(E_in), .groups = "drop")

# Gabungkan semua
mrp_base <- pdrb_time %>%
  left_join(total_daerah_t, by = c("daerah","tahun")) %>%
  left_join(agg_ref, by = c("sektor","tahun")) %>%
  left_join(total_ref_t, by = "tahun") %>%
  mutate(
    s_ij = nilai / E_jt,  # pangsa sektor di daerah
    s_in = E_in / E_nt    # pangsa sektor di acuan
  )

# Pisahkan dua periode
t0 <- min(mrp_base$tahun)
t1 <- max(mrp_base$tahun)

mrp_t0 <- mrp_base %>% filter(tahun == t0) %>%
  select(daerah, sektor, nilai_t0 = nilai, s_ij_t0 = s_ij, s_in_t0 = s_in)

mrp_t1 <- mrp_base %>% filter(tahun == t1) %>%
  select(daerah, sektor, nilai_t1 = nilai, s_ij_t1 = s_ij, s_in_t1 = s_in)

# Hitung pertumbuhan & rasio
mrp <- mrp_t0 %>%
  inner_join(mrp_t1, by = c("daerah","sektor")) %>%
  group_by(sektor) %>%
  # Tambahkan agregat referensi per sektor (t0 & t1)
  mutate(
    E_in_t0 = sum(nilai_t0),
    E_in_t1 = sum(nilai_t1)
  ) %>%
  ungroup() %>%
  mutate(
    g_ij = (nilai_t1 - nilai_t0) / pmax(nilai_t0, 1e-9),
    g_in = (E_in_t1 - E_in_t0) / pmax(E_in_t0, 1e-9),
    RPr  = g_ij / pmax(g_in, 1e-9),
    RPs  = ( (s_ij_t1 / pmax(s_ij_t0, 1e-9)) / (s_in_t1 / pmax(s_in_t0, 1e-9)) )
  ) %>%
  mutate(
    klasifikasi_mrp = case_when(
      RPr > 1 & RPs > 1 ~ "I. Maju & Pangsa Naik",
      RPr > 1 & RPs <= 1 ~ "II. Tumbuh Cepat, Pangsa Turun",
      RPr <= 1 & RPs > 1 ~ "III. Lambat, Pangsa Naik",
      TRUE ~ "IV. Lambat & Pangsa Turun"
    )
  )

mrp %>%
  select(daerah, sektor, g_ij, g_in, RPr, RPs, klasifikasi_mrp) %>%
  arrange(daerah, sektor)

5.4 Visualisasi MRP (Scatter RPs vs RPr)

ggplot(mrp, aes(x = RPr, y = RPs, color = daerah, shape = sektor)) +
  geom_hline(yintercept = 1, linetype = "dashed") +
  geom_vline(xintercept = 1, linetype = "dashed") +
  geom_point(size = 3) +
  labs(
    title = "Model Rasio Pertumbuhan (MRP)",
    x = "Rasio Pertumbuhan (RPr)",
    y = "Rasio Pangsa (RPs)"
  ) +
  theme_minimal()

5.5 Interpretasi Grafik Model Rasio Pertumbuhan (MRP)

Grafik ini menampilkan hasil analisis Model Rasio Pertumbuhan (MRP) yang membandingkan Rasio Pertumbuhan (RPr) pada sumbu horizontal dan Rasio Pangsa (RPs) pada sumbu vertikal untuk berbagai sektor ekonomi di kabupaten/kota di Provinsi Kalimantan Selatan. Analisis ini digunakan untuk menilai dinamika dan potensi pertumbuhan sektoral di masing-masing daerah dengan memperhatikan kecepatan pertumbuhan sektor serta perubahan pangsanya terhadap total PDRB dibandingkan dengan wilayah acuan (provinsi).

Garis vertikal (RPr = 1) dan horizontal (RPs = 1) berfungsi sebagai batas pembeda antar-kuadran, yang menunjukkan empat kondisi pertumbuhan sektor ekonomi, yaitu:

  1. Kuadran I (RPr > 1 dan RPs > 1) → Sektor potensial dan berkembang pesat.
    Sektor pada posisi ini memiliki laju pertumbuhan yang lebih cepat dan pangsa yang meningkat lebih besar dibandingkan rata-rata provinsi.

  2. Kuadran II (RPr < 1 dan RPs > 1) → Sektor dominan namun pertumbuhannya mulai melambat.
    Sektor ini berkontribusi besar terhadap perekonomian daerah, tetapi pertumbuhannya lebih rendah dari rata-rata provinsi.

  3. Kuadran III (RPr > 1 dan RPs < 1) → Sektor dengan pertumbuhan cepat namun pangsanya kecil.
    Artinya sektor ini sedang berkembang dan berpotensi menjadi sektor basis baru di masa depan.

  4. Kuadran IV (RPr < 1 dan RPs < 1) → Sektor kurang berkembang.
    Pertumbuhan dan pangsa sektor berada di bawah rata-rata, menunjukkan sektor yang memerlukan perhatian dan dukungan kebijakan agar dapat tumbuh lebih optimal.

5.6 Ringkasan Kategori MRP per Daerah

mrp_ringkas <- mrp %>%
  group_by(daerah, klasifikasi_mrp) %>%
  summarise(n_sektor = n(), .groups = "drop") %>%
  arrange(daerah, klasifikasi_mrp)

mrp_unggulan <- mrp %>%
  filter(RPr > 1, RPs > 1) %>%
  select(daerah, sektor, RPr, RPs) %>%
  arrange(daerah, desc(RPr*RPs))

list(
  ringkasan = mrp_ringkas,
  sektor_unggulan = mrp_unggulan
)
## $ringkasan
## # A tibble: 28 × 3
##    daerah       klasifikasi_mrp                n_sektor
##    <fct>        <chr>                             <int>
##  1 TANAH LAUT   I. Maju & Pangsa Naik                 2
##  2 TANAH LAUT   II. Tumbuh Cepat, Pangsa Turun        1
##  3 KOTABARU     I. Maju & Pangsa Naik                 2
##  4 KOTABARU     IV. Lambat & Pangsa Turun             1
##  5 BANJAR       I. Maju & Pangsa Naik                 2
##  6 BANJAR       IV. Lambat & Pangsa Turun             1
##  7 BARITO KUALA I. Maju & Pangsa Naik                 1
##  8 BARITO KUALA III. Lambat, Pangsa Naik              1
##  9 BARITO KUALA IV. Lambat & Pangsa Turun             1
## 10 TAPIN        I. Maju & Pangsa Naik                 1
## # ℹ 18 more rows
## 
## $sektor_unggulan
## # A tibble: 19 × 4
##    daerah              sektor      RPr   RPs
##    <fct>               <fct>     <dbl> <dbl>
##  1 TANAH LAUT          Pertanian  1.27  1.00
##  2 TANAH LAUT          Jasa       1.22  1.01
##  3 KOTABARU            Pertanian  1.44  1.01
##  4 KOTABARU            Jasa       1.21  1.01
##  5 BANJAR              Industri   1.11  1.01
##  6 BANJAR              Jasa       1.02  1.00
##  7 BARITO KUALA        Jasa       1.10  1.02
##  8 TAPIN               Industri   1.29  1.18
##  9 HULU SUNGAI SELATAN Industri   1.67  1.05
## 10 HULU SUNGAI SELATAN Jasa       1.10  1.00
## 11 HULU SUNGAI TENGAH  Jasa       1.28  1.03
## 12 HULU SUNGAI UTARA   Jasa       1.12  1.01
## 13 TABALONG            Jasa       1.61  1.04
## 14 TABALONG            Pertanian  1.63  1.01
## 15 TANAH BUMBU         Pertanian  1.89  1.01
## 16 TANAH BUMBU         Industri   1.26  1.00
## 17 KOTA BANJARMASIN    Pertanian  1.42  1.00
## 18 KOTA BANJARMASIN    Jasa       1.33  1.01
## 19 KOTA BANJARBARU     Jasa       1.74  1.02

5.7 Peta MRP

Tujuan peta: menampilkan jumlah sektor kategori I (RPr>1 & RPs>1) per daerah.

peta_mrp <- peta %>%
  mutate(daerah = KAB_KOTA) %>%
  mutate(
    daerah = daerah %>%
      stringr::str_squish() %>%
      stringr::str_to_title()
  )

mrp_map <- mrp %>%
  mutate(
    daerah = daerah %>%
      stringr::str_squish() %>%
      stringr::str_to_title()
  ) %>%
  mutate(kat_I = (RPr > 1 & RPs > 1)) %>%
  group_by(daerah) %>%
  summarise(n_kategori_I = sum(kat_I, na.rm = TRUE), .groups = "drop")

peta_mrp_data <- peta_mrp %>%
  left_join(mrp_map, by = "daerah")

ggplot() +
  # layer isi peta (diwarnai berdasarkan n_kategori_I)
  geom_sf(data = peta_mrp_data,
          aes(fill = n_kategori_I),
          color = "grey30", size = 0.3) +     # <<< garis batas administrasi muncul

  # kalau mau, bisa tambah layer batas admin murni (tanpa fill)
  # geom_sf(data = peta_mrp, fill = NA, color = "black", size = 0.4) +

  scale_fill_viridis_c(option = "C", na.value = "grey90") +
  labs(
    title = "Peta MRP: Jumlah Sektor Kategori I (RPr > 1 & RPs > 1)",
    fill  = "Jumlah Sektor\nKategori I"
  ) +
  # label nama kab/kota
  geom_sf_text(
    data = peta_label,
    aes(label = KAB_KOTA),
    size = 2
  ) +
  theme_minimal()

5.8 Interpretasi Peta MRP

Peta ini menampilkan sebaran jumlah sektor ekonomi yang termasuk Kategori I pada setiap kabupaten/kota di Provinsi Kalimantan Selatan, yaitu sektor dengan Rasio Pertumbuhan (RPr) > 1 dan Rasio Pangsa (RPs) > 1. Sektor pada Kategori I dikategorikan sebagai sektor potensial dan dinamis karena tumbuh lebih cepat sekaligus mengalami peningkatan pangsa terhadap total PDRB dibandingkan wilayah acuan (provinsi).

Warna pada peta merepresentasikan banyaknya sektor Kategori I di masing-masing daerah. Wilayah dengan warna lebih cerah (nilai legenda lebih tinggi) memiliki lebih banyak sektor potensial, yang menunjukkan aktivitas ekonomi yang lebih dinamis dan terdiversifikasi. Daerah seperti Tanah Laut, Tanah Bumbu, Kotabaru, dan Tabalong termasuk dalam kelompok ini, sehingga dapat dianggap memiliki basis pertumbuhan sektoral yang kuat.

Sebaliknya, wilayah yang ditampilkan dengan warna lebih gelap memiliki jumlah sektor Kategori I yang lebih sedikit, menandakan bahwa hanya sebagian kecil sektor yang tumbuh lebih cepat dan memperbesar pangsanya. Beberapa kabupaten/kota di wilayah tengah seperti Hulu Sungai Selatan, Hulu Sungai Tengah, serta beberapa wilayah lain yang bernuansa lebih gelap pada peta, mencerminkan perlunya dorongan pengembangan sektor baru agar kinerjanya dapat menyamai atau melampaui rata-rata provinsi.

Secara keseluruhan, peta ini mengilustrasikan adanya perbedaan kapasitas pertumbuhan sektoral antarwilayah di Kalimantan Selatan. Wilayah dengan jumlah sektor Kategori I yang tinggi berpotensi menjadi lokomotif pertumbuhan ekonomi regional, sedangkan wilayah dengan jumlah sektor potensial yang rendah memerlukan perhatian khusus melalui kebijakan penguatan struktur ekonomi dan pengembangan sektor unggulan baru. Hasil ini dapat dimanfaatkan sebagai bahan pertimbangan dalam perencanaan pembangunan ekonomi daerah yang lebih terarah dan berbasis data.

5.9 Peta MRP (dengan Peta Interaktif Leaflet)

# --- MENYIAPKAN DATA UNTUK LEAFLET (CRS & GEOMETRI VALID) ---
peta_mrp_leaf <- peta_mrp_data %>%
  st_make_valid() %>%
  filter(!st_is_empty(geometry))

# Pastikan CRS = WGS84 (EPSG:4326) untuk leaflet
if (is.na(st_crs(peta_mrp_leaf)) || st_crs(peta_mrp_leaf)$epsg != 4326) {
  peta_mrp_leaf <- st_transform(peta_mrp_leaf, 4326)
}

# --- PALET WARNA BERDASARKAN n_kategori_I (NUMERIK) ---
pal_mrp <- colorNumeric(
  palette  = viridisLite::viridis(7),   # bisa diubah sesuai selera
  domain   = peta_mrp_leaf$n_kategori_I,
  na.color = "grey90"
)

# --- PETA LEAFLET MRP: JUMLAH SEKTOR KATEGORI I (RPr > 1 & RPs > 1) ---
leaflet(peta_mrp_leaf) %>%
  addProviderTiles(providers$CartoDB.Positron) %>%
  addPolygons(
    fillColor   = ~pal_mrp(n_kategori_I),
    color       = "#444444",
    weight      = 1,
    fillOpacity = 0.7,
    # LABEL (hover)
    label = ~paste0(
      "<b>", KAB_KOTA, "</b><br>",
      "Jumlah sektor kategori I (RPr > 1 & RPs > 1): ", n_kategori_I
    ) %>% lapply(htmltools::HTML),
    # POPUP (klik)
    popup = ~paste0(
      "<b>Kabupaten/Kota:</b> ", KAB_KOTA,
      "<br><b>Jumlah sektor kategori I (RPr > 1 & RPs > 1):</b> ", n_kategori_I
    ),
    highlightOptions = highlightOptions(
      weight = 2,
      color  = "black",
      bringToFront = TRUE
    )
  ) %>%
  addLegend(
    pal    = pal_mrp,
    values = ~n_kategori_I,
    title  = "Jumlah Sektor\nKategori I",
    opacity = 1
  ) %>%
  addScaleBar(position = "bottomleft")

6 Daftar Pustaka

Badan Pusat Statistik (BPS). (2025). Produk Domestik Regional Bruto per Kapita Atas Dasar Harga Konstan 2010 Menurut Kabupaten/Kota di Provinsi Kalimantan Selatan (ribu rupiah), 2022. diakses melalui: https://kalsel.bps.go.id/id/statistics-table/3/T1hBNVYwVjBjMU5oTTA5SFVuWjRVSGhuYUhsV1p6MDkjMyM2MzAw/produk-domestik-regional-bruto-per-kapita-atas-dasar-harga-konstan-2010-menurut-kabupaten-kota-di-provinsi-kalimantan-selatan--ribu-rupiah-.html?year=2022.

Badan Pusat Statistik (BPS). (2025). Publikasi Produk Domestik Regional Bruto 2020-2024.

Badan Pusat Statistik (BPS). (2025). Laju Pertumbuhan Produk Domestik Regional Bruto Atas Dasar Harga Konstan 2010 Menurut Kabupaten/Kota di Provinsi Kalimantan Selatan (persen), 2022. diakses melalui: https://kalsel.bps.go.id/id/statistics-table/3/WnpCcmNtcE1ibkF5VjFSelJHMUVhRE52WjNWSVp6MDkjMw==/laju-pertumbuhan-produk-domestik-regional-bruto-atas-dasar-harga-konstan-2010--menurut-kabupaten-kota-di-provinsi-kalimantan-selatan--2018.html?year=2022.