library(sf)
library(spdep)
library(tmap)
library(ggplot2)
library(bispdep)
library(mapview)
library(dplyr)
library(psych)
library(readxl)
library(openxlsx)
library(tidyr)
library(viridis)

STEP 1 IDENTIFIKASI DATA

data sekunder yang diperoleh dari publikasi resmi Badan Pusat Statistik (BPS) Provinsi Banten tahun 2024. Variabel utama yang digunakan terdiri dari Indeks Pembangunan Manusia (IPM) sebagai variabel independen (X) [1] dan Persentase Tingkat Pengangguran Terbuka (TPT) sebagai variabel dependen (Y) [2].

Input Data

# 1. Import Data
shp<-st_read("C:/Users/asus/Downloads/SHPBANTEN/Banten_ADMIN_BPS.shp")
## Reading layer `Banten_ADMIN_BPS' from data source 
##   `C:\Users\asus\Downloads\SHPBANTEN\Banten_ADMIN_BPS.shp' using driver `ESRI Shapefile'
## Simple feature collection with 8 features and 6 fields
## Geometry type: MULTIPOLYGON
## Dimension:     XY
## Bounding box:  xmin: 105.0998 ymin: -7.016779 xmax: 106.7799 ymax: -5.807418
## Geodetic CRS:  WGS 84
# Data IPM dan TPT 2024
dataeko<-read_excel("dataekonomi.xlsx", sheet = 1)

# Gabungkan Data shapefile kabupaten/kota
shp_joined <- shp %>%
  left_join(dataeko, by = c("Kabupaten" = "Kabkot"))

Statistik Deskriptif

describe(dataeko[, c("IPM", "TPT")])
##     vars n  mean   sd median trimmed  mad   min   max range skew kurtosis   se
## IPM    1 8 73.50 6.03  74.04   73.50 8.15 65.86 82.89 17.03 0.17    -1.57 2.13
## TPT    2 8  6.72 1.33   6.16    6.72 0.89  5.09  9.18  4.09 0.63    -1.11 0.47
cor_val <- cor(shp_joined$IPM, shp_joined$TPT, use = "complete.obs")

# Model regresi
model <- lm(TPT ~ IPM, data = st_drop_geometry(shp_joined))
coef <- coef(model)
r2 <- summary(model)$r.squared

# Buat label persamaan dan R²
intercept <- round(coef[1], 2)
slope <- round(coef[2], 2)
sign_slope <- ifelse(slope >= 0, "+", "-")
label_eq <- paste0("y = ", intercept, " ", sign_slope, " ", abs(slope), "x\nR² = ", round(r2, 2))

ggplot(shp_joined %>% st_drop_geometry(),
       aes(x = IPM, y = TPT, color = IPM)) +
  geom_point(size = 4, alpha = 0.8) +
  geom_smooth(method = "lm", se = TRUE, color = "moccasin", linewidth = 1) +
  scale_color_viridis(option = "plasma", direction = -1) +  # warna gradasi
  theme_minimal(base_size = 13) +
  theme(
    panel.background = element_rect(fill = "white", color = NA),  # latar belakang gelap
    plot.background = element_rect(fill = "sienna", color = NA),
    panel.grid.major = element_line(color = "black"),
    panel.grid.minor = element_line(color = "black"),
    axis.text = element_text(color = "white"),
    axis.title = element_text(color = "white", face = "bold"),
    plot.title = element_text(color = "white", face = "bold", size = 14),
    legend.text = element_text(color = "white"),
    legend.title = element_text(color = "white")
  ) +
  labs(
    title = "Relationship between the HDI and the UR in Banten 2024",
    x = "Human Development Index (HDI)",
    y = "Open Unemployment Rate (UR) ",
    color = "HDI"
  )+
  annotate("label",
           x = 67, y = 9.2,
           label = label_eq,
           fill = "khaki", color = "black", size = 4, hjust = 0)
## `geom_smooth()` using formula = 'y ~ x'

Interpretasi :

