Tugas_Clustering_TPG

Penjelasan Kasus

Judul/Tema

Analisis Pengelompokan Provinsi/Daerah di Indonesia Berdasarkan Indikator Kriminalitas dengan Metode K-Means dan Ward’s Clustering.

Latar Belakang

Kriminalitas merupakan indikator penting dalam menilai kondisi keamanan suatu wilayah. Di Indonesia, tingkat dan karakteristik tindak pidana bervariasi antar provinsi, dipengaruhi oleh faktor sosial, ekonomi, kependudukan, dan efektivitas penegakan hukum. Analisis terhadap pola kriminalitas antar wilayah diperlukan agar kebijakan pengendalian kejahatan dapat dirumuskan secara tepat sasaran dan berbasis data.

Pendekatan statistik konvensional sering kali hanya menyoroti jumlah kasus, sehingga belum mampu menggambarkan kompleksitas situasi secara menyeluruh. Oleh karena itu, teknik clustering diperlukan untuk mengelompokkan provinsi berdasarkan kesamaan karakteristik kriminalitas tanpa memerlukan kategori awal.

Penelitian ini menggunakan dua pendekatan clustering, yaitu K-Means sebagai metode non-hierarki dan Ward’s Method sebagai metode hierarki, dengan variabel yang mencakup jumlah kejahatan, risiko per 100.000 penduduk, persentase penyelesaian perkara, serta selang waktu terjadinya tindak pidana. Hasil analisis diharapkan dapat memberikan gambaran pola kriminalitas antar provinsi serta menjadi dasar pertimbangan bagi perumusan strategi peningkatan keamanan yang lebih efektif.

Tujuan

  1. Mengelompokkan provinsi di Indonesia berdasarkan indikator kriminalitas untuk melihat pola wilayah dengan tingkat risiko kejahatan berbeda.
  2. Membandingkan hasil pengelompokan menggunakan metode hierarchical clustering (Ward) dan non-hierarchical clustering (K-Means).
  3. Mengidentifikasi karakteristik tiap cluster sebagai dasar pemahaman kondisi keamanan di tiap provinsi.

Peubah yang digunakan

  1. Jumlah Kejahatan yang Dilaporkan (Var1) : Total laporan tindak pidana di setiap provinsi
  2. Risiko Terjadi Tindak Pidana per 100.000 Penduduk (Var2): Indikasi probabilitas penduduk menjadi korban berdasarkan populasi
  3. Persentase Penyelesaian Tindak Pidana (Var3):Proporsi kasus kejahatan yang berhasil ditangani dituntaskan
  4. Selang Waktu Terjadinya Tindak Pidana(Var4): Interval waktu rata-rata antar kejadian kejahatan di wilayah tersebut
    sumber: https://www.bps.go.id/id/statistics-table?subject=526\

Pengolahan Data

Input Data

library(readxl)
data <- read_xlsx("D:\\DEPARTEMEN\\SEMESTER 5\\TPG\\Data_tpg_clustering.xlsx")
head(data)
## # A tibble: 6 × 5
##   `Kepolisian Daerah` `Jumlah Kejahatan yang Dilaporkan` Risiko Penduduk Terja…¹
##   <chr>                                            <dbl>                   <dbl>
## 1 Aceh                                              6651                     125
## 2 Sumatera Utara                                   36534                     250
## 3 Sumatera Barat                                    5666                     103
## 4 Riau                                              7512                     110
## 5 Jambi                                             3701                     104
## 6 Sumatera Selatan                                 13037                     153
## # ℹ abbreviated name:
## #   ¹​`Risiko Penduduk Terjadi Tindak Pidana per 100.000 Penduduk`
## # ℹ 2 more variables: `Persentase Penyelesaian Tindak Pidana` <dbl>,
## #   `Selang Waktu Terjadinya Tindak Pidana` <chr>

