A. Pendahuluan

💡 Focus Point

Populasi merujuk pada keseluruhan subjek yang menjadi sasaran penelitian, sementara sampel adalah bagian dari populasi yang dipilih untuk dianalisis. Hal ini ingin membuktikan bahwa populasi dan sampel berjalan secara bersamaan. Sehingga, pada implementasi dalam penelitian jika seorang peneliti atau ahli menggunakan teknik sampling itu adalah hal yang normalisasi karena hasil penelitian dari sampel dapat merepresentasikan suatu populasi. Secara eksplisit juga menyakinkan bahwa sampel adalah sebuah turunan dan memiliki korelasi dengan populasi. Akan tetapi dalam proses Analisis Data Eksploratif (Exploratory Data Analysis/EDA) ingin menekankan bahwa Skepticism represents the analyst’s healthy dose of distrust in single numeric summaries.Statistics provide fast and concise summaries of data. However, this efficiency is achieved by omitting large quantities of information. When crucial bits are ignored or obscured, the summaries they provide can be highly different than what is actually occurring in the data (e.g., the mean of a skewed distribution being unrepresentative of central tendency). Melalui pernyataan ini, mengindikasikan bahwa analisis yang berarti proses memecah informasi yang baik adalah dengan mengambil seluruh populasi agar mendapatkan informasi yang lebih luas dan akurat. Dengan memperhatikan ketersediaan data populasi dengan arus teknologi modern juga mendukung bahwa analisis data populasi dapat relevan untuk dilakukan. Sehingga ikut membuktikan definisi dari EDA is best described as an overarching analytic attitude characterized as “detective work designed to reveal the structure or patterns in the data”(Haig, 2005, p. 375; Tukey, 1980). Di dalam proses analisis data eksploratif terdapat proses data preprocessing yang merupakan serangkaian proses untuk mempersiapkan data agar memiliki kualitas, struktur, dan bentuk yang sesuai dengan tujuan analisis. Han, Kamber, dan Pei menggunakan tiga masalah utama yaitu incomplete, noisy, dan inconsistent untuk menjelaskan mengapa preprocessing diperlukan. Menurut Han, Kamber, dan Pei, preprocessing mencakup beberapa aktivitas utama seperti data cleaning, data integration, data transformation, dan data reduction. Oleh sebab itu dengan pedoman studi kasus dalam bidang kepolisian atau kasus kriminalitas, segala tahap processing dalam penelitian ini menggunakan metode deskriptif kuantitatif dan jumlah keseluruhan data kriminalitas (population).

1. Identifikasi Sumber dan Struktur Data

Overview dataset

Pada tahap awal ini, kita mengidentifikasi struktur dasar dataset yang digunakan. Bidang ilmu atau topik yang dikaji dalam data tersebut berhubungan dengan informasi kasus kriminalitas atau kejahatan yang mengganggu rasa aman dan nyaman orang-orang sekitar. Sehingga instansi yang memegang peran untuk bertugas mengumpulkan dan menjadi evaluasi atas kebijakan keamanan dan menjaga stabilitas negara adalah pihak kepolisian. Melalui data ini juga dapat menjadi uji coba atau bahan analisis dalam disiplin ilmu pendidikan untuk eksplorasi pesan eksplisit dari data dan menemukan profil kejahatan dan dampak ekonominya. Berikut identifikasi dan eksplorasi informasi data secara ringkas :

a. Nama Dataset : crime_incidents_messy.csv b. Jumlah Data : 5.250 baris c. Jumlah Variabel : 33 variabel

No Nama Variabel(Header)
1 incident_id
2 crime_type
3 district
4 city
5 state
6 addres
7 lattitude
8 longitude
9 incident_datetime
10 officer_id
11 officer_first_name
12 officer_last_name
13 badge_number
14 suspect_id
15 suspect_first_name
16 suspect_last_name
17 suspect_age
18 suspect_gender
19 suspect_race
20 victim__id
21 victim_first_name
22 victim_last_name
23 victim_age
24 victim_gender
25 victim_phone
26 weapon_used
27 severity
28 case_status
29 resolution
30 num_arrests
31 property_loss_usd
32 reported_online
33 notes

d. Klasifikasi Jenis Data : Data Eksternal, karena data didapat dari luar organisasi atau institusi. Data kriminalitas diwilayah Amerika Serikat ini dapat di jumpai dalam halaman website kaggle. Serta topik data yang berkaitan erat dengan keamanan menyebabkan data ini dikumpulkan oleh pihat yang berwenang yaitu kepolisian Amerika Serikat. Oleh sebab itu, data ini juga bersifat sekunder karena data dikumpulkan oleh pihak lain dan menjadi bahan analisis dalam dunia pendidikan. e. Tujuan Analisis: Mengandalkan data eksploratif untuk memetakan profil beban kasus kejahatan serta mengukur besarnya dampak finansial berdasarkan jenis kejahatan dan jenis kelamin korban. f. Data Kriminalitas Di Amerika Serikat

library(dplyr)
df_raw <- read.csv("C:/Users/Lenovo/Documents/crime_incidents_messy.csv", stringsAsFactors = FALSE)

