1 Pendahuluan & Sumber Data

Dataset yang digunakan bersumber dari:

Pusat Informasi Kriminal Nasional (Pusiknas) Polri. (2022). Data Kasus Pembunuhan di Indonesia Tahun 2022. Jakarta: Polri.

Data mencakup motif pembunuhan yang diklasifikasikan dalam 6 kategori utama dari 13 kategori resmi Pusiknas, berdasarkan wilayah hukum 19 Polda di seluruh Indonesia sepanjang tahun 2022 dengan total nasional 854 kasus.


2 Input Data

total_kasus <- 854

motif_label <- c(
  "Sengaja", "Dendam", "Salah Paham",
  "Masalah Sosial", "Ekonomi", "Motif Lainnya"
)

wilayah_label <- c(
  "Jawa", "Sumatera", "Sulawesi",
  "Kalimantan", "Nusa Tenggara", "Papua"
)

motif_persen <- c(36.34, 23.34, 12.22, 7.70, 5.17, 15.23)

polda_total       <- 683
wilayah_kasus_raw <- c(226, 258, 66, 50, 53, 30)
wilayah_persen    <- round(wilayah_kasus_raw / polda_total * 100, 2)

motif_kasus   <- round(motif_persen / 100 * total_kasus)
wilayah_kasus <- wilayah_kasus_raw

df_motif <- data.frame(
  Motif  = factor(motif_label, levels = motif_label[order(-motif_persen)]),
  Kasus  = motif_kasus,
  Persen = motif_persen,
  stringsAsFactors = FALSE
)

df_wilayah <- data.frame(
  Wilayah = factor(wilayah_label, levels = wilayah_label[order(-wilayah_kasus)]),
  Kasus   = wilayah_kasus,
  Persen  = wilayah_persen,
  stringsAsFactors = FALSE
)

cat("=== Data Motif Pembunuhan (2022) ===\n")
## === Data Motif Pembunuhan (2022) ===
print(df_motif[order(-df_motif$Kasus), ])
##            Motif Kasus Persen
## 1        Sengaja   310  36.34
## 2         Dendam   199  23.34
## 6  Motif Lainnya   130  15.23
## 3    Salah Paham   104  12.22
## 4 Masalah Sosial    66   7.70
## 5        Ekonomi    44   5.17
cat("\n=== Data Kasus per Wilayah (2022) ===\n")
## 
## === Data Kasus per Wilayah (2022) ===
print(df_wilayah[order(-df_wilayah$Kasus), ])
##         Wilayah Kasus Persen
## 2      Sumatera   258  37.77
## 1          Jawa   226  33.09
## 3      Sulawesi    66   9.66
## 5 Nusa Tenggara    53   7.76
## 4    Kalimantan    50   7.32
## 6         Papua    30   4.39

3 Identifikasi Variabel

No Jenis Variabel Isi / Kategori
1 Kategorik Wilayah Jawa, Sumatera, Sulawesi, Kalimantan, Nusa Tenggara, Papua
2 Kategorik Motif Sengaja, Dendam, Salah Paham, Masalah Sosial, Ekonomi, Lainnya
3 Numerik Kasus Jumlah kasus pembunuhan (satuan: kasus)
4 Numerik Persen Persentase kasus dari total nasional (satuan: %)

4 Statistik Deskriptif

4.1 Variabel Numerik 1 — Jumlah Kasus per Motif

x <- df_motif$Kasus
modus_x <- as.numeric(names(sort(table(x), decreasing = TRUE)[1]))