NOTE Polda Metro Jaya meliputi Polres Jakarta Selatan, Jakarta Timur, Jakarta Pusat, Jakarta Utara, Jakarta Barat, Kepulauan Seribu, Kabupaten Bekasi, Kota Bekasi,Kabupaten Tangerang, Kota Tangerang, Kota Depok, Bandara Soekarno-Hatta, dan Kesatuan Pelaksanaan Pengamanan Pelabuhan (KP3) Tanjung Priok

Merapihkan data

library(dplyr)
## 
## Attaching package: 'dplyr'
## The following objects are masked from 'package:stats':
## 
##     filter, lag
## The following objects are masked from 'package:base':
## 
##     intersect, setdiff, setequal, union
library(lubridate)
## 
## Attaching package: 'lubridate'
## The following objects are masked from 'package:base':
## 
##     date, intersect, setdiff, union
# Mengubah Nama Kolom

data_temp <- data %>%
  rename(
    Provinsi = 1, # Kolom 1 diubah menjadi 'Provinsi'
    Var1 = 2, # Kolom 2 diubah
    Var2= 3, # Kolom 3 diubah
    Var3 = 4, # Kolom 4 diubah
    Varr4 = 5
 
  )

# Mengkonversi Kolom Waktu ('Selang_Waktu_HHMMSS') ke Satuan Menit

data_kriminalitas<- data_temp %>%
  mutate(
    Var4 = round(as.duration(hms(Varr4)) / dminutes(1),3)
  ) %>%
  # Hapus kolom waktu lama yang berformat teks
  select(-Varr4)

#Memeriksa Struktur Data Akhir
head(data_kriminalitas)
## # A tibble: 6 × 5
##   Provinsi          Var1  Var2  Var3  Var4
##   <chr>            <dbl> <dbl> <dbl> <dbl>
## 1 Aceh              6651   125  57.0  79.0
## 2 Sumatera Utara   36534   250  68.4  14.4
## 3 Sumatera Barat    5666   103 100    92.8
## 4 Riau              7512   110  77.3  70.0
## 5 Jambi             3701   104  79.2 142  
## 6 Sumatera Selatan 13037   153  74    40.3
str(data_kriminalitas)
## tibble [34 × 5] (S3: tbl_df/tbl/data.frame)
##  $ Provinsi: chr [1:34] "Aceh" "Sumatera Utara" "Sumatera Barat" "Riau" ...
##  $ Var1    : num [1:34] 6651 36534 5666 7512 3701 ...
##  $ Var2    : num [1:34] 125 250 103 110 104 153 177 115 108 111 ...
##  $ Var3    : num [1:34] 57 68.4 100 77.3 79.2 ...
##  $ Var4    : num [1:34] 79 14.4 92.8 70 142 ...

Standarisasi

library(tidyverse)
## ── Attaching core tidyverse packages ──────────────────────── tidyverse 2.0.0 ──
## ✔ forcats 1.0.1     ✔ stringr 1.5.2
## ✔ ggplot2 4.0.0     ✔ tibble  3.3.0
## ✔ purrr   1.1.0     ✔ tidyr   1.3.1
## ✔ readr   2.1.5     
## ── Conflicts ────────────────────────────────────────── tidyverse_conflicts() ──
## ✖ dplyr::filter() masks stats::filter()
## ✖ dplyr::lag()    masks stats::lag()
## ℹ Use the conflicted package (<http://conflicted.r-lib.org/>) to force all conflicts to become errors
# Membuat matriks data klaster 
data_klaster_matriks <- data_kriminalitas %>%
  column_to_rownames(var = "Provinsi")

# Melakukan penskalaan (Standardisasi)
data_scaled <- scale(data_klaster_matriks)
data_scaled_df <- as.data.frame(data_scaled)

Menentukan jumlah cluster optimal (k)

library(factoextra)
## Warning: package 'factoextra' was built under R version 4.5.2
## Welcome! Want to learn more? See two factoextra-related books at https://goo.gl/ve3WBa
# Plot Elbow (WSS)
# Cari titik 'siku' dimana penurunan WSS mulai melambat.
fviz_nbclust(data_scaled, kmeans, method = "wss", k.max = 10) +
  labs(subtitle = "Metode Elbow (WSS)")