# Menampilkan dimensi data (Jumlah Baris dan Kolom)
dim(df_raw)
## [1] 5250   33
# Menampilkan struktur variabel dan sampel data mentah
str(df_raw)
## 'data.frame':    5250 obs. of  33 variables:
##  $ incident_id       : chr  "INC001115" "INC004706" "INC002249" "INC000021" ...
##  $ crime_type        : chr  "asslt" "burglary" "Homocide" "Property Damage" ...
##  $ district          : chr  "Sou" " southeast" "Southwest  " "Cen" ...
##  $ city              : chr  "Maplewood" "Maplewood" "Lakewood" "Springfield" ...
##  $ state             : chr  "GA" "OH" "AZ" "AZ" ...
##  $ address           : chr  "2830 Cedar Lane" "2361 Park Rd" "1067 Main St" "4713 Washington Ave" ...
##  $ latitude          : num  170.3 29.4 39.4 28.6 34.2 ...
##  $ longitude         : num  -77.5 -77.2 -98.6 -99 -121.6 ...
##  $ incident_datetime : chr  "2024-04-16 08:45:03" "2022-01-11 22:03:29" "2022-04-14 11:39:24" "2020-12-09 15:14:24" ...
##  $ officer_id        : chr  "OFF0078" "OFF0059" "OFF0088" "OFF0077" ...
##  $ officer_first_name: chr  "Emily" "Michelle" "Michael" "Chris" ...
##  $ officer_last_name : chr  "Davis" "Green" "White" "Jackson" ...
##  $ badge_number      : int  1342 5133 7781 5097 6220 7082 7747 7869 8229 7242 ...
##  $ suspect_id        : chr  "SUS00281" "SUS00376" "SUS00560" "SUS00468" ...
##  $ suspect_first_name: chr  "Barbara" "Barbara" "Richard" "Michael" ...
##  $ suspect_last_name : chr  "Thomas" "Harris" "Scott" "Thomas" ...
##  $ suspect_age       : num  51 -28 19 262 75 73 58 73 26 NA ...
##  $ suspect_gender    : chr  "MALE" "Other" "F" "MALE" ...
##  $ suspect_race      : chr  "asian" "Black" "asian" "Black" ...
##  $ victim_id         : chr  "VIC00642" "VIC00262" "VIC00518" "VIC00243" ...
##  $ victim_first_name : chr  "Robert" "John" "Richard" "Susan" ...
##  $ victim_last_name  : chr  "Torres" "Martin" "Hill" "Young" ...
##  $ victim_age        : num  51 231 29 243 51 15 72 NA 55 10 ...
##  $ victim_gender     : chr  "Unknown" "" "Other" "N/A" ...
##  $ victim_phone      : chr  "6223265920" "241-973-4826" "244-584-7696" "5021227484" ...
##  $ weapon_used       : chr  "Firearm" "Firearm" "KNIFE" "hands" ...
##  $ severity          : chr  "2" "3" "1" "Low" ...
##  $ case_status       : chr  "Open" "N/A" "CLOSED" "Resolved" ...
##  $ resolution        : chr  "No Arrest" "" "warning" "N/A" ...
##  $ num_arrests       : num  NA 2 2 5 2 1 3 2 0 5 ...
##  $ property_loss_usd : chr  "" "44839.49" "15963.38" "48680.14" ...
##  $ reported_online   : chr  "True" "yes" "YES" "False" ...
##  $ notes             : chr  "Incident at 2830 Cedar Lane. Officer responded at scene." "Incident at 2361 Park Rd. Officer responded at scene." "Incident at 1067 Main St. Officer responded at scene." "Incident at 4713 Washington Ave. Officer responded at scene." ...
# Menampilkan 5 baris pertama data mentah
head(df_raw, 5)
##   incident_id       crime_type    district        city state
## 1   INC001115            asslt         Sou   Maplewood    GA
## 2   INC004706         burglary   southeast   Maplewood    OH
## 3   INC002249         Homocide Southwest      Lakewood    AZ
## 4   INC000021  Property Damage         Cen Springfield    AZ
## 5   INC000488 Domestc Violence       North    Lakewood    PA
##               address  latitude  longitude   incident_datetime officer_id
## 1     2830 Cedar Lane 170.28410  -77.50071 2024-04-16 08:45:03    OFF0078
## 2        2361 Park Rd  29.42272  -77.16702 2022-01-11 22:03:29    OFF0059
## 3        1067 Main St  39.41146  -98.61530 2022-04-14 11:39:24    OFF0088
## 4 4713 Washington Ave  28.63344  -99.03005 2020-12-09 15:14:24    OFF0077
## 5       1371 River Rd  34.21785 -121.61473 2021-07-24 20:08:13    OFF0083
##   officer_first_name officer_last_name badge_number suspect_id
## 1              Emily             Davis         1342   SUS00281
## 2           Michelle             Green         5133   SUS00376
## 3            Michael             White         7781   SUS00560
## 4              Chris           Jackson         5097   SUS00468
## 5              Susan            Flores         6220   SUS00751
##   suspect_first_name suspect_last_name suspect_age suspect_gender suspect_race
## 1            Barbara            Thomas          51           MALE        asian
## 2            Barbara            Harris         -28          Other        Black
## 3            Richard             Scott          19              F        asian
## 4            Michael            Thomas         262           MALE        Black
## 5             Thomas           Jackson          75         female        white
##   victim_id victim_first_name victim_last_name victim_age victim_gender
## 1  VIC00642            Robert           Torres         51       Unknown
## 2  VIC00262              John           Martin        231              
## 3  VIC00518           Richard             Hill         29         Other
## 4  VIC00243             Susan            Young        243           N/A
## 5  VIC00512            Thomas           Thomas         51             M
##   victim_phone weapon_used severity case_status     resolution num_arrests
## 1   6223265920     Firearm        2        Open      No Arrest          NA
## 2 241-973-4826     Firearm        3         N/A                          2
## 3 244-584-7696       KNIFE        1      CLOSED        warning           2
## 4   5021227484       hands      Low    Resolved            N/A           5
## 5   9698766873     Unarmed   MEDIUM      Closed Warning Issued           2
##   property_loss_usd reported_online
## 1                              True
## 2          44839.49             yes
## 3          15963.38             YES
## 4          48680.14           False
## 5          23513.01             YES
##                                                          notes
## 1     Incident at 2830 Cedar Lane. Officer responded at scene.
## 2        Incident at 2361 Park Rd. Officer responded at scene.
## 3        Incident at 1067 Main St. Officer responded at scene.
## 4 Incident at 4713 Washington Ave. Officer responded at scene.
## 5
# Menampilkan dimensi data (Jumlah Baris dan Kolom)
dim(df_raw)
## [1] 5250   33
# Menampilkan struktur variabel dan sampel data mentah
glimpse(df_raw)
## Rows: 5,250
## Columns: 33
## $ incident_id        <chr> "INC001115", "INC004706", "INC002249", "INC000021",…
## $ crime_type         <chr> "asslt", "burglary", "Homocide", "Property Damage",…
## $ district           <chr> "Sou", " southeast", "Southwest  ", "Cen", " North"…
## $ city               <chr> "Maplewood", "Maplewood", "Lakewood", "Springfield"…
## $ state              <chr> "GA", "OH", "AZ", "AZ", "PA", "CA", "TX", "IL", "OH…
## $ address            <chr> "2830 Cedar Lane", "2361 Park Rd", "1067 Main St", …
## $ latitude           <dbl> 170.28410, 29.42272, 39.41146, 28.63344, 34.21785, …
## $ longitude          <dbl> -77.50071, -77.16702, -98.61530, -99.03005, -121.61…
## $ incident_datetime  <chr> "2024-04-16 08:45:03", "2022-01-11 22:03:29", "2022…
## $ officer_id         <chr> "OFF0078", "OFF0059", "OFF0088", "OFF0077", "OFF008…
## $ officer_first_name <chr> "Emily", "Michelle", "Michael", "Chris", "Susan", "…
## $ officer_last_name  <chr> "Davis", "Green", "White", "Jackson", "Flores", "Gr…
## $ badge_number       <int> 1342, 5133, 7781, 5097, 6220, 7082, 7747, 7869, 822…
## $ suspect_id         <chr> "SUS00281", "SUS00376", "SUS00560", "SUS00468", "SU…
## $ suspect_first_name <chr> "Barbara", "Barbara", "Richard", "Michael", "Thomas…
## $ suspect_last_name  <chr> "Thomas", "Harris", "Scott", "Thomas", "Jackson", "…
## $ suspect_age        <dbl> 51, -28, 19, 262, 75, 73, 58, 73, 26, NA, 49, NA, 3…
## $ suspect_gender     <chr> "MALE", "Other", "F", "MALE", "female", "N/A", "Fem…
## $ suspect_race       <chr> "asian", "Black", "asian", "Black", "white", "White…
## $ victim_id          <chr> "VIC00642", "VIC00262", "VIC00518", "VIC00243", "VI…
## $ victim_first_name  <chr> "Robert", "John", "Richard", "Susan", "Thomas", "An…
## $ victim_last_name   <chr> "Torres", "Martin", "Hill", "Young", "Thomas", "Wil…
## $ victim_age         <dbl> 51, 231, 29, 243, 51, 15, 72, NA, 55, 10, 47, 35, 5…
## $ victim_gender      <chr> "Unknown", "", "Other", "N/A", "M", "N/A", "female"…
## $ victim_phone       <chr> "6223265920", "241-973-4826", "244-584-7696", "5021…
## $ weapon_used        <chr> "Firearm", "Firearm", "KNIFE", "hands", "Unarmed", …
## $ severity           <chr> "2", "3", "1", "Low", "MEDIUM", "high", "", "1", "C…
## $ case_status        <chr> "Open", "N/A", "CLOSED", "Resolved", "Closed", "und…
## $ resolution         <chr> "No Arrest", "", "warning", "N/A", "Warning Issued"…
## $ num_arrests        <dbl> NA, 2, 2, 5, 2, 1, 3, 2, 0, 5, 0, -5, 2, 2, 3, NA, …
## $ property_loss_usd  <chr> "", "44839.49", "15963.38", "48680.14", "23513.01",…
## $ reported_online    <chr> "True", "yes", "YES", "False", "YES", "YES", "YES",…
## $ notes              <chr> "Incident at 2830 Cedar Lane. Officer responded at …

