Pendahuluan

Kabupaten Lamongan memiliki berbagai kecamatan dengan karakteristik wilayah yang berbeda-beda, baik dari segi luas wilayah, jumlah desa, jumlah penduduk, maupun tingkat perkembangan desa. Perbedaan karakteristik tersebut dapat memberikan gambaran mengenai kondisi dan potensi wilayah yang dimiliki oleh masing-masing kecamatan. Oleh karena itu, diperlukan suatu metode analisis yang dapat mengelompokkan kecamatan berdasarkan kemiripan karakteristik wilayahnya.

Dalam penelitian ini digunakan metode K-Means Clustering, yaitu salah satu metode analisis klaster yang cukup populer dan sering digunakan dalam pengelompokan data numerik. Metode ini bekerja dengan membagi data ke dalam sejumlah cluster tertentu berdasarkan jarak antara objek data dengan pusat cluster (centroid).

Melalui metode K-Means Clustering, diharapkan dapat diperoleh pengelompokan kecamatan di Kabupaten Lamongan berdasarkan karakteristik wilayah, sehingga dapat memberikan gambaran mengenai kesamaan karakteristik antar kecamatan.

Pada analisis ini dilakukan pengelompokan kecamatan berdasarkan beberapa Variabel yaitu:

  • Luas wilayah
  • Jumlah desa
  • Jumlah penduduk
  • Jumlah desa maju

Overview Data

Data yang digunakan dalam analisis ini merupakan data karakteristik wilayah kecamatan di Kabupaten Lamongan tahun 2024 yang meliputi luas wilayah, jumlah desa/kelurahan, jumlah penduduk, serta jumlah desa maju. Data ini akan digunakan untuk melakukan pengelompokan wilayah menggunakan metode K-Means Clustering.

library(readxl)
library(DT)

data <- read_excel("D:/RSTUDIOo/komjut/Data Karakteristik wilayah lamongan.xlsx")

datatable(data)

Deskripsi Data

library(readxl)

data <- read_excel("D:/RSTUDIOo/komjut/Data Karakteristik wilayah lamongan.xlsx")

# merapikan nama kolom
colnames(data) <- c(
  "Kecamatan",
  "Luas_Wilayah",
  "Jumlah_Desa",
  "Jumlah_Penduduk",
  "Desa_Maju"
)

summary(data)
##   Kecamatan          Luas_Wilayah     Jumlah_Desa    Jumlah_Penduduk 
##  Length:27          Min.   : 30.15   Min.   : 9.00   Min.   : 42675  
##  Class :character   1st Qu.: 47.64   1st Qu.:16.00   1st Qu.: 83251  
##  Mode  :character   Median : 52.99   Median :18.00   Median : 97811  
##                     Mean   : 67.14   Mean   :17.56   Mean   :101221  
##                     3rd Qu.: 81.11   3rd Qu.:20.50   3rd Qu.:113792  
##                     Max.   :195.44   Max.   :29.00   Max.   :198496  
##    Desa_Maju     
##  Min.   : 0.000  
##  1st Qu.: 4.500  
##  Median : 7.000  
##  Mean   : 8.259  
##  3rd Qu.:13.000  
##  Max.   :19.000

Jumlah kecamatan dalam data adalah 27 kecamatan.

Rata-rata luas wilayah adalah 67.14 km².

Rata-rata jumlah penduduk adalah 1.0122093^{5} jiwa.

Uji Multikolinieritas

Uji multikolinieritas dilakukan untuk mengetahui apakah terdapat hubungan yang kuat antar variabel yang digunakan dalam analisis. Pengujian dilakukan menggunakan Variance Inflation Factor (VIF).

Kriteria pengujian: - VIF < 5 → tidak terjadi multikolinieritas - VIF 5 – 10 → multikolinieritas sedang - VIF > 10 → terjadi multikolinieritas tinggi

library(car)
## Loading required package: carData
library(knitr)

# memilih variabel numerik
data_vif <- data[,2:5]

# fungsi untuk menghitung VIF semua variabel
vif_values <- sapply(names(data_vif), function(x){
  form <- as.formula(paste(x, "~ ."))
  vif(lm(form, data=data_vif))[[1]]
})

# membuat tabel hasil
vif_result <- data.frame(
  Variabel = names(data_vif),
  VIF = round(vif_values,3)
)

kable(vif_result,
      caption = "Hasil Uji Multikolinieritas Menggunakan VIF")