# Plot Silhouette
# Cari k yang menghasilkan rata-rata nilai Silhouette tertinggi.
fviz_nbclust(data_scaled, kmeans, method = "silhouette", k.max = 10) +
  labs(subtitle = "Metode Silhouette")

Berdasarkan plot tersebut dapat dilihat bahwa k optimum yang terpilih adalah k=5. Pada plot elbow k dipilih denga melihat penurunan total within sum of square yang melambat, Sedangkan pada silhoutte k yang dipilih dilihat berdasarkan average silhoutte widht tertinggi. Oleh karenanya terpililah K=5.

K-Means (k=5)

library(tidyverse) 
library(cluster)   
## Warning: package 'cluster' was built under R version 4.5.2
library(factoextra)

k_optimal <- 5

# 1. Jalankan Algoritma K-Means
# set.seed(123) digunakan agar hasil klaster tetap
set.seed(123)
kmeans_result <- kmeans(data_scaled,
                        centers = k_optimal,
                        nstart = 25) 

# 2. Melihat Output Dasar K-Means
cat("--- Ringkasan Hasil K-Means ---\n")
## --- Ringkasan Hasil K-Means ---
print(kmeans_result)
## K-means clustering with 5 clusters of sizes 7, 2, 8, 4, 13
## 
## Cluster means:
##         Var1       Var2       Var3        Var4
## 1 -0.3682488  1.1446719 -1.1605131 -0.06801936
## 2  3.3465009  1.9630538  0.8936069 -1.06259266
## 3  0.3694716 -0.1750873 -0.5018158 -0.65454357
## 4 -0.7507486 -0.2945878  0.2730522  2.27063816
## 5 -0.3129260 -0.7199816  0.7122073 -0.09576025
## 
## Clustering vector:
##                      Aceh            Sumatera Utara            Sumatera Barat 
##                         3                         2                         5 
##                      Riau                     Jambi          Sumatera Selatan 
##                         5                         5                         3 
##                  Bengkulu                   Lampung Kepulauan Bangka Belitung 
##                         1                         3                         4 
##            Kepulauan Riau               Metro Jaya1                Jawa Barat 
##                         5                         2                         5 
##               Jawa Tengah             DI Yogyakarta                Jawa Timur 
##                         5                         5                         3 
##                    Banten                      Bali       Nusa Tenggara Barat 
##                         5                         5                         3 
##       Nusa Tenggara Timur          Kalimantan Barat         Kalimantan Tengah 
##                         3                         5                         5 
##        Kalimantan Selatan          Kalimantan Timur         Kalimantan Utara2 
##                         5                         3                         4 
##            Sulawesi Utara           Sulawesi Tengah          Sulawesi Selatan 
##                         1                         1                         3 
##         Sulawesi Tenggara                 Gorontalo            Sulawesi Barat 
##                         5                         1                         4 
##                    Maluku              Maluku Utara               Papua Barat 
##                         1                         4                         1 
##                     Papua 
##                         1 
## 
## Within cluster sum of squares by cluster:
## [1]  5.418914  1.990967  9.093409  3.989865 12.937684
##  (between_SS / total_SS =  74.7 %)
## 
## Available components:
## 
## [1] "cluster"      "centers"      "totss"        "withinss"     "tot.withinss"
## [6] "betweenss"    "size"         "iter"         "ifault"
# 3. Tambahkan Hasil Klaster ke Data Asli (Non-scaled)
data_dengan_klaster <- data_kriminalitas %>%
  mutate(Cluster_KMeans = factor(kmeans_result$cluster))