2. Metadata

Metadata adalah deskrisi lengkap dan bersifat umum melalui data analisis yang berupa sumber, metode, lokasi, kualitas, format, asal-usul (provenance) dan konteks penggunaan data. Sehingga alat atau sarana dalam menyajikan meta data dapat melalui pertanyaan 5 W dan 1 H. Berikut ini adalah deksripsi umum data kriminalitas Amerika Serikat, yaitu :

Pertanyaan Penjelasan
What Dataset ini berhubungan dengan insiden tindak kriminal dan terjadi di daerah kawasan Amerika Serikat yang di catat oleh pihak berwenang yang bertugas dalam bidang keamanan
Where Negara- negara bagian (states) di Amerika Serikat yang digunakannotasi. Sehingga meliputi negara bagian tersebut yaitu GA (Georgia), OH (Ohio), AZ (Arizona), PA (Pennsylvania), CA (California), TX (Texas), IL (Illinois), NY (New York), FL (Florida), NC (North Carolina) dan lain sebagainya(50 negara bagian yang diakui di Amerika Serikat)
Who Data ini dikumpulkan oleh pihak kepolisian setempat atau lembaga penegak hukum berdasarkan kota tempat terjadinya peristiwa kejahatan
When 1/24/2018 15:33 sampai 11/14/2024 6:49
Why Merekam secara resmi setiap laporan kejahatan agar bisa digunakan dalam penyelidikan, penuntutan, serta pembuatan catatan medis dan hukum perkara tersebut
How Data dikumpulkan dengan cara pencatatan setiap kejadian kejahatan (crime incident) yang terjadi. Data kemudian disusun ke dalam tabel berdasarkan informasi yang tersedia seperti jenis kejahatan, lokasi kejadian,tanggal kejadian, data korban dan tersangka, senjata yang digunakan, serta status kasus.Data dapat berasal dari hasil pencatatan atau laporan mengenai kejadian kejahatan.
Unit Unit observasi dalam dataset ini adalah satu kejadian kejahatan (crime incident). Artinya, 1 baris data mewakili 1 kasus atau kejadian kejahatan yang dicatat. Setiap kejadian memiliki informasi yang berbeda-beda sesuai dengan variabel yang tersedia, seperti jenis kejahatan, lokasi, tanggal kejadian, jenis kelamin korban/tersangka, umur, senjata, tingkat keparahan, dan status kasus.
Format Data disajikan dalam bentuk tabel/dataset yang terdiri dari 5.250 baris dan 33 kolom. Setiap kolom berisi variabel atau informasi tertentu mengenai kejadian kejahatan. Format data dapat digunakan dalam bentuk CSV atau Excel sehingga mudah diolah menggunakan aplikasi seperti Microsoft Excel atau RStudio.

3. Data Dictionary