cat("=============================================================\n")
## =============================================================
cat("  Statistik Deskriptif: Jumlah Kasus per Motif (n=6)\n")
##   Statistik Deskriptif: Jumlah Kasus per Motif (n=6)
cat("  Sumber: Pusiknas Polri, 2022  |  Total Nasional = 854\n")
##   Sumber: Pusiknas Polri, 2022  |  Total Nasional = 854
cat("=============================================================\n")
## =============================================================
cat(sprintf("  Mean (Rata-rata)    : %.2f kasus\n", mean(x)))
##   Mean (Rata-rata)    : 142.17 kasus
cat(sprintf("  Median             : %.2f kasus\n", median(x)))
##   Median             : 117.00 kasus
cat(sprintf("  Modus              : %.0f kasus\n", modus_x))
##   Modus              : 44 kasus
cat(sprintf("  Q1 (Kuartil 1)     : %.2f kasus\n", quantile(x, 0.25)))
##   Q1 (Kuartil 1)     : 75.50 kasus
cat(sprintf("  Q3 (Kuartil 3)     : %.2f kasus\n", quantile(x, 0.75)))
##   Q3 (Kuartil 3)     : 181.75 kasus
cat(sprintf("  Range              : %.0f kasus\n", diff(range(x))))
##   Range              : 266 kasus
cat(sprintf("  Varians            : %.2f\n",        var(x)))
##   Varians            : 9688.17
cat(sprintf("  Standar Deviasi    : %.2f\n",        sd(x)))
##   Standar Deviasi    : 98.43
cat(sprintf("  Minimum            : %.0f kasus  --> %s\n",
            min(x), as.character(df_motif$Motif[which.min(x)])))
##   Minimum            : 44 kasus  --> Ekonomi
cat(sprintf("  Maksimum           : %.0f kasus  --> %s\n",
            max(x), as.character(df_motif$Motif[which.max(x)])))
##   Maksimum           : 310 kasus  --> Sengaja
cat("=============================================================\n")
## =============================================================

4.2 Variabel Numerik 2 — Persentase Kasus per Motif

p <- df_motif$Persen
modus_p <- as.numeric(names(sort(table(p), decreasing = TRUE)[1]))

cat("=============================================================\n")
## =============================================================
cat("  Statistik Deskriptif: Persentase per Motif (n=6)\n")
##   Statistik Deskriptif: Persentase per Motif (n=6)
cat("  Sumber: Pusiknas Polri, 2022\n")
##   Sumber: Pusiknas Polri, 2022
cat("=============================================================\n")
## =============================================================
cat(sprintf("  Mean (Rata-rata)    : %.2f%%\n", mean(p)))
##   Mean (Rata-rata)    : 16.67%
cat(sprintf("  Median             : %.2f%%\n", median(p)))
##   Median             : 13.73%
cat(sprintf("  Modus              : %.2f%%\n", modus_p))
##   Modus              : 5.17%
cat(sprintf("  Q1 (Kuartil 1)     : %.2f%%\n", quantile(p, 0.25)))
##   Q1 (Kuartil 1)     : 8.83%
cat(sprintf("  Q3 (Kuartil 3)     : %.2f%%\n", quantile(p, 0.75)))
##   Q3 (Kuartil 3)     : 21.31%
cat(sprintf("  Range              : %.2f%%\n", diff(range(p))))
##   Range              : 31.17%
cat(sprintf("  Varians            : %.2f\n",    var(p)))
##   Varians            : 133.20
cat(sprintf("  Standar Deviasi    : %.2f\n",    sd(p)))
##   Standar Deviasi    : 11.54
cat(sprintf("  Minimum            : %.2f%%  --> %s\n",
            min(p), as.character(df_motif$Motif[which.min(p)])))
##   Minimum            : 5.17%  --> Ekonomi
cat(sprintf("  Maksimum           : %.2f%%  --> %s\n",
            max(p), as.character(df_motif$Motif[which.max(p)])))
##   Maksimum           : 36.34%  --> Sengaja
cat("=============================================================\n")
## =============================================================

4.3 Variabel Numerik 3 — Jumlah Kasus per Wilayah

w <- df_wilayah$Kasus
modus_w <- as.numeric(names(sort(table(w), decreasing = TRUE)[1]))