head(data_dengan_klaster)
## # A tibble: 6 × 6
##   Provinsi          Var1  Var2  Var3  Var4 Cluster_KMeans
##   <chr>            <dbl> <dbl> <dbl> <dbl> <fct>         
## 1 Aceh              6651   125  57.0  79.0 3             
## 2 Sumatera Utara   36534   250  68.4  14.4 2             
## 3 Sumatera Barat    5666   103 100    92.8 5             
## 4 Riau              7512   110  77.3  70.0 5             
## 5 Jambi             3701   104  79.2 142   5             
## 6 Sumatera Selatan 13037   153  74    40.3 3
head(kmeans_result)
## $cluster
##                      Aceh            Sumatera Utara            Sumatera Barat 
##                         3                         2                         5 
##                      Riau                     Jambi          Sumatera Selatan 
##                         5                         5                         3 
##                  Bengkulu                   Lampung Kepulauan Bangka Belitung 
##                         1                         3                         4 
##            Kepulauan Riau               Metro Jaya1                Jawa Barat 
##                         5                         2                         5 
##               Jawa Tengah             DI Yogyakarta                Jawa Timur 
##                         5                         5                         3 
##                    Banten                      Bali       Nusa Tenggara Barat 
##                         5                         5                         3 
##       Nusa Tenggara Timur          Kalimantan Barat         Kalimantan Tengah 
##                         3                         5                         5 
##        Kalimantan Selatan          Kalimantan Timur         Kalimantan Utara2 
##                         5                         3                         4 
##            Sulawesi Utara           Sulawesi Tengah          Sulawesi Selatan 
##                         1                         1                         3 
##         Sulawesi Tenggara                 Gorontalo            Sulawesi Barat 
##                         5                         1                         4 
##                    Maluku              Maluku Utara               Papua Barat 
##                         1                         4                         1 
##                     Papua 
##                         1 
## 
## $centers
##         Var1       Var2       Var3        Var4
## 1 -0.3682488  1.1446719 -1.1605131 -0.06801936
## 2  3.3465009  1.9630538  0.8936069 -1.06259266
## 3  0.3694716 -0.1750873 -0.5018158 -0.65454357
## 4 -0.7507486 -0.2945878  0.2730522  2.27063816
## 5 -0.3129260 -0.7199816  0.7122073 -0.09576025
## 
## $totss
## [1] 132
## 
## $withinss
## [1]  5.418914  1.990967  9.093409  3.989865 12.937684
## 
## $tot.withinss
## [1] 33.43084
## 
## $betweenss
## [1] 98.56916

Plot hasil K-means

library(factoextra)

fviz_cluster(kmeans_result, data = data_scaled_df,
             geom = "point",
             ellipse.type = "convex",
             main = paste("K-Means Clustering Provinsi Kriminalitas (k =", k_optimal, ")"),
             ggtheme = theme_bw())

Berdasarkan Visual ini sumbu horizontal menjelaskan variasi terbesar (43.7%). Provinsi yang letaknya jauh di sebelah kanan memiliki nilai yang sangat berbeda pada variabel tertentu dibandingkan dengan provinsi di sebelah kiri.

Dim2 (Sumbu Y, 29.9% Variansi): Sumbu vertikal ini menjelaskan variasi terbesar kedua (29.9%).

Dilihat dari jaraknya semakin jauh jarak dua cluster pada plot maka semakin besar perbedaan profil kriminalitas antara kelompok provinsi tersebut.

Anggota Cluster dan Profilnya

Berikutnya akan dilihat anggota dan profil Cluster, agar dapat diketahui provinsi mana saja yang masuk dalam suatu cluster.

library(dplyr)
#  Anggota provinsi per klaster
data_dengan_klaster %>%
  select(Provinsi, Cluster_KMeans) %>%
  arrange(Cluster_KMeans) %>%
  print(n = 34) 