Data dictionary adalah salah satu dokummentasi yang sering menyertai sebuat kumpulan data. Sehinga, data dictionary dapat dikategorikan sebagai segala terminologi atau istilah yang terdapat dalam data yang akan dianalisis. Berikut ini adalah terminologi yang digunakan pada data kriminalitas Di Amerika Serikat, yaitu :

No Nama Variabel Deskripsi Tipe Satuan
1 incident_id ID unik untuk setiap kejadian kriminal Kategorik/ID -
2 crime_type Jenis atau kategori tindak kriminal Kategorik -
3 district Wilayah atau distrik tempat kejadian Kategorik -
4 city Wilayah atau distrik tempat kejadian Kategorik -
5 state Negara bagian lokasi kejadian Kategorik kode wilayah
6 address Alamat lokasi kejadian Kategorik -
7 latitude Koordinat lintang lokasi kejadian Numerik Derajat
8 longitude Koordinat bujur lokasi kejadian Numerik Derajat
9 incident_datetime Tanggal dan waktu kejadian kriminal Tanggal/Waktu Tanggal & waktu
10 officer_id ID unik petugas yang menangani kejadian Kategorik/ID -
11 officer_first_name Nama depan petugas Kategorik/Teks -
12 officer_last_name Nama belakang petugas Kategorik/Teks -
13 badge_number Nomor lencana petugas Numerik/ID -
14 suspect_id ID unik tersangka Kategorik/ID -
15 suspect_first_name Nama depan tersangka Kategorik/Teks -
16 suspect_last_name Nama belakang tersangka Kategorik/Teks -
17 suspect_age Usia tersangka saat kejadian Numerik Tahun
18 suspect_gender Jenis kelamin dari pelaku kejahatan Kategorik -
19 suspect_race Ras/kelompok etnis tersangka pada data awal Kategorik/ID -
20 victim_id ID unik korban Kategorik/ID -
21 victim_first_name Nama depan korban Kategorik/Teks -
22 victim_last_name Nama belakang korban Kategorik/Teks -
23 victim_age Usia korban pada data awal Numerik Tahun
24 victim_gender Jenis kelamin korban pada data awal Kategorik -
25 victim_phone Nomor telepon korban Kategorik/Teks Nomor Telepon
26 weapon_used Jenis senjata yang digunakan dalam kejadian Kategorik -
27 severity Tingkat keparahan kejadian Kategorik/Ordinal Skor
28 case_status Status penanganan kasus Kategorik -
29 resolution Hasil atau penyelesaian kasus Kategorik -
30 num_arrests Jumlah penangkapan yang terkait dengan kasus Numerik Orang
31 property_loss_usd Nilai kerugian properti akibat kejadian Numerik USD
32 reported_online Indikator apakah kejadian dilaporkan secara online Kategorik/Biner Ya/Tidak
33 notes Catatan atau keterangan tambahan mengenai kejadian Teks -

B. Studi Kasus Profil Beban Kasus dan Dampak Finansial Kejahatan Berdasarkan Jenis Kejahatan dan Gender Korban

Adapun variabel yang diseleksi sesuai dengan tujuan analisis adalah sebagai berikut :

Variabel yang relevan Deskripsi Tipe
Crime type clean Jenis kejahatan yang telah distandarisasi Kategorik
Victim gender clean Jenis kelamin korban Kategorik
Property loss usd Nilai kerugian finasial akibat kejahatan Numerik
Victim age Usia korban yang tedampak kasus kejahatan Numerik
Tingkat_resiko Tingkat resiko kejahatan yang didapatkan dalam proses integrasi Kategorik ordinal

1. Identifikasi Masalah pada Data Kriminalitas Di Amerika Serikat

Sebelum pada tindakan analisis data yang bertumpuh pada suatu tujuan yang ingin dibuktikan, kita perlu melakukan tindakan processing sebagai serangkaian proses untuk mempersiapkan data memiliki kualitas, struktur dan bentuk yang tidak memenuhi accuracy, completeness, consistency, timeliness, believability, dan interpretability. Sehingga dapat kepada prosedur analisis yang telah dirancang dalam suatu tujuan. Oleh sebab itu, pada tahap ini, kita mengeksekusi sintaks R untuk mengidentifikasi kesalahan yang tedapat dalam data kriminalitas yang berupa :

a. Missing value atau nilai yang hilang b. Outlier yang berarti melanggar validitas dan keakuratan informasi c. Tidak konsisten dalam informasi yang disampaikan d. Nilai Numerik yang valid

# a. Pemeriksaan Jumlah Missing value per variabel
cat("\nJumlah Missing value per kolom \n")
## 
## Jumlah Missing value per kolom
colSums(is.na(df_raw))
##        incident_id         crime_type           district               city 
##                  0                  0                  0                  0 
##              state            address           latitude          longitude 
##                  0                  0                258                289 
##  incident_datetime         officer_id officer_first_name  officer_last_name 
##                  0                  0                  0                  0 
##       badge_number         suspect_id suspect_first_name  suspect_last_name 
##                312                  0                  0                  0 
##        suspect_age     suspect_gender       suspect_race          victim_id 
##               1097                  0                  0                  0 
##  victim_first_name   victim_last_name         victim_age      victim_gender 
##                  0                  0                562                  0 
##       victim_phone        weapon_used           severity        case_status 
##                  0                  0                  0                  0 
##         resolution        num_arrests  property_loss_usd    reported_online 
##                  0                333                  0                  0 
##              notes 
##                  0
# b. Identifikasi Nilai Anomali Usia
summary(df_raw$victim_age)
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max.    NA's 
##  -90.00   27.75   49.00   52.35   71.00  298.00     562
# c. Ketidakkonsistenan Format Gender Korban
cat("\n Kategori Gender korban Mentah\n")
## 
##  Kategori Gender korban Mentah
table(df_raw$victim_gender, useNA = "always")
## 
##               f       F  female  Female  FEMALE       m       M    male    Male 
##     635     342     323     363     326     329     360     376     345     394 
##    MALE     N/A   Other Unknown    <NA> 
##     349     365     360     383       0
# d. Melihat contoh variasi penulisan crime_type
cat("sample variasi Penulisan tidak konsisten pada variabel crime_type Mentah\n")
## sample variasi Penulisan tidak konsisten pada variabel crime_type Mentah
head(unique(df_raw$crime_type), 20)
##  [1] "asslt"               "burglary"            "Homocide"           
##  [4] "Property Damage"     "Domestc Violence"    "Breaking & Entering"
##  [7] "robbery"             "manslaughter"        "B&E"                
## [10] "Narcotics"           "Burglry"             "THEFT"              
## [13] "Fraudulent Activity" "Drug Offense"        "Armed Robbery"      
## [16] "Arsen"               "Abduction"           "Graffiti"           
## [19] "Trespass"            "CYBER CRIME"