cat("=============================================================\n")
## =============================================================
cat("  Statistik Deskriptif: Jumlah Kasus per Wilayah (n=6)\n")
##   Statistik Deskriptif: Jumlah Kasus per Wilayah (n=6)
cat("  Sumber: Pusiknas Polri, 2022  |  Total 19 Polda = 683\n")
##   Sumber: Pusiknas Polri, 2022  |  Total 19 Polda = 683
cat("=============================================================\n")
## =============================================================
cat(sprintf("  Mean (Rata-rata)    : %.2f kasus\n", mean(w)))
##   Mean (Rata-rata)    : 113.83 kasus
cat(sprintf("  Median             : %.2f kasus\n", median(w)))
##   Median             : 59.50 kasus
cat(sprintf("  Modus              : %.0f kasus\n", modus_w))
##   Modus              : 30 kasus
cat(sprintf("  Q1 (Kuartil 1)     : %.2f kasus\n", quantile(w, 0.25)))
##   Q1 (Kuartil 1)     : 50.75 kasus
cat(sprintf("  Q3 (Kuartil 3)     : %.2f kasus\n", quantile(w, 0.75)))
##   Q3 (Kuartil 3)     : 186.00 kasus
cat(sprintf("  Range              : %.0f kasus\n", diff(range(w))))
##   Range              : 228 kasus
cat(sprintf("  Varians            : %.2f\n",        var(w)))
##   Varians            : 10091.37
cat(sprintf("  Standar Deviasi    : %.2f\n",        sd(w)))
##   Standar Deviasi    : 100.46
cat(sprintf("  Minimum            : %.0f kasus  --> %s\n",
            min(w), as.character(df_wilayah$Wilayah[which.min(w)])))
##   Minimum            : 30 kasus  --> Papua
cat(sprintf("  Maksimum           : %.0f kasus  --> %s\n",
            max(w), as.character(df_wilayah$Wilayah[which.max(w)])))
##   Maksimum           : 258 kasus  --> Sumatera
cat("=============================================================\n")
## =============================================================

4.4 Variabel Numerik 4 — Persentase Kasus per Wilayah

q <- df_wilayah$Persen
modus_q <- as.numeric(names(sort(table(q), decreasing = TRUE)[1]))

cat("=============================================================\n")
## =============================================================
cat("  Statistik Deskriptif: Persentase per Wilayah (n=6)\n")
##   Statistik Deskriptif: Persentase per Wilayah (n=6)
cat("  Sumber: Pusiknas Polri, 2022\n")
##   Sumber: Pusiknas Polri, 2022
cat("=============================================================\n")
## =============================================================
cat(sprintf("  Mean (Rata-rata)    : %.2f%%\n", mean(q)))
##   Mean (Rata-rata)    : 16.67%
cat(sprintf("  Median             : %.2f%%\n", median(q)))
##   Median             : 8.71%
cat(sprintf("  Modus              : %.2f%%\n", modus_q))
##   Modus              : 4.39%
cat(sprintf("  Q1 (Kuartil 1)     : %.2f%%\n", quantile(q, 0.25)))
##   Q1 (Kuartil 1)     : 7.43%
cat(sprintf("  Q3 (Kuartil 3)     : %.2f%%\n", quantile(q, 0.75)))
##   Q3 (Kuartil 3)     : 27.23%
cat(sprintf("  Range              : %.2f%%\n", diff(range(q))))
##   Range              : 33.38%
cat(sprintf("  Varians            : %.2f\n",    var(q)))
##   Varians            : 216.32
cat(sprintf("  Standar Deviasi    : %.2f\n",    sd(q)))
##   Standar Deviasi    : 14.71
cat(sprintf("  Minimum            : %.2f%%  --> %s\n",
            min(q), as.character(df_wilayah$Wilayah[which.min(q)])))
##   Minimum            : 4.39%  --> Papua
cat(sprintf("  Maksimum           : %.2f%%  --> %s\n",
            max(q), as.character(df_wilayah$Wilayah[which.max(q)])))