Berdasarkan hasil statistik deskriptif, nilai Indeks Pembangunan Manusia (IPM) rata-rata Provinsi Banten tahun 2024 sebesar 73.50, dengan nilai minimum 65.86 dan maksimum 82.89. Hal ini menunjukkan adanya perbedaan dalam Indeks Pembangunan Manusia antar kabupaten/kota di provinsi Banten.

Sedangkan Tingkat Pengangguran Terbuka (TPT) memiliki rata-rata sebesar 6.72% dengan variasi yang cukup tinggi (SD = 1.33), menunjukkan bahwa perbedaan jarak pengangguran antar kabupaten/kota masih ada.

Gambar scatterplot menunjukkan hubungan antara Indeks Pembangunan Manusia (IPM) dan Tingkat Pengangguran Terbuka (TPT) di kabupaten/kota Provinsi Banten. Pola sebaran titik memperlihatkan arah negatif antara kedua variabel. Secara substantif, hubungan negatif ini mengindikasikan bahwa wilayah dengan IPM lebih tinggi cenderung memiliki tingkat pengangguran yang lebih rendah. Hal ini dapat dijelaskan karena peningkatan IPM (yang mencerminkan kemajuan pendidikan, kesehatan, dan standar hidup) umumnya diikuti dengan peningkatan kualitas sumber daya manusia dan daya serap tenaga kerja. Dengan arti model Artinya, setiap kenaikan 1 poin IPM diperkirakan akan menurunkan TPT sebesar 0.15 poin. Nilai $ R ^ 2=0.45 $ menunjukkan bahwa sekitar 45% variasi tingkat pengangguran di Banten dapat dijelaskan oleh perbedaan tingkat IPM antar kabupaten/kota, sedangkan sisanya (55%) dipengaruhi oleh faktor lain seperti struktur ekonomi, peluang kerja, dan investasi daerah.

Visualisasi Peta Spasial

  1. ) Indeks Pembangunan Manusia (IPM)
tmap_mode("view")
## ℹ tmap mode set to "view".
#Pemetaan Variabel IPM
mapview(shp_joined, zcol = "IPM")

Interpretasi :

  1. Peta Sebaran Indeks Pembangunan Manusia (IPM) 2024

wilayah dengan Warna kuning menunjukkan nilai IPM wilayah tersebut tinggi, sedangkan warna ungu tua menandakan nilai IPM yang rendah. Jadi berdasarkan gambar peta di atas dapat dikatakan :

  • Kota Tangerang dan Kota Tangerang Selatan, memiliki IPM tertinggi (sekitar >80). Daerah ini merupakan wilayah perkotaan dan penyangga DKI Jakarta, dengan infrastruktur dan akses pendidikan yang lebih baik.

  • Sebaliknya, Kabupaten Lebak dan Kabupaten Pandeglang di bagian selatan tampak berwarna ungu gelap, artinya memiliki IPM yang rendah (sekitar 66–72). Hal ini menunjukkan bahwa pembangunan manusia di wilayah selatan masih tertinggal, kemungkinan karena faktor geografis dan keterbatasan fasilitas pendidikan serta kesehatan.

b.) Tingkat Pengangguran Terbuka (TPT)

tmap_mode("view")
## ℹ tmap mode set to "view".
#Pemetaan Variabel Kemiskinan
mapview(shp_joined, zcol = "TPT")

Interpretasi :

Warna pada peta menunjukkan variasi Tingkat Pengangguran Terbuka (TPT) di tiap kabupaten/kota di Provinsi Banten. Warna ungu tua menunjukkan TPT rendah, sedangkan warna kuning menunjukkan TPT tinggi.Berdasarkan peta, terlihat bahwa:

  • Kota Tangerang Selatan dan Kota Tangerang memiliki TPT paling rendah (sekitar 5–6%). Hal ini bisa disebabkan oleh banyaknya peluang kerja di sektor jasa, perdagangan, dan industri karena kedekatannya dengan DKI Jakarta.

  • Sementara itu, Kabupaten Serang dan Kabupaten Pandeglang tampak berwarna kuning, menandakan TPT yang tinggi (sekitar 8–9%). Kemungkinan disebabkan oleh keterbatasan lapangan kerja.