2. Cleaning Data Kriminalitas Di Wilayah Amerika Serikat

Diketahui dalam identifikassi kelayakan kualitass dari data kriminalitas di wilayah Amerika Serikat ini belum memenuhi standar untuk dapat dilakukan suatu analisis karena masih terdapat penyimpangan atau kesalahan accuracy, completeness, consistency, timeliness, believability, dan interpretability. Sehingga tahap pembersihan perlu digunakan agar data dapat memenuhi syarat untuk melalui tindakam analisis. Adapun tidakan cleaning yang dapat digunakan dengan memperhatikan masalah kualitas pada data kriminalitas ini adalah sebagai berikut :

Masalah Contoh Tindakan yang mungkin
Missing Value Ras Pelaku kosong Imputasi, Menghapus observasi / variabel, atau membiarkannya
Outlier Umur pelaku 262 Investigasi terlebih dahulu
Format tidak konsisten L, Laki-laki, P, Perempuan( gender pelaku ) Standarisasi
Nilai Tidak Valid Umur dari pelaku yaitu -28 Koreksi / konfirmasi / tandai
df_clean <- df_raw %>%
  # A. Bersihkan spasi berlebih dan ubah ke huruf kecil (lowercase)
  mutate(
    crime_type_clean = str_squish(tolower(crime_type)),
    victim_gender_clean = str_squish(tolower(victim_gender))
  ) %>%
  
  # B. Standarisasi Ketidakkonsistenan Variasi Teks pada `crime_type`
  mutate(crime_type_clean = case_when(
    str_detect(crime_type_clean, "asslt|assault|battery") ~ "Assault & Battery",
    str_detect(crime_type_clean, "arson|arsen|fire setting") ~ "Arson",
    str_detect(crime_type_clean, "burg|b&e|breaking") ~ "Burglary & B&E",
    str_detect(crime_type_clean, "cyber|hack") ~ "Cybercrime & Hacking",
    str_detect(crime_type_clean, "dom|dv") ~ "Domestic Violence",
    str_detect(crime_type_clean, "drug|narcotics") ~ "Drug Offense",
    str_detect(crime_type_clean, "dui|dwi|drunk") ~ "DUI / Drunk Driving",
    str_detect(crime_type_clean, "fraud|deception|scam") ~ "Fraud & Deception",
    str_detect(crime_type_clean, "homicide|homocide|murder|manslaughter") ~ "Homicide",
    str_detect(crime_type_clean, "kidnap|abduction") ~ "Kidnapping & Abduction",
    str_detect(crime_type_clean, "rob") ~ "Robbery",
    str_detect(crime_type_clean, "sex|sa") ~ "Sexual Assault",
    str_detect(crime_type_clean, "theft|larceny|steal") ~ "Theft & Larceny",
    str_detect(crime_type_clean, "trespass") ~ "Trespassing",
    str_detect(crime_type_clean, "vandal|graffiti|property damage") ~ "Vandalism & Property Damage",
    TRUE ~ "Other"
  )) %>%
  
  # C. Standarisasi Gender Korban
  mutate(victim_gender_clean = case_when(
    victim_gender_clean %in% c("f", "female") ~ "Perempuan",
    victim_gender_clean %in% c("m", "male") ~ "Laki-laki",
    TRUE ~ NA_character_
  )) %>%
  
  # D. Pembersihan Outlier Usia (Nilai < 0 atau > 100 diubah jadi NA)
  mutate(victim_age_clean = ifelse(victim_age < 0 | victim_age > 100, NA, victim_age)) %>%
  
  # E. Imputasi Missing Value dengan Median
  mutate(
    property_loss_usd = ifelse(is.na(property_loss_usd), median(property_loss_usd, na.rm = TRUE), property_loss_usd),
    victim_age_clean = ifelse(is.na(victim_age_clean), median(victim_age_clean, na.rm = TRUE), victim_age_clean)
  )
  #Hasil Kategori Jenis Kejahatan Bersih
cat("--- Ringkasan Jenis Kejahatan Setelah Cleaning ---\n")
## --- Ringkasan Jenis Kejahatan Setelah Cleaning ---
table(df_clean$crime_type_clean)
## 
##                       Arson           Assault & Battery 
##                         369                         556 
##              Burglary & B&E        Cybercrime & Hacking 
##                         329                         318 
##           Domestic Violence                Drug Offense 
##                         329                         362 
##         DUI / Drunk Driving           Fraud & Deception 
##                         307                         457 
##                    Homicide      Kidnapping & Abduction 
##                         357                         343 
##                       Other                     Robbery 
##                         189                         334 
##              Sexual Assault             Theft & Larceny 
##                         105                         348 
##                 Trespassing Vandalism & Property Damage 
##                         277                         270

3. Pemeriksaan Distribusi (Normalitas & Variasi Antar Kelompok)

Overview Distribution

Distribusi data adalah arah penyebaran suatu variabel untuk memperlihatkan lokasi atau posisi dan bentuk yang dipengaruhi oleh nilai ektremnya. Pemeriksaan distribusi variabel kuantitatif ini difokuskan pada variabel property_loss_usd untuk mengevaluasi bentuk sebaran data.

a. Uji Normalitas Kerugian Finansial Uji Normalitas adalah suatu prosedur yang digunakan untuk mengetahui apakah data berasal dari populasi yang terdistribusi normal atau berada dalam sebaran data normal. Sehingga melalui visualisasi distribusi normalitas dari variabel property_loss_usd dapat mendapatkan karakteristik variabel tersebut itu memiliki mean,modus dan median yang berada dipusat atau titik nol.