Hasil Uji Multikolinieritas Menggunakan VIF
Variabel VIF
Luas_Wilayah Luas_Wilayah 1.866
Jumlah_Desa Jumlah_Desa 1.173
Jumlah_Penduduk Jumlah_Penduduk 1.130
Desa_Maju Desa_Maju 1.028

Berdasarkan hasil perhitungan Variance Inflation Factor (VIF) pada tabel di atas, apabila seluruh variabel memiliki nilai VIF kurang dari 10, maka dapat disimpulkan bahwa tidak terdapat masalah multikolinieritas antar variabel yang digunakan dalam analisis. Dengan demikian variabel luas wilayah, jumlah desa, jumlah penduduk, dan jumlah desa maju dapat digunakan bersama dalam proses analisis K-Means Clustering.

Standardisasi DATA

library(DT)

data_cluster <- data[,2:5]

data_scaled <- scale(data_cluster)

# mengubah ke data frame agar mudah ditampilkan
data_scaled_df <- as.data.frame(data_scaled)

datatable(data_scaled_df,
          caption = "Data Setelah Standardisasi",
          options = list(pageLength = 10, scrollX = TRUE))

Deteksi Outlier Menggunakan Jarak Mahalanobis

library(knitr)

# menghitung jarak Mahalanobis
mahal_dist <- mahalanobis(data_scaled,
                          colMeans(data_scaled),
                          cov(data_scaled))

cutoff <- qchisq(0.975, df = ncol(data_scaled))

outlier_result <- data.frame(
  Kecamatan = data$Kecamatan,
  Mahalanobis_Distance = mahal_dist,
  Cutoff = cutoff,
  Outlier = mahal_dist > cutoff
)

kable(outlier_result,
      caption = "Hasil Deteksi Outlier Menggunakan Jarak Mahalanobis")
Hasil Deteksi Outlier Menggunakan Jarak Mahalanobis
Kecamatan Mahalanobis_Distance Cutoff Outlier
Lamongan 2.3381823 11.14329 FALSE
Turi 1.4900203 11.14329 FALSE
Deket 0.3968808 11.14329 FALSE
Tikung 1.4222716 11.14329 FALSE
Kembangbahu 2.0794043 11.14329 FALSE
Mantup 5.5496872 11.14329 FALSE
Sambeng 15.1679885 11.14329 TRUE
Ngimbang 2.1820025 11.14329 FALSE
Bluluk 4.8506236 11.14329 FALSE
Sukorame 4.7196612 11.14329 FALSE
Modo 0.5161536 11.14329 FALSE
Babat 5.3544119 11.14329 FALSE
Kedungpring 1.4770998 11.14329 FALSE
Sugio 5.8395293 11.14329 FALSE
Sukodadi 0.6660854 11.14329 FALSE
Pucuk 1.5071353 11.14329 FALSE
Sekaran 2.1916199 11.14329 FALSE
Maduran 2.2092179 11.14329 FALSE
Laren 1.1052695 11.14329 FALSE
Brondong 6.6524296 11.14329 FALSE
Paciran 9.0075255 11.14329 FALSE
Solokuro 4.7554388 11.14329 FALSE
Karanggeneng 2.5166285 11.14329 FALSE
Kalitengah 2.5154214 11.14329 FALSE
Karangbinangun 4.3777089 11.14329 FALSE
Glagah 8.6126590 11.14329 FALSE
Sarirejo 4.4989435 11.14329 FALSE

Berdasarkan hasil deteksi outlier menggunakan jarak Mahalanobis, terdapat satu observasi yang memiliki nilai jarak lebih besar dari nilai batas (cutoff) distribusi Chi-Square sehingga dapat dikategorikan sebagai outlier, yaitu Kecamatan Sambeng. Hal ini menunjukkan bahwa Kecamatan Sambeng memiliki karakteristik yang cukup berbeda dibandingkan dengan kecamatan lainnya berdasarkan variabel yang digunakan dalam analisis, yaitu luas wilayah, jumlah desa, jumlah penduduk, dan jumlah desa maju.

Meskipun demikian, data yang teridentifikasi sebagai outlier tersebut tetap digunakan dalam proses analisis. Hal ini disebabkan karena tujuan penelitian ini adalah untuk melakukan pengelompokan kecamatan berdasarkan karakteristik wilayah sehingga keberadaan data yang memiliki perbedaan cukup besar justru dapat memberikan informasi penting mengenai kecamatan yang memiliki karakteristik khusus dibandingkan dengan wilayah lainnya.