Jika dibandingkan dengan peta IPM, tampak bahwa daerah dengan IPM tinggi cenderung memiliki TPT rendah, menunjukkan adanya hubungan negatif antara pembangunan manusia dan pengangguran. Jadi secara garis besar jika suatu wilayah memiliki nilai semakin baik dalam kualitas SDM, maka kemungkinan semakin kecil juga risiko pengangguran.

Analisis Autokorelasi Spasial Bivariat

  1. ) Menghitung Pembobotan (Queen Contiguity, Inverse Distance, dan k-nearest neighbors (k-NN))
shp_joined$Keminskinan <- as.numeric(shp_joined$Kemiskinan)
shp_joined$IPM <- as.numeric(shp_joined$IPM)

# -------------------------------------------------------
# Queen contiguity
nb1 <- poly2nb(shp_joined, queen = TRUE)
lw1 <- nb2listw(nb1, style = "W", zero.policy = TRUE)
lw1
## Characteristics of weights list object:
## Neighbour list object:
## Number of regions: 8 
## Number of nonzero links: 20 
## Percentage nonzero weights: 31.25 
## Average number of links: 2.5 
## 
## Weights style: W 
## Weights constants summary:
##   n nn S0       S1    S2
## W 8 64  8 7.016667 38.25
# -------------------------------------------------------
# Inverse Distance
centroid<-st_centroid(shp_joined)
## Warning: st_centroid assumes attributes are constant over geometries
longlat<-st_coordinates(centroid)
jarak<-dist(longlat)
w<-as.matrix(1/jarak)
lw<-mat2listw(w)
## Warning in mat2listw(w): style is M (missing); style should be set to a valid
## value
lw
## Characteristics of weights list object:
## Neighbour list object:
## Number of regions: 8 
## Number of nonzero links: 56 
## Percentage nonzero weights: 87.5 
## Average number of links: 7 
## 
## Weights style: M 
## Weights constants summary:
##   n nn       S0       S1       S2
## M 8 64 209.5287 6428.557 29605.44
#-------------------------------------------------------------
#PEMBOBOT KNN
longlat<- as.matrix(longlat)
k1<-knn2nb(knearneigh(longlat,k=3))
## Warning in knearneigh(longlat, k = 3): k greater than one-third of the number
## of data points
listw<-nb2listw(k1)
print(listw)
## Characteristics of weights list object:
## Neighbour list object:
## Number of regions: 8 
## Number of nonzero links: 24 
## Percentage nonzero weights: 37.5 
## Average number of links: 3 
## Non-symmetric neighbours list
## 
## Weights style: W 
## Weights constants summary:
##   n nn S0       S1       S2
## W 8 64  8 4.444444 35.55556

b.) Menghitung Moran Bivariate Global

# 3. Global Bivariate Moran’s I

# Pembobotan Queen 
#-------------------------------------------------------------
moranbiv_queen <- moranbi.test(shp_joined$IPM,shp_joined$TPT,lw1,rank=TRUE,
                               zero.policy=TRUE,alternative="two.sided")
moranbiv_queen
## 
##  Bivariate Moran I_{xy} test under randomisation
## 
## data:  shp_joined$IPM using rank correction 
## weights: lw1    
## 
## Bivariate Moran Z(I_{xy}) statistic = -2.1613, p-value = 0.03067
## alternative hypothesis: two.sided
## sample estimates:
## Bivariate Moran I_{xy} statistic                      Expectation 
##                      -0.41914125                       0.09616161 
##                         Variance 
##                       0.05684696
# Inverse Distance 
#-------------------------------------------------------------
moranbiv_jarak <- moranbi.test(shp_joined$IPM,shp_joined$TPT,lw,rank=TRUE,
                               zero.policy=TRUE,alternative="two.sided")