# 1. Pastikan kolom property_loss_usd diubah ke numerik (angka)
df_clean <- df_clean %>%
  mutate(property_loss_usd = as.numeric(gsub("[^0-9.]", "", property_loss_usd)))

# Histogram dan Plot Kepadatan (Density)
ggplot(df_clean, aes(x = property_loss_usd)) +
  geom_histogram(aes(y = after_stat(density)), bins = 30, fill = "thistle", color = "purple", na.rm = TRUE) +
  geom_density(color = "darkviolet", linewidth = 1, na.rm = TRUE) +
  theme_minimal() +
  labs(
    title = "Distribusi Kerugian Finansial (USD)", 
    x = "Kerugian Finansial ($)", 
    y = "Kepadatan"
  )

# Q-Q Plot
qqnorm(df_clean$property_loss_usd)
qqline(df_clean$property_loss_usd, col = "red")

b. Variasi Antar Kelompok Gender Korban Setelah melihat ukuran oemusatan data dikategorikan sama denga menggunakan distribusi normal. Kita harus mendekteksi keragaman data dari variabel terhadap rata-ratanya. Hal ini dimaksudkan untuk memberikan keyakinan bahwa data yang dianalisis berasal dari populasi yang memiliki keragaman atau penyebaran data yang tidak jauh berberbeda. Adapun untuk mendeteksi homogenitas antar kelompok dapat dilakukan dengan Boxplot dan Lavene Test.Dan uji hogenitas ini dilakukan pada variabel victim gender dan property_loss_usd untuk Boxplot serta Lavene Test hanya dilakukan pada variabel property_loss_usd.

# Boxplot Kerugian Finansial Berdasarkan Gender Korban
df_clean %>%
  filter(!is.na(victim_gender_clean), !is.na(property_loss_usd)) %>%
  ggplot(aes(x = victim_gender_clean, y = property_loss_usd, fill = victim_gender_clean)) +
  geom_boxplot() +
  theme_minimal() +
  labs(
    title = "Variasi Kerugian Finansial Berdasarkan Gender Korban", 
    x = "Gender Korban", 
    y = "Kerugian ($)"
  )

# Uji Homogenitas Varians (Levene's Test)
leveneTest(property_loss_usd ~ as.factor(victim_gender_clean), data = df_clean)
## Levene's Test for Homogeneity of Variance (center = median)
##         Df F value Pr(>F)
## group    1  0.0011 0.9737
##       3153

💡 For you Information

Melalui visualisasi diatas ingin memberikan suatu pesan secara eksplisit yang berupa :

1) Histogram dan Density Plot Berdasarkan gambar Histogram dan Density Plot, distribusi variabel kerugian finansial (property_loss_usd) menunjukkan bentuk yang cenderung datar di sepanjang rentang nilai 0 hingga 50.000. Garis kepadatan (density curve) terlihat relatif konstan di sekitar nilai 2.0 ^{-5} tanpa adanya satu puncak tunggal di tengah. Hal ini mengindikasikan bahwa data kerugian finansial tidak berdistribusi normal, melainkan mendekati distribusi seragam (uniform distribution).

2) Distribusi Normal atau Q-Q Plot Berdasarkan tampilan Normal Q-Q Plot, titik-titik sampel (sample quantiles) membentuk pola melengkung menyerupai huruf S dan menyimpang secara signifikan dari garis referensi acuan (garis merah). Penyimpangan yang sangat jelas pada kedua ekor distribusi (ujung kiri dan ujung kanan) memperkuat kesimpulan visual bahwa variabel kerugian finansial tidak memenuhi asumsi normalitas.

3) Boxplot Berdasarkan visualisasi Boxplot, perbandingan nilai kerugian finansial antara kelompok gender korban (Laki-laki dan Perempuan) menunjukkan pola yang sangat serupa yaitu Garis tengah di dalam kotak (median) untuk kelompok Laki-laki dan Perempuan berada pada rentang nilai kerugian yang hampir sama (sekitar $25.000).Diikuti dengan ukuran dan rentang kotak untuk kedua kelompok gender sangat simetris dan seimbang, menunjukkan bahwa sebaran data pada kedua kelompok relatif identik.

4) Uji Homogenitas Varians (Levene’s Test)

Hipotesis Uji:

a) H_0: Varians kerugian finansial antara kelompok Laki-laki dan Perempuan adalah homogen * (sama).

b) H_1: Varians kerugian finansial antara kelompok Laki-laki dan Perempuan adalah tidak homogen (berbeda).

c) Hasil Statistik: Nilai F = 0.0011 dengan p = 0.9737 (Pr(>F)).

d) Kesimpulan: Karena nilai p (0.9737) > 0.05, maka gagal tolak H_0. Hal ini membuktikan bahwa varians kerugian finansial antara kelompok gender Laki-laki dan Perempuan terbukti homogen (asumsi homogenitas varians terpenuhi).

4. Integrasi Data (Join)

Integrasi secara etimologis didefinisikan sebagai proses untuk menyatukan atau menggabungkan sesuatu hal sifatnya berbeda atau setara. Integrasi pada eksploratif data berbeda dengan cara kerja integrasi dalam realita kehidupan sehari-hari yang hanya membutuhkan suatu dialog atau komunikasi. Dalam data integrasi dapat dilakukan dengan proses join baik left join, right join, full join dan inner join. Dengan perbedaan dari keempat proses join hanya terfokus pada arah variabel yang dipertahankan dan terlibat dari proses integrasi. Didalam tahapan integrasi, kita membutuhkan suatu identifier yang digunakan dalam proses join sebagai variabel penghubung antara variabel yang akan digabungkan. Pada jenis data kriminalitas di wilayah Amerika Serikat ini adalah menggabungkan dataset kejahatan populasi bersiap pakai dengan tabel referensi tingkat risiko kejahatan. Sehingga variabel yang digunakan sebagai penghubung dalam proses normalisasi atau integrasi adalah crime_type yang sudah dilakukan cleaning dengan jenis integrasi yang dilakukan adalah Left Join. Proses integrasi lebih disarankan dikarenakan dapat menghemat kode dan memiliki sifat pewarisan (mudah diperbaharui) akibat penggabungan dengan menggunakan satu alat sebagai penghubung yang peka terhadap perubahan yang fleksibel.