## # A tibble: 34 × 2
##    Provinsi                  Cluster_KMeans
##    <chr>                     <fct>         
##  1 Bengkulu                  1             
##  2 Sulawesi Utara            1             
##  3 Sulawesi Tengah           1             
##  4 Gorontalo                 1             
##  5 Maluku                    1             
##  6 Papua Barat               1             
##  7 Papua                     1             
##  8 Sumatera Utara            2             
##  9 Metro Jaya1               2             
## 10 Aceh                      3             
## 11 Sumatera Selatan          3             
## 12 Lampung                   3             
## 13 Jawa Timur                3             
## 14 Nusa Tenggara Barat       3             
## 15 Nusa Tenggara Timur       3             
## 16 Kalimantan Timur          3             
## 17 Sulawesi Selatan          3             
## 18 Kepulauan Bangka Belitung 4             
## 19 Kalimantan Utara2         4             
## 20 Sulawesi Barat            4             
## 21 Maluku Utara              4             
## 22 Sumatera Barat            5             
## 23 Riau                      5             
## 24 Jambi                     5             
## 25 Kepulauan Riau            5             
## 26 Jawa Barat                5             
## 27 Jawa Tengah               5             
## 28 DI Yogyakarta             5             
## 29 Banten                    5             
## 30 Bali                      5             
## 31 Kalimantan Barat          5             
## 32 Kalimantan Tengah         5             
## 33 Kalimantan Selatan        5             
## 34 Sulawesi Tenggara         5
# Tabel Profil Interpretasi Klaster K-Means (untuk memberi nama pada klaster)
profil_klaster_kmeans <- data_dengan_klaster %>%
  group_by(Cluster_KMeans) %>%
  summarise(
    Rata_Var1_Jml_Kejahatan = mean(Var1),
    Rata_Var2_Risiko_per_100rb = mean(Var2),
    Rata_Var3_Persen_Selesai = mean(Var3),
    Rata_Var4_Selang_Waktu_Menit = mean(Var4)
  )
print(profil_klaster_kmeans)
## # A tibble: 5 × 5
##   Cluster_KMeans Rata_Var1_Jml_Kejahatan Rata_Var2_Risiko_per_100rb
##   <fct>                            <dbl>                      <dbl>
## 1 1                                4207.                      208. 
## 2 2                               32818.                      264. 
## 3 3                                9889.                      118. 
## 4 4                                1261.                      110  
## 5 5                                4633.                       81.1
## # ℹ 2 more variables: Rata_Var3_Persen_Selesai <dbl>,
## #   Rata_Var4_Selang_Waktu_Menit <dbl>