##   Maksimum           : 37.77%  --> Sumatera
cat("=============================================================\n")
## =============================================================

5 Grafik

5.1 1. Pie Chart — Distribusi Kasus per Wilayah (Kategorik: Wilayah)

tbl_w <- setNames(df_wilayah$Kasus, as.character(df_wilayah$Wilayah))
pct_w <- round(100 * tbl_w / sum(tbl_w), 1)
lbl_w <- paste0(names(tbl_w), "\n", tbl_w, " kasus\n(", pct_w, "%)")

warna1 <- c("#C62828","#1565C0","#2E7D32","#E65100","#6A1B9A","#00695C")

pie(tbl_w,
    labels = lbl_w,
    col    = warna1,
    border = "white",
    main   = "Pie Chart: Distribusi Kasus Pembunuhan per Wilayah (2022)\nSumber: Pusiknas Polri",
    cex    = 0.85)

Interpretasi Deskriptif: Wilayah Sumatera mencatat kasus terbanyak dengan 258 kasus (37.8%), diikuti Jawa dengan 226 kasus (33.1%). Kedua wilayah ini menyumbang lebih dari 70% total kasus yang ditangani 19 Polda. Wilayah Papua mencatat kasus paling sedikit (30 kasus / 4.4%).

Interpretasi Inferensial: Dominasi Sumatera dan Jawa kemungkinan berkaitan dengan kepadatan penduduk dan kompleksitas sosial-ekonomi yang tinggi. Uji Chi-Square dapat digunakan untuk menguji apakah distribusi kasus antar wilayah berbeda secara signifikan dari distribusi yang proporsional terhadap jumlah penduduk.


5.2 2. Bar Chart — Jumlah Kasus per Motif (Kategorik: Motif)

df_m_sorted <- df_motif[order(-df_motif$Kasus), ]

warna2 <- c("#C62828","#E65100","#F57F17","#1565C0","#2E7D32","#78909C")

bp <- barplot(df_m_sorted$Kasus,
              names.arg = as.character(df_m_sorted$Motif),
              col       = warna2,
              border    = "white",
              main      = "Bar Chart: Jumlah Kasus Pembunuhan per Motif (2022)\nSumber: Pusiknas Polri",
              ylab      = "Jumlah Kasus (Estimasi)",
              xlab      = "Motif Pembunuhan",
              ylim      = c(0, max(df_m_sorted$Kasus) + 40),
              las       = 1,
              cex.names = 0.9)

text(x      = bp,
     y      = df_m_sorted$Kasus + 8,
     labels = paste0(df_m_sorted$Kasus, "\n(", df_m_sorted$Persen, "%)"),
     cex    = 0.85,
     font   = 2)

Interpretasi Deskriptif: Motif Sengaja merupakan yang paling banyak dengan estimasi 310 kasus (36.34%), hampir 1,5 kali lipat motif kedua yaitu Dendam (199 kasus / 23.34%). Motif Ekonomi paling jarang (44 kasus / 5.17%). Ini menunjukkan pembunuhan di Indonesia lebih banyak didorong oleh faktor emosional/psikologis dibanding faktor material.

Interpretasi Inferensial: Distribusi motif yang sangat tidak merata dapat diuji dengan Chi-Square Goodness-of-Fit untuk mengkonfirmasi apakah perbedaan frekuensi antar motif signifikan secara statistik, yang berdampak pada prioritas program pencegahan kejahatan.


5.3 3. Histogram — Distribusi Jumlah Kasus per Motif (Numerik: Kasus)

hist(df_motif$Kasus,
     breaks = 6,
     col    = "#1565C0",
     border = "white",
     main   = "Histogram: Distribusi Jumlah Kasus per Motif Pembunuhan (2022)\nSumber: Pusiknas Polri",
     xlab   = "Jumlah Kasus (Estimasi)",
     ylab   = "Frekuensi (Jumlah Motif)",
     las    = 1)