# Tabel Referensi Risiko Kejahatan
df_risiko_ref <- data.frame(
  crime_type_clean = c("Arson", "Assault & Battery", "Burglary & B&E", "Cybercrime & Hacking", 
                       "Domestic Violence", "Drug Offense", "DUI / Drunk Driving", "Fraud & Deception", 
                       "Homicide", "Kidnapping & Abduction", "Robbery", "Sexual Assault", 
                       "Theft & Larceny", "Trespassing", "Vandalism & Property Damage", "Other"),
  tingkat_risiko = c("Tinggi", "Sedang", "Sedang", "Sedang", 
                     "Tinggi", "Sedang", "Sedang", "Rendah", 
                     "Sangat Tinggi", "Sangat Tinggi", "Tinggi", "Sangat Tinggi", 
                     "Rendah", "Rendah", "Rendah", "Sedang")
)

# Integrasi menggunakan Left Join
df_joined <- df_clean %>%
  left_join(df_risiko_ref, by = "crime_type_clean")

# Validasi Jumlah Baris
cat("Jumlah baris data awal :", nrow(df_clean), "\n")
## Jumlah baris data awal : 5250
cat("Jumlah baris setelah join:", nrow(df_joined), "\n")
## Jumlah baris setelah join: 5250

5. Encoding Kategorik

Encoding adalah proses merubah bentuk atau representasi suatu data ke kode tertentu sesuai tujuan anlisis. Hal yang perlu menjadi catatan adalah proses encoding tidak mengubah makna atau informasi yang tersimpan dalam suatu data set. Adapun jenis dari transformasi data yaitu transformasi data Kategorik kedalam bentuk numerik yang meliputi 3 teknik yaitu Label Encoding, Ordinal Encoding, dan One-Hot Encoding. Pada data kriminalitas ini, implementasi dari transformasi kategori adalah pada variabel yang berasal dari proses join yaitu tingkat resiko dengan teknik ordinal encoding, varibel gender korban dengan teknik label encoding dan tiga kategori utama dari variabel crime type yang sudah dilakukan pembersihan dengan teknik one hot. Ketiga teknik tersebut berbeda dari segi prosedur dan hasil, untuk ordinal encoding merepresentasikan kategori mengikuti urutan tingkatan kategori. Sedangkan label encoding adalah transformassi data dengan memberikan satu kode numerik antara 0,1 dan 2. Dan one hot encoding adalah memberikan representasi kategori tanpa memberikan urutan numerik.

# 1. Ordinal Encoding & Binary Label Encoding
df_encoded <- df_joined %>%
  mutate(
    # A. Ordinal Encoding untuk Tingkat Risiko (Rendah=1 s.d. Sangat Tinggi=4)
    risiko_code = case_when(
      tolower(trimws(tingkat_risiko)) == "rendah" ~ 1,
      tolower(trimws(tingkat_risiko)) == "sedang" ~ 2,
      tolower(trimws(tingkat_risiko)) == "tinggi" ~ 3,
      tolower(trimws(tingkat_risiko)) == "sangat tinggi" ~ 4,
      TRUE ~ NA_real_
    ),
    
    # B. Label/Binary Encoding untuk Gender Korban (Perempuan=1, Laki-laki=0, NA=NA)
    gender_code = case_when(
      tolower(trimws(victim_gender_clean)) == "perempuan" ~ 1,
      tolower(trimws(victim_gender_clean)) %in% c("laki-laki", "male", "l") ~ 0,
      TRUE ~ NA_real_  # Tetap NA jika data aslinya missing/kosong
    )
  )

# 2. One-Hot Encoding untuk 3 Kategori Utama Kejahatan
df_onehot <- df_encoded %>%
  mutate(
    is_fraud   = if_else(tolower(trimws(crime_type_clean)) == "fraud & deception", 1, 0, missing = 0),
    is_theft   = if_else(tolower(trimws(crime_type_clean)) == "theft & larceny", 1, 0, missing = 0),
    is_robbery = if_else(tolower(trimws(crime_type_clean)) == "robbery", 1, 0, missing = 0)
  )

# 3. Menampilkan Hasil Encoding Lengkap ke Tabel HTML
df_onehot %>%
  select(
    incident_id, 
    crime_type_clean, 
    tingkat_risiko, 
    risiko_code, 
    victim_gender_clean, 
    gender_code, 
    is_fraud, 
    is_theft, 
    is_robbery
  ) %>%
  head(10) %>%
  knitr::kable(
    caption = "Hasil Gabungan Ordinal, Label, dan One-Hot Encoding Variabel Kategorik",
    align = "c"
  )
Hasil Gabungan Ordinal, Label, dan One-Hot Encoding Variabel Kategorik
incident_id crime_type_clean tingkat_risiko risiko_code victim_gender_clean gender_code is_fraud is_theft is_robbery
INC001115 Assault & Battery Sedang 2 NA NA 0 0 0
INC004706 Burglary & B&E Sedang 2 NA NA 0 0 0
INC002249 Homicide Sangat Tinggi 4 NA NA 0 0 0
INC000021 Vandalism & Property Damage Rendah 1 NA NA 0 0 0
INC000488 Domestic Violence Tinggi 3 Laki-laki 0 0 0 0
INC000661 Burglary & B&E Sedang 2 NA NA 0 0 0
INC001727 Robbery Tinggi 3 Perempuan 1 0 0 1
INC003981 Homicide Sangat Tinggi 4 Perempuan 1 0 0 0
INC001205 Burglary & B&E Sedang 2 NA NA 0 0 0
INC000972 Homicide Sangat Tinggi 4 NA NA 0 0 0

6. Transformasi atau Encoding Data Numerik