moranbiv_jarak
## 
##  Bivariate Moran I_{xy} test under randomisation
## 
## data:  shp_joined$IPM using rank correction 
## weights: lw    
## 
## Bivariate Moran Z(I_{xy}) statistic = -0.62328, p-value = 0.5331
## alternative hypothesis: two.sided
## sample estimates:
## Bivariate Moran I_{xy} statistic                      Expectation 
##                      -0.07372557                       0.09616161 
##                         Variance 
##                       0.07429309
#k-nearest neighbors (k-NN)
#-------------------------------------------------------------
moranbiv_knn <- moranbi.test(shp_joined$IPM,shp_joined$TPT,listw,rank=TRUE,
                             zero.policy=TRUE,alternative="two.sided")
moranbiv_knn
## 
##  Bivariate Moran I_{xy} test under randomisation
## 
## data:  shp_joined$IPM using rank correction 
## weights: listw    
## 
## Bivariate Moran Z(I_{xy}) statistic = -2.9519, p-value = 0.003159
## alternative hypothesis: two.sided
## sample estimates:
## Bivariate Moran I_{xy} statistic                      Expectation 
##                      -0.37277188                       0.09616161 
##                         Variance 
##                       0.02523656

Interpretasi :

  1. Model Queen Contiguity (P-Value = 0.03067)

Model ini mengasumsikan bahwa wilayah yang berbagi batas (bersebelahan secara langsung) saling berpengaruh.

Nilai p-value < 0.05 menunjukkan bahwa terdapat autokorelasi spasial signifikan antara kedua variabel (misalnya IPM dan TPT).

Artinya, daerah dengan IPM tinggi cenderung bertetangga dengan daerah dengan TPT rendah atau daerah dengan IPM rendah cenderung bertetangga dengan daerah yang TPT nya tinggi, dengan adanya pola berikut maka dapat dikatakan bahwa kedua variabel tersebut menunjukkan adanya pola spasial yang jelas.

  1. Model Inverse Distance (P-Value = 0.5331)

Model ini adalah pembobotan berdasarkan jarak antar centroid wilayah (semakin jauh, pengaruh semakin kecil).

Karena p-value > 0.05, maka tidak terdapat autokorelasi spasial signifikan.

Ini menunjukkan bahwa hubungan spasial antar wilayah tidak cukup kuat bila diukur berdasarkan jarak fisik, mungkin karena luas wilayah Banten relatif kecil.

  1. Model KNN (k = 3, P-Value = 0.003159)

Pada model pembobotan ini kita mengganggap bawah tiap wilayah dianggap memiliki 3 tetangga terdekat berdasarkan jarak.

P-value < 0.05 berarti terdapat autokorelasi spasial signifikan.

Artinya, dua wilayah yang paling dekat satu sama lain memiliki hubungan spasial yang nyata dalam hal nilai kedua variabel.

Oleh karena itu, secara garis besar model terbaik yang bisa menangkap pola spasial yang lebih baik adalah model Queen contiguity dan KNN (k=2) karena hasil analisa menunjukkan adanya autokorelasi spasial signifikan.

Menghitung Local Moran Bivariate (LISA)

Karena sudah diketahui model yang signifikan diantara ketiga jenis pembobotan. Maka yang dilakukan analisa Local Indicator of Spatial Autocorrelation (LISA) adalah Queen dan KNN (k=3).

# 4. Local Bivariate Moran’s I (LISA)
# -------------------------------------------------------
# pembobotan Queen
local_biv<- localmoran.bi(varX = shp_joined$IPM,
                           varY = shp_joined$TPT,
                           listw = lw1,
                           zero.policy = TRUE)