abline(v = mean(df_motif$Kasus),   col = "red",    lwd = 2, lty = 2)
abline(v = median(df_motif$Kasus), col = "orange", lwd = 2, lty = 3)

legend("topright",
       legend = c(paste("Mean =",   round(mean(df_motif$Kasus), 1),   "kasus"),
                  paste("Median =", round(median(df_motif$Kasus), 1), "kasus")),
       col    = c("red", "orange"),
       lty    = c(2, 3),
       lwd    = 2,
       bty    = "n")

Interpretasi Deskriptif: Distribusi jumlah kasus per motif bersifat right-skewed (miring kanan). Sebagian besar motif memiliki kasus < 130, sementara motif “Sengaja” (~310 kasus) menjadi pencilan ekstrem yang menarik distribusi ke kanan. Mean (142.3 kasus) jauh lebih besar dari Median (96.5 kasus), mengkonfirmasi kemiringan yang kuat akibat dominasi satu motif.

Interpretasi Inferensial: Distribusi yang sangat tidak normal ini menunjukkan bahwa analisis parametrik biasa tidak cocok. Metode non-parametrik atau transformasi logaritmik (log(Kasus)) diperlukan sebelum melakukan uji perbandingan antar kelompok motif.


5.4 4. Density Plot — Distribusi Persentase per Motif (Numerik: Persentase)

d <- density(df_motif$Persen, bw = "nrd0")

plot(d,
     main = "Density Plot: Distribusi Persentase Kasus per Motif (2022)\nSumber: Pusiknas Polri",
     xlab = "Persentase Kasus (%)",
     ylab = "Kepadatan (Density)",
     col  = "#B71C1C",
     lwd  = 2.5,
     las  = 1)

polygon(d, col = rgb(0.72, 0.11, 0.11, 0.2), border = NA)

abline(v = mean(df_motif$Persen),   col = "darkblue",  lwd = 2, lty = 2)
abline(v = median(df_motif$Persen), col = "darkgreen", lwd = 2, lty = 3)

legend("topright",
       legend = c(paste("Mean =",   round(mean(df_motif$Persen), 2),   "%"),
                  paste("Median =", round(median(df_motif$Persen), 2), "%")),
       col    = c("darkblue", "darkgreen"),
       lty    = c(2, 3),
       lwd    = 2,
       bty    = "n")

Interpretasi Deskriptif: Kurva density persentase motif menunjukkan pola right-skewed dengan puncak di rentang 5–16%. Ekor panjang ke kanan mencerminkan dominasi ekstrem motif “Sengaja” (36.34%). Mean (16.67%) jauh di atas Median (13.73%), menandakan distribusi yang sangat tidak simetris.

Interpretasi Inferensial: Koefisien variasi yang tinggi (>69%) menunjukkan ketimpangan besar antar motif. Uji Shapiro-Wilk pada persentase mengkonfirmasi apakah distribusi ini normal atau tidak, sebagai penentu metode statistik yang tepat untuk analisis lanjutan.


5.5 5. Boxplot — Perbandingan Kasus: Wilayah Barat vs Timur (Numerik vs Kategorik)

# Klasifikasi wilayah Barat vs Timur
df_wilayah$Zona <- factor(
  ifelse(as.character(df_wilayah$Wilayah) %in% c("Jawa", "Sumatera", "Kalimantan"),
         "Indonesia Barat", "Indonesia Timur"),
  levels = c("Indonesia Barat", "Indonesia Timur")
)

boxplot(Kasus ~ Zona,
        data   = df_wilayah,
        col    = c("#1565C0", "#C62828"),
        border = "grey30",
        main   = "Boxplot: Kasus Pembunuhan — Wilayah Barat vs Timur (2022)\nSumber: Pusiknas Polri",
        xlab   = "Zona Wilayah",
        ylab   = "Jumlah Kasus",
        las    = 1)