Pada tahap penutup ini, kita masuk ke studi kasus khusus menggunakan data yang telah dibersihkan dan telah dilakukan proses transformasi untuk memetakan profil kerugian finansial serta mengaplikasikan transformasi numerik (Log Transformation). Transformasi berbasis log di pilih bukan dengan tanpa dasar, melainkan transformasi log paling efektif untukk mengatasi data yang memiliki outlier sehingga sebaran data tidak normal atau distribusi melenceng (skewness). Karena transformasi log mampu menarik mekerengan distribusi data tidak normal kembali kepusat yang tidak mampu dilakukan oleh Min / Max dan Z-Score.

# 1. Memilih sub-dataset & Transformasi Logaritma (Pembersihan Tipe Data Numerik)
df_studi <- df_onehot %>%
  filter(!is.na(victim_gender_clean)) %>%
  mutate(
    # Konversi murni ke numerik agar tidak error saat dihitung
    property_loss_usd = as.numeric(gsub("[^0-9.]", "", as.character(property_loss_usd))),
    victim_age_clean  = as.numeric(as.character(victim_age)),
    
    # Transformasi Logaritma
    log_property_loss = log(property_loss_usd + 1)
  )

# 2. Tabel Ringkasan Profil Beban Kasus & Dampak Finansial (Solusi NA dengan na.rm = TRUE)
profil_kasus <- df_studi %>%
  group_by(crime_type_clean, victim_gender_clean) %>%
  summarise(
    Jumlah_Kasus        = n(),
    Rata_kerugian_USD   = round(mean(property_loss_usd, na.rm = TRUE), 2),
    Median_kerugian_USD = round(median(property_loss_usd, na.rm = TRUE), 2),
    Rata_Usia_Korban    = round(mean(victim_age_clean, na.rm = TRUE), 1),
    .groups = "drop"
  )

# Menampilkan Tabel Profil
knitr::kable(profil_kasus, caption = "Tabel Profil Beban Kasus & Dampak Finansial Kejahatan")
Tabel Profil Beban Kasus & Dampak Finansial Kejahatan
crime_type_clean victim_gender_clean Jumlah_Kasus Rata_kerugian_USD Median_kerugian_USD Rata_Usia_Korban
Arson Laki-laki 134 23013.52 21617.60 60.3
Arson Perempuan 109 25654.84 26392.99 52.8
Assault & Battery Laki-laki 183 24712.15 24497.14 51.6
Assault & Battery Perempuan 188 25391.93 24345.26 54.9
Burglary & B&E Laki-laki 91 25815.28 26303.36 61.2
Burglary & B&E Perempuan 98 24109.37 23864.40 51.2
Cybercrime & Hacking Laki-laki 120 26082.41 26525.55 55.1
Cybercrime & Hacking Perempuan 91 24514.20 23853.82 51.7
DUI / Drunk Driving Laki-laki 99 26910.97 25973.72 45.2
DUI / Drunk Driving Perempuan 95 23584.75 20930.51 52.6
Domestic Violence Laki-laki 121 26481.82 26403.01 50.2
Domestic Violence Perempuan 94 26516.30 26609.86 51.4
Drug Offense Laki-laki 125 24483.49 22212.71 50.4
Drug Offense Perempuan 134 24525.82 24466.58 50.8
Fraud & Deception Laki-laki 166 23885.23 23988.91 57.4
Fraud & Deception Perempuan 144 24243.10 24427.20 47.1
Homicide Laki-laki 122 23803.74 23235.41 54.1
Homicide Perempuan 127 23061.15 23808.53 64.6
Kidnapping & Abduction Laki-laki 116 28500.04 29423.76 51.1
Kidnapping & Abduction Perempuan 119 23106.84 23292.89 59.4
Other Laki-laki 65 26932.79 27899.72 48.4
Other Perempuan 61 25070.81 24215.12 44.5
Robbery Laki-laki 115 25003.65 23341.17 57.3
Robbery Perempuan 110 26018.64 24593.65 51.2
Sexual Assault Laki-laki 39 29042.04 29768.94 52.4
Sexual Assault Perempuan 40 26402.27 25851.16 47.7
Theft & Larceny Laki-laki 134 23086.56 23409.14 44.3
Theft & Larceny Perempuan 101 23198.98 21319.26 45.2
Trespassing Laki-laki 96 26364.82 28168.84 42.2
Trespassing Perempuan 90 24108.84 25024.33 45.9
Vandalism & Property Damage Laki-laki 98 25744.61 24973.34 49.4
Vandalism & Property Damage Perempuan 82 26047.33 25564.80 49.1
# 3. Visualisasi Kurva Kepadatan Setelah Transformasi Numerik
ggplot(df_studi, aes(x = log_property_loss, fill = victim_gender_clean)) +
  geom_density(alpha = 0.5, na.rm = TRUE) +
  theme_minimal() +
  labs(
    title = "Distribusi Log-Kerugian Finansial Berdasarkan Gender Korban",
    x = "Log(Kerugian Finansial + 1)",
    y = "Kepadatan",
    fill = "Gender Korban"
  )

C. DAFTAR PUSTAKA

Afandi, M. R., Rizqullah, M. N., & Arifin, J. (2025). Peran polisi dalam mencegah kriminalitas: Studi kasus tindakan pencegahan kantor polisi sektor Lea-Lea. Jurnal Geuthèë: Penelitian Multidisiplin, 8(3), 177–185. https://doi.org/10.52626/jg.v8i3.394

Jebb, A. T., Parrigon, S., & Woo, S. E. (2016). Exploratory data analysis as a foundation of inductive research. Human Resource Management Review, 27(2), 265–276. https://doi.org/10.1016/j.hrmr.2016.08.003

Mardhiyah, Dinilhaq, N. A., Amelia, Y., Arini, A., Hidayatullah, R., & Harmonedi. (2025). Populasi dan sampel dalam penelitian pendidikan: Memahami perbedaan, implikasi, dan strategi pemilihan yang tepat. Katalis Pendidikan: Jurnal Ilmu Pendidikan dan Matematika, 2(2), 208–218. https://doi.org/10.62383/katalis.v2i2.1670

Nuryadi, Astuti, T. D., Utami, E. S., & Budiantara, M. (2018). Dasar-dasar statistik penelitian. Gramasuryan / Universitas Mercu Buana Yogyakarta.