local_biv
##           Ixyi       E.Ixyi    Var.Ixyi     Z.Ixyi Pr(z != 0)
## 1  0.126562096 0.0081115477 0.095242042  0.3838157  0.7011151
## 2  0.037746590 0.0007215258 0.008565965  0.4000439  0.6891242
## 3 -0.234703872 0.1283532796 0.514405647 -0.5062000  0.6127163
## 4 -0.215650383 0.2662526067 0.796962696 -0.5398096  0.5893283
## 5 -0.253317351 0.1763628612 0.343747097 -0.7328681  0.4636389
## 6 -0.201198944 0.1280581016 0.513500732 -0.4594778  0.6458911
## 7  0.000737335 0.0603859947 0.043552730 -0.2858203  0.7750158
## 8 -0.002149812 0.0010469843 0.001552975 -0.0811209  0.9353458
## attr(,"call")
## localmoran.bi(varX = shp_joined$IPM, varY = shp_joined$TPT, listw = lw1, 
##     zero.policy = TRUE)
## attr(,"class")
## [1] "localmoran.bi" "matrix"        "array"
# pembobotan kNN
local_biv1<- localmoran.bi(varX = shp_joined$IPM,
                           varY = shp_joined$TPT,
                           listw = listw,
                           zero.policy = TRUE)
local_biv1
##           Ixyi       E.Ixyi    Var.Ixyi      Z.Ixyi Pr(z != 0)
## 1  0.037683376 0.0081115477 0.021164898  0.20326850  0.8389252
## 2  0.005916895 0.0007215258 0.001903548  0.11907881  0.9052129
## 3 -0.129253496 0.1283532796 0.274349678 -0.49181872  0.6228475
## 4 -0.104568932 0.2662526067 0.425046771 -0.56878298  0.5695034
## 5 -0.338123159 0.1763628612 0.343747097 -0.87751401  0.3802075
## 6 -0.161317069 0.1280581016 0.273867057 -0.55295701  0.5802928
## 7  0.042308983 0.0603859947 0.145175766 -0.04744381  0.9621595
## 8 -0.012536717 0.0010469843 0.002760844 -0.25852182  0.7960042
## attr(,"call")
## localmoran.bi(varX = shp_joined$IPM, varY = shp_joined$TPT, listw = listw, 
##     zero.policy = TRUE)
## attr(,"class")
## [1] "localmoran.bi" "matrix"        "array"

Interpretasi :

Berdasarkan hasil perhitungan Local Moran’s I Bivariate (LISA) antara variabel Indeks Pembangunan Manusia (IPM) dan Tingkat Pengangguran Terbuka (TPT) menggunakan pembobotan spasial Queen dan K-Nearest Neighbors (k = 3), diperoleh hasil seperti output di atas.

Nilai p-value > 0.05, yang berarti tidak terdapat hubungan spasial yang signifikan secara statistik antara IPM dan TPT pada tingkat kabupaten/kota. Artinya, peningkatan atau penurunan IPM di suatu wilayah belum berhubungan kuat dengan kondisi TPT di wilayah sekitar. Hal ini kemungkinan besar disebabkan oleh:

  • 8 kabupaten/kota di Banten, berarti ada 8 observasi total. Sehingga dalam menggunakan model, hubungan spasial (tetangga) yang bisa diuji sedikit.

  • Jadi data yang digunakan dalam studi kasus rentan banget “noisy” sehingga nilai Z bisa kecil meskipun ada kecenderungan pola spasial.

Scatterplot Moran

# MORAN SCATTERPLOT
# ================================================
# 1. Buat variabel lag dan standarisasi
# ================================================
shp_joined$scale.Y <- scale(shp_joined$TPT) %>% as.vector()
shp_joined$lag.X   <- lag.listw(lw1, scale(shp_joined$IPM) %>% as.vector())

# ================================================
# 2. Buat data frame untuk scatter plot Moran
# ================================================
df_plot <- data.frame(
  x = shp_joined$lag.X,
  y = shp_joined$scale.Y,
  label = shp_joined$Kabupaten
)

# ================================================
# 3. Tentukan kuadran Moran (sesuai LISA)
# ================================================
df_plot <- df_plot %>%
  mutate(
    quadrant = case_when(
      x >= 0 & y >= 0 ~ "High-High",
      x <= 0 & y >= 0 ~ "Low-High",
      x <= 0 & y <= 0 ~ "Low-Low",
      x >= 0 & y <= 0 ~ "High-Low"
    )
  )