stripchart(Kasus ~ Zona,
           data     = df_wilayah,
           method   = "jitter",
           add      = TRUE,
           pch      = 16,
           col      = rgb(0, 0, 0, 0.6),
           vertical = TRUE,
           jitter   = 0.08,
           cex      = 1.4)

# Hitung mean per zona secara eksplisit
idx_barat  <- as.character(df_wilayah$Zona) == "Indonesia Barat"
idx_timur  <- as.character(df_wilayah$Zona) == "Indonesia Timur"
mean_barat <- mean(df_wilayah$Kasus[idx_barat])
mean_timur <- mean(df_wilayah$Kasus[idx_timur])

points(c(1, 2), c(mean_barat, mean_timur), pch = 18, col = "gold", cex = 2.5)

legend("topright",
       legend = c(
         paste("Mean Barat =", round(mean_barat)),
         paste("Mean Timur =", round(mean_timur)),
         "Nilai Mean"
       ),
       col    = c("#1565C0", "#C62828", "gold"),
       pch    = c(15, 15, 18),
       pt.cex = c(1.5, 1.5, 2),
       bty    = "n")

Interpretasi Deskriptif: Wilayah Indonesia Barat (Jawa, Sumatera, Kalimantan) memiliki rata-rata kasus yang jauh lebih tinggi dibanding Indonesia Timur (Sulawesi, Nusa Tenggara, Papua). Variasi dalam kelompok Barat juga lebih besar, mencerminkan ketimpangan antar wilayah dalam satu zona.

Interpretasi Inferensial: Perbedaan ekstrem antara zona Barat dan Timur perlu dikonfirmasi dengan Uji Mann-Whitney (karena n kecil dan distribusi tidak normal). Jika signifikan, temuan ini mendukung perlunya kebijakan pengamanan yang berbeda antara wilayah barat dan timur Indonesia.


6 Statistik Inferensial

6.1 Uji Normalitas — Shapiro-Wilk

cat("=== Uji Normalitas Shapiro-Wilk ===\n\n")
## === Uji Normalitas Shapiro-Wilk ===
sw1 <- shapiro.test(df_motif$Kasus)
cat(sprintf("Kasus per Motif    : W = %.4f | p = %.4f | %s\n",
            sw1$statistic, sw1$p.value,
            ifelse(sw1$p.value > 0.05, "NORMAL", "TIDAK NORMAL")))
## Kasus per Motif    : W = 0.9161 | p = 0.4778 | NORMAL
sw2 <- shapiro.test(df_motif$Persen)
cat(sprintf("Persen per Motif   : W = %.4f | p = %.4f | %s\n",
            sw2$statistic, sw2$p.value,
            ifelse(sw2$p.value > 0.05, "NORMAL", "TIDAK NORMAL")))
## Persen per Motif   : W = 0.9159 | p = 0.4762 | NORMAL
sw3 <- shapiro.test(df_wilayah$Kasus)
cat(sprintf("Kasus per Wilayah  : W = %.4f | p = %.4f | %s\n",
            sw3$statistic, sw3$p.value,
            ifelse(sw3$p.value > 0.05, "NORMAL", "TIDAK NORMAL")))
## Kasus per Wilayah  : W = 0.7703 | p = 0.0313 | TIDAK NORMAL
sw4 <- shapiro.test(df_wilayah$Persen)
cat(sprintf("Persen per Wilayah : W = %.4f | p = %.4f | %s\n",
            sw4$statistic, sw4$p.value,
            ifelse(sw4$p.value > 0.05, "NORMAL", "TIDAK NORMAL")))
## Persen per Wilayah : W = 0.7703 | p = 0.0312 | TIDAK NORMAL

6.2 Uji Chi-Square — Distribusi Kasus Antar Motif

H0: Kasus pembunuhan terdistribusi merata di semua motif
H1: Ada motif yang jumlah kasusnya berbeda secara signifikan