Penjelesan

  1. Cluster 1 : Klaster resiko tinggi dan penanganan rendah.
    Karakteristik Kunci: Memiliki Risiko (Var2) tertinggi kedua (207.8) namun Persentase Penyelesaian (Var3) terendah (47.4%).
    Implikasi: Provinsi dalam kelompok ini menghadapi tingkat risiko kriminalitas yang tinggi tetapi memiliki tantangan signifikan dalam penyelesaian kasus. Provinsi yang termasuk: Bengkulu, Sulawesi Utara, Sulawesi Tengah, Gorontalo, Maluku, Papua Barat, Papua.
    Faktor Pendorong: Risiko Kriminalitas Tinggi (Var2)Poin Utama: Wilayah ini memiliki tingkat risiko menjadi korban kejahatan yang tinggi (Var2 \(\approx 207.8\) per \(100.000\) penduduk).Hubungan Sosio-Ekonomi: Risiko tinggi ini didorong oleh kesenjangan ekonomi yang besar dan tingkat kemiskinan di atas rata-rata, terutama di wilayah Indonesia Timur. Kesenjangan ini menciptakan tekanan sosial yang mendorong kejahatan properti dan konflik sosial. 2. Faktor Penghambat: Efektivitas Penanganan Rendah (Var3)Poin Utama: Klaster ini memiliki Persentase Penyelesaian Kasus (Var3) yang sangat rendah (hanya \(\approx 47.4\%\)), menunjukkan efektivitas penegakan hukum yang buruk.Hubungan Geografis & Sumber Daya:Keterpencilan Geografis: Struktur wilayah kepulauan (Maluku, Papua Barat) atau topografi yang sulit menyebabkan aksesibilitas dan waktu respons penegak hukum menjadi sangat lambat. Kesulitan ini menghambat pengumpulan bukti dan saksi, sehingga menekan angka penyelesaian perkara.

  2. Cluster 2 : Klaster Risiko kritis dan penanganan cepat.
    Karakteristik Kunci: Memiliki Risiko (Var2) tertinggi (263.5) dan Selang Waktu (Var4) terpendek (16.2 menit). Selang waktu yang sangat pendek menunjukkan frekuensi kejahatan yang sangat tinggi (sangat sering).
    Implikasi: Kelompok ini terdiri dari Provinsi-Provinsi dengan tingkat kriminalitas yang sangat tinggi dan intensitas yang masif. Namun, mereka juga menunjukkan efektivitas penegakan hukum yang baik (Persen Selesai tinggi, 83.18%).

  3. Cluster 3 : Klaster Risiko menengah & Kasus Cepat
    Karakteristik Kunci: Risiko (Var2) dan Jumlah Kejahatan (Var1) berada di tingkat menengah. Selang Waktu (Var4) relatif pendek (67.7 menit).
    Implikasi: Kelompok ini menghadapi risiko kriminalitas yang moderat dengan frekuensi yang cukup sering, memerlukan perhatian yang seimbang antara pencegahan dan penegakan.

  4. Cluster 4 : Karakteristik Kunci: Memiliki Risiko (Var2) terendah (10.0) dan Selang Waktu (Var4) terlama (437.1 menit, atau lebih dari 7 jam). Implikasi: Ini adalah kelompok Provinsi yang menikmati tingkat keamanan publik tertinggi, dengan kasus kejahatan yang sangat jarang. Basis keamanan paling tinggi

  5. Cluster 5 : Klaster risiko terendah
    Klaster resiko rendah dan efektif
    Karakteristik Kunci: Risiko (Var2) relatif rendah (81.07) dan memiliki Persen Penyelesaian (Var3) tinggi (80.02%).
    Implikasi: Provinsi ini berhasil mengelola risiko kriminalitasnya dengan tingkat efektivitas penegakan hukum yang baik.

Cluster 4 dan 5 masuk dalam area daerah yang cukup aman.

Simpulan keterangan cluster kluster 1: Zona merah dengan tantangan penegakan hukum.

kluster 2: Kriminalitas intensif. Provinsi/daerah yang masuk dalam kluster ini adalah daerah-daerah metropolitan, masuk akal bila tingkat kriminalitas nya tinggi dan penangann pun cepat karena memang memiliki fasilitas keamanan yang lebih banyak dan porper.

kluster 3: Area kriminalitas moderat (tingkat kriminalitasnya tak terlalu tinggi dan tak terlalu rendah).kluster ini dapat menjadi target kebijakan pencegahan dan pengawasan rutin.Fokus utamanya adalah pencegahan agar tak bergeser ke kluster risiko tingi

kluster 4: daerah aman dan respponsif
kluster 5: daerah dengan basis keamanan paling tinggi

NOTE Polda Metro Jaya meliputi Polres Jakarta Selatan, Jakarta Timur, Jakarta Pusat, Jakarta Utara, Jakarta Barat, Kepulauan Seribu, Kabupaten Bekasi, Kota Bekasi,Kabupaten Tangerang, Kota Tangerang, Kota Depok, Bandara Soekarno-Hatta, dan Kesatuan Pelaksanaan Pengamanan Pelabuhan (KP3) Tanjung Priok

Metode Hierarki (Ward’s)

Ward’s

Ward’s Method (atau ward.D2 di R) digunakan karena cenderung menghasilkan klaster yang kompak dan berukuran relatif sama, menjadikannya perbandingan yang baik dengan K-Means.

library(cluster)
library(factoextra)


k_visualisasi <- 5 