# ================================================
# 4. Plot Moran Scatter
# ================================================
ggplot(df_plot, aes(x = x, y = y, color = quadrant)) +
  geom_hline(yintercept = 0, linetype = "dashed", color = "black") +
  geom_vline(xintercept = 0, linetype = "dashed", color = "black") +
  geom_point(size = 4, alpha = 0.8) +
  geom_smooth(method = "lm", se = FALSE, color = "black", linetype = "solid") +
  geom_text(aes(label = label), hjust = -0.1, vjust = -0.3, size = 3) +
  scale_color_manual(values = c(
    "High-High" = "red",
    "High-Low"  = "blue",
    "Low-High"  = "olivedrab",
    "Low-Low"   = "mediumvioletred"
  )) +
  labs(
    x = "Lag Indeks Pembangunan Manusia (IPM)",
    y = "Tingkat Pengangguran Terbuka (TPT) (Standar)",
    title = "Moran Scatter Plot (LISA): IPM vs TPT",
    color = "Kuadran"
  ) +
  theme_minimal(base_size = 14) +
  theme(
    plot.title = element_text(face = "bold", hjust = 0.5),
    legend.background = element_rect(
      fill = "aliceblue", 
      colour = "gray80",
      size = 0.5,
      linetype = "solid"
    ),
    legend.box.background = element_rect(
      fill = "gray",
      colour = "gray60",
      size = 0.8
    ),
    legend.key = element_rect(fill = "white"),
    legend.box.margin = margin(5, 5, 5, 5),
    legend.position = "right",
    panel.background = element_rect(fill = "seashell", color = NA),
    plot.background  = element_rect(fill = "white", color = NA)
  )
## Warning: The `size` argument of `element_rect()` is deprecated as of ggplot2 3.4.0.
## ℹ Please use the `linewidth` argument instead.
## This warning is displayed once every 8 hours.
## Call `lifecycle::last_lifecycle_warnings()` to see where this warning was
## generated.
## `geom_smooth()` using formula = 'y ~ x'

table(df_plot$quadrant)
## 
## High-Low Low-High  Low-Low 
##        3        3        2

LISA Plot

# Standarisasi dan lag
shp_joined$scale.Y <- scale(shp_joined$TPT) %>% as.vector()
shp_joined$lag.X <- lag.listw(lw1, scale(shp_joined$IPM) %>% as.vector())

# Inisialisasi kolom
shp_joined$quad_sig <- NA

# Klasifikasi kuadran LISA
shp_joined[(shp_joined$scale.Y >= 0 & shp_joined$lag.X >= 0), "quad_sig"] <- "high-high"
shp_joined[(shp_joined$scale.Y <= 0 & shp_joined$lag.X <= 0), "quad_sig"] <- "low-low"
shp_joined[(shp_joined$scale.Y >= 0 & shp_joined$lag.X <= 0), "quad_sig"] <- "high-low"
shp_joined[(shp_joined$scale.Y <= 0 & shp_joined$lag.X >= 0), "quad_sig"] <- "low-high"

# Kolom signifikansi
shp_joined$sig <- NA
shp_joined[(local_biv[,5] <= 0.05), "sig"] <- "Signifikan"
shp_joined[(local_biv[,5] > 0.05), "sig"] <- "Tidak Signifikan"

tmap_mode("view")  # bisa juga "plot" kalau mau hasil statis
## ℹ tmap mode set to "view".
tm_shape(shp_joined) +
  tm_polygons(
    fill = "quad_sig",
    fill.scale = tm_scale(
      values = c(
        "high-high" = "brown",
        "low-low"   = "seagreen",
        "low-high"  = "gold",
        "high-low"  = "rosybrown1"
      ),
      labels = c("High-High", "Low-Low", "Low-High", "High-Low")
    ),
    fill.legend = tm_legend(
      title = "Kuadran LISA IPM vs TPT"
    ),
    drop.levels = FALSE
  ) +
  tm_borders(col = "gray50") +
  tm_layout(
    legend.outside = TRUE,
    main.title = "Peta Kuadran LISA (Local Moran's I)",
    main.title.size = 1.2
  )
