# Membaca dataset
titanic <- read.csv("~/smt 4/pemodelan statistika dan simulasi/Titanic-Dataset.csv", sep=";", stringsAsFactors=FALSE)
# Mengecek missing values
colSums(is.na(titanic))
## PassengerId Survived Pclass Name Gender Age
## 0 0 0 0 0 177
## SibSp Parch Ticket Fare Cabin Embarked
## 0 0 0 0 0 0
# Mengecek duplikasi
sum(duplicated(titanic$PassengerId))
## [1] 0
# Mengecek tipe data
sapply(titanic, class)
## PassengerId Survived Pclass Name Gender Age
## "integer" "integer" "integer" "character" "character" "numeric"
## SibSp Parch Ticket Fare Cabin Embarked
## "integer" "integer" "character" "character" "character" "character"
# Mengecek nilai unik di kolom kategorikal
table(titanic$Gender)
##
## female male
## 314 577
table(titanic$Embarked)
##
## C Q S
## 2 168 77 644
# Ringkasan statistik untuk mendeteksi anomali
summary(titanic)
## PassengerId Survived Pclass Name
## Min. : 1.0 Min. :0.0000 Min. :1.000 Length:891
## 1st Qu.:223.5 1st Qu.:0.0000 1st Qu.:2.000 Class :character
## Median :446.0 Median :0.0000 Median :3.000 Mode :character
## Mean :446.0 Mean :0.3838 Mean :2.309
## 3rd Qu.:668.5 3rd Qu.:1.0000 3rd Qu.:3.000
## Max. :891.0 Max. :1.0000 Max. :3.000
##
## Gender Age SibSp Parch
## Length:891 Min. : 0.42 Min. :0.000 Min. :0.0000
## Class :character 1st Qu.:20.12 1st Qu.:0.000 1st Qu.:0.0000
## Mode :character Median :28.00 Median :0.000 Median :0.0000
## Mean :29.70 Mean :0.523 Mean :0.3816
## 3rd Qu.:38.00 3rd Qu.:1.000 3rd Qu.:0.0000
## Max. :80.00 Max. :8.000 Max. :6.0000
## NA's :177
## Ticket Fare Cabin Embarked
## Length:891 Length:891 Length:891 Length:891
## Class :character Class :character Class :character Class :character
## Mode :character Mode :character Mode :character Mode :character
##
##
##
##
Dataset Titanic memiliki beberapa permasalahan yang perlu diperbaiki sebelum analisis lebih lanjut. Beberapa kolom seperti Age, Cabin, dan Embarked memiliki missing values yang perlu diisi atau ditangani dengan strategi tertentu. Selain itu, terdapat kemungkinan duplikasi data berdasarkan PassengerId, yang harus diverifikasi agar tidak mempengaruhi hasil analisis. Tipe data pada beberapa kolom juga tidak sesuai, seperti Fare yang seharusnya numerik dan Gender yang masih berbentuk teks sehingga perlu dikonversi ke format angka. Distribusi kategori pada kolom Gender dan Embarked juga harus diperiksa untuk memastikan keseimbangannya. Terakhir, potensi adanya anomali dalam data numerik, seperti nilai ekstrem pada Fare dan Age, perlu dianalisis lebih lanjut. Oleh karena itu, preprocessing data sangat diperlukan agar dataset lebih bersih dan siap digunakan dalam analisis atau model prediktif.
Diperlukan beberapa teknik preprocessing yang tepat. Missing values pada kolom Age dapat diisi dengan median atau imputasi berdasarkan kelompok Pclass dan Gender, sementara kolom Cabin, yang memiliki banyak data hilang, bisa dihapus atau diubah menjadi fitur biner untuk menunjukkan apakah seorang penumpang memiliki kabin atau tidak. Pada kolom Embarked, nilai yang hilang dapat diisi dengan modus, yaitu nilai yang paling sering muncul. Jika ditemukan data duplikat berdasarkan PassengerId, maka baris yang duplikat harus dihapus agar tidak mempengaruhi analisis. Selain itu, tipe data perlu disesuaikan, seperti mengubah Gender menjadi numerik (male = 0, female = 1) dan memastikan Fare berada dalam format numerik. Untuk menyeimbangkan distribusi kategori, kategori dengan frekuensi yang sangat kecil bisa dikelompokkan ulang atau dilakukan metode sampling agar distribusi lebih seimbang. Anomali dalam data, seperti nilai ekstrem pada Age dan Fare, dapat dideteksi dan ditangani menggunakan metode IQR (Interquartile Range) atau Z-score. Jika dataset akan digunakan dalam model machine learning, normalisasi atau standarisasi pada Age dan Fare juga bisa diterapkan agar skala data lebih seragam. Dengan menerapkan teknik preprocessing ini, dataset akan menjadi lebih bersih dan siap untuk analisis atau pemodelan lebih lanjut.
Preprocessing data memiliki dampak yang signifikan terhadap analisis data selanjutnya. Dengan menangani missing values, dataset menjadi lebih lengkap dan mengurangi bias dalam perhitungan statistik atau model prediktif. Menghapus duplikasi data memastikan bahwa setiap entri unik, sehingga tidak ada pengaruh ganda yang dapat menyebabkan hasil analisis menjadi tidak valid. Penyesuaian tipe data, seperti mengubah Gender menjadi numerik dan memastikan Fare berada dalam format yang benar, membuat dataset lebih mudah diolah dalam analisis statistik maupun machine learning. Selain itu, menyeimbangkan distribusi kategori dapat meningkatkan keakuratan model dengan mencegah ketimpangan dalam prediksi. Penanganan anomali pada Age dan Fare membantu mengurangi distorsi dalam hasil analisis, terutama dalam metode berbasis regresi atau clustering. Jika diterapkan dalam machine learning, normalisasi dan standarisasi memungkinkan algoritma bekerja lebih optimal dengan skala data yang seragam. Secara keseluruhan, preprocessing meningkatkan kualitas dataset, membuat analisis lebih akurat, dan memastikan hasil yang lebih dapat diandalkan.