Dengan demikian, keberadaan Kecamatan Sambeng sebagai outlier tidak dihapus dari dataset, tetapi tetap dipertahankan agar hasil analisis K-Means Clustering dapat menggambarkan kondisi karakteristik wilayah kecamatan di Kabupaten Lamongan secara lebih nyata dan komprehensif. # Menentukan Jumlah Cluster

Metode yang digunakan untuk menentukan jumlah cluster adalah Elbow Method.

set.seed(123)

wss <- numeric(10)

for(i in 1:10){
  wss[i] <- kmeans(data_scaled, centers = i)$tot.withinss
}

plot(1:10, wss,
     type="b",
     pch=19,
     xlab="Jumlah Cluster",
     ylab="Total Within Sum of Squares",
     main="Metode Elbow")

Jumlah cluster optimal dipilih berdasarkan titik siku (elbow) pada grafik.

Berdasarkan grafik metode Elbow di atas, terlihat bahwa penurunan nilai Within Sum of Squares (WSS) mulai melambat setelah jumlah cluster tertentu. Titik perubahan tersebut menunjukkan jumlah cluster yang paling optimal untuk digunakan dalam analisis. Oleh karena itu, jumlah cluster yang dipilih dalam penelitian ini adalah 3 cluster, karena pada titik tersebut terjadi perubahan kemiringan grafik yang cukup jelas.

Jumlah cluster optimal dipilih berdasarkan titik siku (elbow) pada grafik.

Model K-Means

set.seed(123)

model <- kmeans(data_scaled, centers = 3)

model
## K-means clustering with 3 clusters of sizes 18, 8, 1
## 
## Cluster means:
##   Luas_Wilayah Jumlah_Desa Jumlah_Penduduk  Desa_Maju
## 1   -0.3261051  -0.4266205      -0.1205050 -0.5636141
## 2    0.2568799   0.8476276       0.2608918  1.0501456
## 3    3.8148520   0.8981484       0.0819565  1.7438883
## 
## Clustering vector:
##  [1] 1 1 1 1 2 1 3 2 1 1 1 2 2 2 1 1 1 1 2 1 1 1 1 1 2 2 1
## 
## Within cluster sum of squares by cluster:
## [1] 44.47746 14.30270  0.00000
##  (between_SS / total_SS =  43.5 %)
## 
## Available components:
## 
## [1] "cluster"      "centers"      "totss"        "withinss"     "tot.withinss"
## [6] "betweenss"    "size"         "iter"         "ifault"

Cluster yang terbentuk sebanyak 3 kelompok.

Hasil Pengelompokan

library(DT)

data$Cluster <- model$cluster

datatable(data,
          caption = "Hasil Pengelompokan Kecamatan Berdasarkan K-Means Clustering",
          options = list(pageLength = 10, scrollX = TRUE))

Jumlah anggota setiap cluster adalah:

table(data$Cluster)
## 
##  1  2  3 
## 18  8  1

Centroid Cluster

model$centers
##   Luas_Wilayah Jumlah_Desa Jumlah_Penduduk  Desa_Maju
## 1   -0.3261051  -0.4266205      -0.1205050 -0.5636141
## 2    0.2568799   0.8476276       0.2608918  1.0501456
## 3    3.8148520   0.8981484       0.0819565  1.7438883

Nilai centroid menunjukkan karakteristik rata-rata setiap cluster.

Visualisasi Cluster

## Loading required package: ggplot2
## Welcome! Want to learn more? See two factoextra-related books at https://goo.gl/ve3WBa
Visualisasi K-Means Clustering

Visualisasi K-Means Clustering

Kesimpulan

Berdasarkan hasil visualisasi K-Means Clustering, terlihat bahwa terdapat satu objek yang berada cukup jauh dari kelompok data lainnya. Kondisi ini menunjukkan adanya pencilan (outlier) dalam hasil pengelompokan.

Keberadaan pencilan tersebut mengindikasikan bahwa kecamatan tersebut memiliki karakteristik yang cukup berbeda dibandingkan dengan kecamatan lainnya berdasarkan variabel yang digunakan, yaitu luas wilayah, jumlah desa, jumlah penduduk, dan jumlah desa maju. Perbedaan karakteristik tersebut menyebabkan kecamatan tersebut cenderung membentuk cluster tersendiri atau berada pada posisi yang jauh dari pusat cluster lainnya.hasil pengelompokan ini dapat membantu mengidentifikasi kecamatan yang memiliki karakteristik wilayah yang unik sehingga dapat menjadi pertimbangan dalam perencanaan dan pengambilan kebijakan pembangunan daerah.