# 1. Hitung Matriks Jarak
dist_mat <- dist(data_scaled, method = "euclidean")

# 2. Terapkan Ward's Hierarchical Clustering
hc_result <- hclust(dist_mat, method = "ward.D2")

# 3. Visualisasi Dendrogram DENGAN PEWARNAAN untuk tujuan visualisasi/pewarnaan
cat("--- Dendrogram Ward's Clustering (Dipotong Visual k=5) ---\n")
## --- Dendrogram Ward's Clustering (Dipotong Visual k=5) ---
fviz_dend(hc_result,
          k = k_visualisasi, 
          cex = 0.6,
          main = "Dendrogram Ward's Clustering",
          k_colors = "jco",
          rect = TRUE,
          rect_border = "jco",
          rect_fill = TRUE,
          ggtheme = theme_bw())
## Warning: `aes_string()` was deprecated in ggplot2 3.0.0.
## ℹ Please use tidy evaluation idioms with `aes()`.
## ℹ See also `vignette("ggplot2-in-packages")` for more information.
## ℹ The deprecated feature was likely used in the factoextra package.
##   Please report the issue at <https://github.com/kassambara/factoextra/issues>.
## This warning is displayed once every 8 hours.
## Call `lifecycle::last_lifecycle_warnings()` to see where this warning was
## generated.
## Warning: Using `size` aesthetic for lines was deprecated in ggplot2 3.4.0.
## ℹ Please use `linewidth` instead.
## ℹ The deprecated feature was likely used in the factoextra package.
##   Please report the issue at <https://github.com/kassambara/factoextra/issues>.
## This warning is displayed once every 8 hours.
## Call `lifecycle::last_lifecycle_warnings()` to see where this warning was
## generated.
## Warning: The `<scale>` argument of `guides()` cannot be `FALSE`. Use "none" instead as
## of ggplot2 3.3.4.
## ℹ The deprecated feature was likely used in the factoextra package.
##   Please report the issue at <https://github.com/kassambara/factoextra/issues>.
## This warning is displayed once every 8 hours.
## Call `lifecycle::last_lifecycle_warnings()` to see where this warning was
## generated.

Berdasarkan gambar dendogram tersebut terdapat 5 cluster yang terbentuk.

Height rendah (0–3) → penggabungan antar provinsi/cluster yang sangat mirip.

Height tinggi (di atas 6) → penggabungan antar kelompok yang cukup berbeda karakteristiknya.

Bagian bawah dendrogram (height < 3): Terdapat banyak garis pendek dan rapat — seperti pada cluster kuning (Papua Barat, Gorontalo, Sulawesi Tengah, Bengkulu). Artinya provinsi-provinsi ini memiliki karakteristik yang sangat mirip sehingga bergabung cepat di height rendah.

Cluster merah (misal Bali, Jawa Tengah, Jambi, Sumatera Barat, DIY): Bergabung di sekitar height 2–3, menandakan tingkat kemiripan yang kuat di antara anggota cluster tersebut.

Cluster abu-abu (misal Nusa Tenggara, Maluku Utara, Maluku): Bergabung sedikit lebih tinggi (sekitar height 3–4), jadi masih mirip, tapi tidak sedekat cluster kuning/merah.

Cluster biru dan kuning baru menyatu di height yang tinggi (sekitar 6–7): Kedua kelompok besar ini cukup berbeda karakteristiknya(berdasarkan variabel yang digunakan)

Cabang paling tinggi (height tertinggi, garis hitam besar di atas): menunjukkan penggabungan antar dua cluster besar terakhir — perbedaan mereka paling besar di seluruh data.Semakin tinggi cabang ini, semakin berbeda antar kelompok utama provinsi di Indonesia.

Anggota dan Profil Cluster

# Contoh: Memotong Dendrogram pada Tinggi h=4
h_optimal <- 4
clusters_ward_new <- cutree(hc_result, h = h_optimal)