## 
## ── tmap v3 code detected ───────────────────────────────────────────────────────
## [v3->v4] `tm_tm_polygons()`: migrate the argument(s) related to the scale of
## the visual variable `fill` namely 'drop.levels' to fill.scale =
## tm_scale(<HERE>).
## ℹ For small multiples, specify a 'tm_scale_' for each multiple, and put them in
##   a list: 'fill.scale = list(<scale1>, <scale2>, ...)'[v3->v4] `tm_layout()`: use `tm_title()` instead of `tm_layout(main.title = )`

Interpretasi :

Berdasarkan distribusi LISA, terlihat bahwa wilayah-wilayah di Provinsi Banten hanya tersebar ke dalam tiga kuadran, yaitu High–Low, Low–High, dan Low–Low. Wilayah yang berada pada kuadran High–Low ditunjukkan oleh Kota Tangerang, Kabupaten Tangerang, dan Kota Tangerang Selatan. Ketiga wilayah ini memiliki nilai IPM yang tinggi namun dikelilingi oleh wilayah dengan tingkat pengangguran yang rendah. Kondisi ini mencerminkan daerah dengan pembangunan manusia yang baik serta perekonomian yang relatif stabil. Sementara itu, kuadran Low–High ditempati oleh Kabupaten Pandeglang, Kota Serang, dan Kabupaten Serang. Wilayah-wilayah ini memiliki nilai IPM yang relatif rendah namun berada di sekitar daerah dengan tingkat pengangguran tinggi. Hal tersebut menunjukkan wilayah pada kategori ini umumnya menghadapi tantangan dalam pemerataan pembangunan dan penyediaan lapangan kerja yang sesuai dengan kualitas sumber daya manusia yang ada. Sementara itu, Kabupaten Lebak dan Kota Cilegon berada pada kuadran Low–Low. Artinya, kedua wilayah tersebut memiliki nilai IPM dan TPT yang sama-sama rendah.Dengan diketahui pola-pola sebaran ini bisa menjadi dasar bagi pemerintah daerah dalam merancang kebijakan pembangunan yang lebih kontekstual dan tidak terdapat kesenjangan antarwilayah.

Kesimpulan

Hasil penelitian menunjukkan adanya autokorelasi spasial negatif yang signifikan antara IPM dan TPT. Nilai Moran’s I tertinggi diperoleh pada pembobot KNN (k=3) sebesar -0,3728 (p<0,05) dan Queen Contiguity sebesar -0,4191 (p<0,05), sedangkan pembobot Inverse Distance tidak signifikan. Temuan ini mengindikasikan bahwa pembobot KNN dan Queen lebih sensitif dalam mendeteksi pola spasial pada wilayah dengan unit observasi terbatas seperti Banten (n=8). Berdasarkan peta spasial Wilayah Tangerang Raya berperan sebagai pusat pertumbuhan dengan karakteristik IPM tinggi dan TPT rendah, sedangkan wilayah barat dan selatan seperti Serang, Pandeglang, dan Lebak menunjukkan kondisi sebaliknya. Pemerintah Provinsi Banten perlu memfokuskan kebijakan pembangunan manusia pada wilayah ber-IPM rendah melalui peningkatan pendidikan, pelatihan keterampilan, dan penciptaan lapangan kerja lokal. Selain itu, perlu strategi konektivitas ekonomi antarwilayah agar efek pertumbuhan dari kawasan maju dapat tersalurkan secara merata. Pola ini memperlihatkan keterkaitan erat antara pembangunan manusia dan pengangguran terbuka yang tidak tersebar secara acak, sehingga penting untuk menjadi dasar perumusan kebijakan pembangunan wilayah yang lebih terarah dan kontekstual.