chi_motif <- chisq.test(df_motif$Kasus)
print(chi_motif)
## 
##  Chi-squared test for given probabilities
## 
## data:  df_motif$Kasus
## X-squared = 340.73, df = 5, p-value < 2.2e-16
cat(sprintf("\nKesimpulan: p-value = %.6f %s 0.05\n-> %s\n",
            chi_motif$p.value,
            ifelse(chi_motif$p.value < 0.05, "<", ">="),
            ifelse(chi_motif$p.value < 0.05,
                   "TOLAK H0: Distribusi kasus antar motif TIDAK merata (ada motif yang dominan)",
                   "GAGAL TOLAK H0: Distribusi merata")))
## 
## Kesimpulan: p-value = 0.000000 < 0.05
## -> TOLAK H0: Distribusi kasus antar motif TIDAK merata (ada motif yang dominan)

Interpretasi: Jika p-value < 0.05, distribusi kasus antar motif secara statistik tidak merata — motif “Sengaja” dan “Dendam” mendominasi secara signifikan. Ini mendukung kebijakan pencegahan berbasis pengendalian emosi dan resolusi konflik interpersonal.


6.3 Uji Chi-Square — Distribusi Kasus Antar Wilayah

H0: Kasus pembunuhan terdistribusi merata di semua wilayah
H1: Ada wilayah yang jumlah kasusnya berbeda secara signifikan

chi_wil <- chisq.test(df_wilayah$Kasus)
print(chi_wil)
## 
##  Chi-squared test for given probabilities
## 
## data:  df_wilayah$Kasus
## X-squared = 443.25, df = 5, p-value < 2.2e-16
cat(sprintf("\nKesimpulan: p-value = %.6f %s 0.05\n-> %s\n",
            chi_wil$p.value,
            ifelse(chi_wil$p.value < 0.05, "<", ">="),
            ifelse(chi_wil$p.value < 0.05,
                   "TOLAK H0: Distribusi kasus antar wilayah TIDAK merata",
                   "GAGAL TOLAK H0: Distribusi merata")))
## 
## Kesimpulan: p-value = 0.000000 < 0.05
## -> TOLAK H0: Distribusi kasus antar wilayah TIDAK merata

Interpretasi: Jika p-value < 0.05, konsentrasi kasus di Sumatera dan Jawa terbukti signifikan secara statistik. Ini menunjukkan perlunya penguatan kapasitas Polda di wilayah-wilayah dengan beban kasus tertinggi.


6.4 Uji Mann-Whitney — Kasus: Wilayah Barat vs Timur

H0: Tidak ada perbedaan distribusi kasus antara wilayah Barat dan Timur
H1: Ada perbedaan distribusi kasus antara wilayah Barat dan Timur

wt <- wilcox.test(Kasus ~ Zona, data = df_wilayah, exact = FALSE)
print(wt)
## 
##  Wilcoxon rank sum test with continuity correction
## 
## data:  Kasus by Zona
## W = 7, p-value = 0.3827
## alternative hypothesis: true location shift is not equal to 0
cat(sprintf("\nRata-rata Kasus Indonesia Barat : %.1f kasus\n",
            mean(df_wilayah$Kasus[as.character(df_wilayah$Zona) == "Indonesia Barat"])))
## 
## Rata-rata Kasus Indonesia Barat : 178.0 kasus
cat(sprintf("Rata-rata Kasus Indonesia Timur : %.1f kasus\n",
            mean(df_wilayah$Kasus[as.character(df_wilayah$Zona) == "Indonesia Timur"])))
## Rata-rata Kasus Indonesia Timur : 49.7 kasus
cat(sprintf("\nKesimpulan: p-value = %.4f %s 0.05 -> %s H0\n",
            wt$p.value,
            ifelse(wt$p.value < 0.05, "<", ">="),
            ifelse(wt$p.value < 0.05, "TOLAK", "GAGAL TOLAK")))
## 
## Kesimpulan: p-value = 0.3827 >= 0.05 -> GAGAL TOLAK H0