# Hitung jumlah klaster yang dihasilkan dari pemotongan ini
k_hasil <- length(unique(clusters_ward_new))
cat(paste("Jumlah Klaster yang Terbentuk Jika Dipotong pada Tinggi =", h_optimal, "adalah k =", k_hasil, "\n"))
## Jumlah Klaster yang Terbentuk Jika Dipotong pada Tinggi = 4 adalah k = 5
# Buat Profil Interpretasi berdasarkan k baru ini
data_dengan_klaster_ward_h <- data_kriminalitas %>%
  mutate(Cluster_Ward_h = factor(clusters_ward_new))

profil_klaster_ward_h <- data_dengan_klaster_ward_h %>%
  group_by(Cluster_Ward_h) %>%
  summarise(
    Rata_Var1_Jml_Kejahatan = mean(Var1),
    Rata_Var2_Risiko_per_100rb = mean(Var2),
    Rata_Var3_Persen_Selesai = mean(Var3),
    Rata_Var4_Selang_Waktu_Menit = mean(Var4)
  )

cat("\n--- Tabel Profil Klaster Ward's (Dipilih Berdasarkan Tinggi Dendrogram) ---\n")
## 
## --- Tabel Profil Klaster Ward's (Dipilih Berdasarkan Tinggi Dendrogram) ---
print(profil_klaster_ward_h)
## # A tibble: 5 × 5
##   Cluster_Ward_h Rata_Var1_Jml_Kejahatan Rata_Var2_Risiko_per_100rb
##   <fct>                            <dbl>                      <dbl>
## 1 1                               10068.                       99.6
## 2 2                               32818.                      264. 
## 3 3                                4323.                       90.1
## 4 4                                4295                       193. 
## 5 5                                1660.                      107  
## # ℹ 2 more variables: Rata_Var3_Persen_Selesai <dbl>,
## #   Rata_Var4_Selang_Waktu_Menit <dbl>

Penjelasan Cluster 1: Klaster Menengah-Rendah (IV): Risiko agak rendah, Jumlah Kejahatan absolut tinggi.

Cluster 2: Klaster Kritis (I): Risiko tertinggi, Selang Waktu terpendek (frekuensi kejahatan tertinggi).

cluster 3: Klaster Rendah & Efektif (V): Risiko paling rendah, Persen Selesai tertinggi (penanganan terbaik).

cluster 4: Klaster Tinggi (II): Risiko tinggi, Persen Selesai terendah (penanganan terburuk)

cluster 5: Klaster Moderat (III): Risiko menengah, Selang Waktu cukup pendek.

Interpretasi/Simpulan

  1. Kesamaan Mayor (Stabilitas Klaster) Kedua metode berhasil mengidentifikasi Klaster Kritis (Klaster 2) secara hampir sempurna.
    Ward’s Klaster 2 (Risiko 263.5)
    K-Means Klaster 2 (Risiko 263.5)

  2. Perbedaan Mayor (Distribusi Risiko Rendah)Ward’s Method cenderung mendistribusikan provinsi dengan risiko rendah dan menengah secara berbeda, yang tercermin pada Rata_Var1 (Jumlah Kejahatan).Ward’s (Klaster 1 & 3): Ward’s cenderung mengelompokkan provinsi yang memiliki Jumlah Kejahatan Tinggi (Var1 \(\approx 10.000\)) tetapi Risiko Rendah (\(\approx 99.5\)) ke dalam Klaster 1. Ini mungkin memprioritaskan faktor Var1 (Jumlah Absolut).K-Means (Klaster 5/D): K-Means lebih fokus pada kepadatan, yang menghasilkan kelompok yang lebih merata.

Jadi ada konsistensi tinggi dan identifikasi kelompok paling ekstrem( kluster risiko tinggi). Ward’s Method, bersifat hierarki, lebih peka terhadap outlier (provinsi yang sangat unik) di awal proses pengelompokan, yang dapat menghasilkan komposisi klaster menengah yang berbeda dari K-Means.