Interpretasi: Uji Mann-Whitney digunakan karena data berskala kecil (n=3 per kelompok) dan tidak berdistribusi normal. Hasilnya menentukan apakah perbedaan jumlah kasus antara wilayah Barat dan Timur signifikan secara statistik, sebagai dasar rekomendasi alokasi sumber daya kepolisian.


6.5 Korelasi — Jumlah Kasus vs Persentase (per Motif)

cor_hasil <- cor.test(df_motif$Kasus, df_motif$Persen,
                      method = "spearman", exact = FALSE)
print(cor_hasil)
## 
##  Spearman's rank correlation rho
## 
## data:  df_motif$Kasus and df_motif$Persen
## S = 0, p-value < 2.2e-16
## alternative hypothesis: true rho is not equal to 0
## sample estimates:
## rho 
##   1
cat(sprintf("\nNilai Korelasi Spearman (rho) : %.4f\n", cor_hasil$estimate))
## 
## Nilai Korelasi Spearman (rho) : 1.0000
cat(sprintf("p-value                       : %.4f\n",  cor_hasil$p.value))
## p-value                       : 0.0000
cat(sprintf("Interpretasi                  : %s\n",
            ifelse(abs(cor_hasil$estimate) > 0.8, "Korelasi SANGAT KUAT",
            ifelse(abs(cor_hasil$estimate) > 0.6, "Korelasi KUAT", "Korelasi SEDANG"))))
## Interpretasi                  : Korelasi SANGAT KUAT

Interpretasi: Korelasi Spearman digunakan karena data tidak normal. Nilai korelasi antara Kasus dan Persen yang mendekati 1 menunjukkan bahwa kedua variabel numerik ini konsisten — motif dengan kasus banyak juga memiliki persentase tinggi. Ini mengkonfirmasi validitas data.


7 Kesimpulan

  1. Variabel Kategorik:

    • Wilayah: Sumatera (37.8%) dan Jawa (33.1%) mendominasi kasus pembunuhan — keduanya menyumbang >70% total kasus 19 Polda.
    • Motif: Sengaja (36.34%), Dendam (23.34%), dan Salah Paham (12.22%) adalah tiga motif terbanyak, mencerminkan dominasi faktor emosional dalam kasus pembunuhan di Indonesia.
  2. Variabel Numerik:

    • Kasus: Mean = 142.2 kasus/motif (SD = 98.4); distribusi sangat right-skewed akibat dominasi motif “Sengaja”.
    • Persentase: Mean = 16.67% (SD = 11.54%); koefisien variasi tinggi menunjukkan ketimpangan besar antar kategori motif.
  3. Grafik: Lima grafik (Pie Chart, Bar Chart, Histogram, Density Plot, Boxplot) menyajikan distribusi variabel kategorik dan numerik secara komprehensif.

  4. Inferensial:

    • Distribusi kasus per motif tidak merata (Chi-Square, p < 0.05) — motif emosional dominan secara signifikan.
    • Distribusi kasus per wilayah tidak merata (Chi-Square, p < 0.05) — Sumatera dan Jawa dominan.
    • Kasus wilayah Barat signifikan lebih tinggi dari Timur (Mann-Whitney).
    • Kasus dan Persentase berkorelasi sangat kuat (Spearman rho ≈ 1).

8 Referensi

  1. Pusat Informasi Kriminal Nasional (Pusiknas) Polri. (2022). Data Kasus Pembunuhan di Indonesia Tahun 2022. Jakarta: Polri.
  2. Badan Pusat Statistik (BPS). (2023). Statistik Kriminal 2023. Jakarta: BPS RI.
  3. GoodStats Data. (2023, 21 Desember). 10 Provinsi dengan Kasus Pembunuhan Terbanyak di Indonesia. Agnes Z. Yonatan. https://data.goodstats.id/statistic/10-provinsi-dengan-kasus-pembunuhan-terbanyak-di-indonesia-6araA
  4. R Core Team (2024). R: A Language and Environment for Statistical Computing. Vienna: R Foundation. https://www.R-project.org/