Dataset Titanic merupakan dataset yang berisi informasi mengenai penumpang kapal Titanic yang mengalami tragedi pada tahun 1912. Dataset mencatat berbagai karakteristik penumpang, seperti jenis kelamin, umur, kelas tiket, jumlah keluarga, harga tiket, kabin, pelabuhan keberangkatan, dan status keselamatan.
Analisis data eksploratif dilakukan untuk memahami karakteristik data serta mengetahui pola yang terdapat pada data penumpang Titanic.
Bagaimana karakteristik dan pola penumpang Titanic berdasarkan variabel umur, jenis kelamin, dan status keselamatan?
Analisis dilakukan untuk mengeksplorasi karakteristik penumpang Titanic serta mengetahui pola berdasarkan variabel umur, jenis kelamin, dan status keselamatan.
Dataset Titanic yang digunakan dalam project ini diperoleh dari Kaggle (Elyamadad, n.d.): https://www.kaggle.com/datasets/elyamadad/titanic-dataset.
Data yang dibaca adalah data hasil cleaning
(titanic_cleaning) yang berada satu folder dengan file
laporan ini.
titanic_cleaning <- "titanic_cleaning.xlsx"
if (!file.exists(titanic_cleaning)) {
stop("File data tidak ditemukan. Pastikan file Excel berada di folder yang SAMA dengan file .Rmd, ",
"dan namanya sama persis dengan isi 'nama_file'.")
}
data_titanic <- read_excel(titanic_cleaning)
data_titanic$Age <- as.numeric(data_titanic$Age)
tampil(data_titanic, 6, "Tabel 2.1 Enam Baris Pertama Data")
| PassengerId | Survived | Sex | Age |
|---|---|---|---|
| 1 | 0 | male | 22 |
| 2 | 1 | female | 38 |
| 3 | 1 | female | 26 |
| 4 | 1 | female | 35 |
| 5 | 0 | male | 35 |
| 6 | 0 | male | 29 |
Data yang dibaca terdiri dari 891 baris dan 4 kolom.
identifikasi <- data.frame(
Aspek = c("Nama dataset", "Sumber data", "Jumlah variabel", "Jumlah observasi (baris)", "Bentuk data"),
Keterangan = c("Titanic Dataset",
"Kaggle - Titanic Dataset (Elyamadad, n.d.), https://www.kaggle.com/datasets/elyamadad/titanic-dataset",
"12 variabel",
"891 observasi (satu baris mewakili satu penumpang)",
"Tabel/CSV (structured data)")
)
knitr::kable(identifikasi, align = "l", caption = "Tabel 2.2 Identifikasi Dataset")
| Aspek | Keterangan |
|---|---|
| Nama dataset | Titanic Dataset |
| Sumber data | Kaggle - Titanic Dataset (Elyamadad, n.d.), https://www.kaggle.com/datasets/elyamadad/titanic-dataset |
| Jumlah variabel | 12 variabel |
| Jumlah observasi (baris) | 891 observasi (satu baris mewakili satu penumpang) |
| Bentuk data | Tabel/CSV (structured data) |
variabel <- data.frame(
Variabel = c("PassengerId", "Survived", "Pclass", "Name", "Sex", "Age",
"SibSp", "Parch", "Ticket", "Fare", "Cabin", "Embarked"),
Keterangan = c("ID penumpang", "Status keselamatan", "Kelas tiket", "Nama penumpang",
"Jenis kelamin", "Umur", "Jumlah saudara/pasangan", "Jumlah orang tua/anak",
"Nomor tiket", "Harga tiket", "Kode kabin", "Pelabuhan keberangkatan"),
Jenis = c("Kualitatif", "Kualitatif", "Kualitatif", "Kualitatif", "Kualitatif",
"Kuantitatif kontinu", "Kuantitatif diskrit", "Kuantitatif diskrit",
"Kualitatif", "Kuantitatif kontinu", "Kualitatif", "Kualitatif"),
Skala = c("Nominal", "Nominal", "Ordinal", "Nominal", "Nominal", "Rasio",
"Rasio", "Rasio", "Nominal", "Rasio", "Nominal", "Nominal")
)
knitr::kable(variabel, align = "l", caption = "Tabel 2.3 Variabel, Jenis, dan Skala Pengukuran")
| Variabel | Keterangan | Jenis | Skala |
|---|---|---|---|
| PassengerId | ID penumpang | Kualitatif | Nominal |
| Survived | Status keselamatan | Kualitatif | Nominal |
| Pclass | Kelas tiket | Kualitatif | Ordinal |
| Name | Nama penumpang | Kualitatif | Nominal |
| Sex | Jenis kelamin | Kualitatif | Nominal |
| Age | Umur | Kuantitatif kontinu | Rasio |
| SibSp | Jumlah saudara/pasangan | Kuantitatif diskrit | Rasio |
| Parch | Jumlah orang tua/anak | Kuantitatif diskrit | Rasio |
| Ticket | Nomor tiket | Kualitatif | Nominal |
| Fare | Harga tiket | Kuantitatif kontinu | Rasio |
| Cabin | Kode kabin | Kualitatif | Nominal |
| Embarked | Pelabuhan keberangkatan | Kualitatif | Nominal |
Pada tahap identifikasi data mentah, ditemukan tiga jenis permasalahan: missing value, outlier, dan inkonsistensi penulisan.
masalah <- data.frame(
Jenis = c("Missing value", "Missing value", "Missing value", "Outlier", "Inkonsistensi"),
Variabel = c("Age", "Cabin", "Embarked", "Fare", "Ticket"),
Keterangan = c("177 data kosong",
"687 data kosong",
"2 data kosong (baris 63 dan 831)",
"Baris 259, 680, dan 738 bernilai sama, yaitu 512,3292",
"Penulisan tidak konsisten (campuran huruf, angka, dan spasi)")
)
knitr::kable(masalah, align = "l", caption = "Tabel 2.4 Permasalahan pada Data Mentah")
| Jenis | Variabel | Keterangan |
|---|---|---|
| Missing value | Age | 177 data kosong |
| Missing value | Cabin | 687 data kosong |
| Missing value | Embarked | 2 data kosong (baris 63 dan 831) |
| Outlier | Fare | Baris 259, 680, dan 738 bernilai sama, yaitu 512,3292 |
| Inkonsistensi | Ticket | Penulisan tidak konsisten (campuran huruf, angka, dan spasi) |
w5h1 <- data.frame(
Pertanyaan = c("Dari mana data diperoleh?", "Siapa yang mengumpulkan?", "Mengapa data dikumpulkan?",
"Kapan data dikumpulkan?", "Dalam bentuk apa data disimpan?", "Bagaimana data disusun?",
"Apa yang direpresentasikan dalam satu baris?", "Hubungan data dengan sumber lain",
"Apakah tersedia metadata/data dictionary?", "Riwayat data hingga menjadi dataset yang digunakan"),
Jawaban = c(
"Kaggle.",
"Anonim; tidak diketahui berdasarkan informasi yang tersedia pada dataset.",
"Untuk memprediksi penumpang yang selamat dari bencana dengan menganalisis faktor seperti usia, jenis kelamin, kelas, dan tiket.",
"Peristiwa yang dicatat adalah tenggelamnya Titanic pada 15 April 1912. Data penumpang dikumpulkan melalui komite investigasi setelah kecelakaan; dataset yang diunggah ke Kaggle tidak mencantumkan tanggal tepatnya.",
"Tabel/CSV (structured data).",
"Setiap baris mewakili seorang penumpang, sedangkan kolom berisi variabel karakteristik penumpang (PassengerId, Survived, Pclass, Name, Sex, Age, SibSp, Parch, Ticket, Fare, Cabin, dan Embarked).",
"Karakteristik masing-masing penumpang. Dataset berisi 891 observasi/baris.",
"Titanic: Triumph and Tragedy karya Eaton & Haas (1994).",
"Ya, tersedia.",
"Data berasal dari berbagai sumber sejarah dan penelitian, kemudian diperbaiki serta dilengkapi menggunakan Encyclopedia Titanica. Data ini selanjutnya digunakan untuk analisis statistik dan machine learning, termasuk pada dataset Titanic di Kaggle."
)
)
knitr::kable(w5h1, align = "l", caption = "Tabel 2.5 Ringkasan 5W+1H Dataset Titanic")
| Pertanyaan | Jawaban |
|---|---|
| Dari mana data diperoleh? | Kaggle. |
| Siapa yang mengumpulkan? | Anonim; tidak diketahui berdasarkan informasi yang tersedia pada dataset. |
| Mengapa data dikumpulkan? | Untuk memprediksi penumpang yang selamat dari bencana dengan menganalisis faktor seperti usia, jenis kelamin, kelas, dan tiket. |
| Kapan data dikumpulkan? | Peristiwa yang dicatat adalah tenggelamnya Titanic pada 15 April 1912. Data penumpang dikumpulkan melalui komite investigasi setelah kecelakaan; dataset yang diunggah ke Kaggle tidak mencantumkan tanggal tepatnya. |
| Dalam bentuk apa data disimpan? | Tabel/CSV (structured data). |
| Bagaimana data disusun? | Setiap baris mewakili seorang penumpang, sedangkan kolom berisi variabel karakteristik penumpang (PassengerId, Survived, Pclass, Name, Sex, Age, SibSp, Parch, Ticket, Fare, Cabin, dan Embarked). |
| Apa yang direpresentasikan dalam satu baris? | Karakteristik masing-masing penumpang. Dataset berisi 891 observasi/baris. |
| Hubungan data dengan sumber lain | Titanic: Triumph and Tragedy karya Eaton & Haas (1994). |
| Apakah tersedia metadata/data dictionary? | Ya, tersedia. |
| Riwayat data hingga menjadi dataset yang digunakan | Data berasal dari berbagai sumber sejarah dan penelitian, kemudian diperbaiki serta dilengkapi menggunakan Encyclopedia Titanica. Data ini selanjutnya digunakan untuk analisis statistik dan machine learning, termasuk pada dataset Titanic di Kaggle. |
Proses pembersihan data dilakukan melalui lima tahap:
Tahap imputasi dilakukan pada berkas Excel sebelum data dibaca ke R. Pemeriksaan di R menunjukkan jumlah missing value pada Age sebanyak 0.
sum(is.na(data_titanic$Age))
## [1] 0
cek_missing <- data.frame(Variabel = names(data_titanic),
Jumlah_Missing = as.integer(colSums(is.na(data_titanic))))
tabel(cek_missing, 0, "Tabel 3.1 Jumlah Missing Value per Variabel pada Data yang Digunakan")
| Variabel | Jumlah_Missing |
|---|---|
| PassengerId | 0 |
| Survived | 0 |
| Sex | 0 |
| Age | 0 |
Dipilih 4 variabel yang dianalisis (PassengerId, Survived, Sex, dan Age) dengan membuang 8 variabel lainnya.
data_variabel <- data_titanic[, !(names(data_titanic) %in%
c("Pclass", "Name", "SibSp", "Parch", "Ticket", "Fare", "Cabin", "Embarked"))]
tampil(data_variabel, 10, "Tabel 3.2 Data Setelah Cleaning (10 Baris Pertama)")
| PassengerId | Survived | Sex | Age |
|---|---|---|---|
| 1 | 0 | male | 22 |
| 2 | 1 | female | 38 |
| 3 | 1 | female | 26 |
| 4 | 1 | female | 35 |
| 5 | 0 | male | 35 |
| 6 | 0 | male | 29 |
| 7 | 0 | male | 54 |
| 8 | 0 | male | 2 |
| 9 | 1 | female | 27 |
| 10 | 1 | female | 14 |
sebelum_sesudah <- data.frame(
Aspek = c("Jumlah variabel", "Jumlah observasi", "Missing value pada Age"),
Sebelum_Cleaning = c("12", "891", "177"),
Sesudah_Cleaning = c(as.character(ncol(data_variabel)),
as.character(nrow(data_variabel)),
as.character(sum(is.na(data_variabel$Age))))
)
knitr::kable(sebelum_sesudah, align = "c", caption = "Tabel 3.3 Perbandingan Data Sebelum dan Sesudah Cleaning")
| Aspek | Sebelum_Cleaning | Sesudah_Cleaning |
|---|---|---|
| Jumlah variabel | 12 | 4 |
| Jumlah observasi | 891 | 891 |
| Missing value pada Age | 177 | 0 |
Sebelum cleaning, variabel Age memiliki 177 missing value dan terdapat 12 variabel. Setelah cleaning, missing value pada Age sudah teratasi dan variabel yang digunakan hanya 4, yaitu PassengerId, Survived, Sex, Age.
age <- data_titanic$Age
stat_age <- data.frame(
Statistik = c("Jumlah Data", "Mean", "Median", "Standar Deviasi", "Minimum", "Maksimum"),
Nilai = c(as.character(sum(!is.na(age))), fmt(mean(age, na.rm = TRUE)), fmt(median(age, na.rm = TRUE)),
fmt(sd(age, na.rm = TRUE)), fmt(min(age, na.rm = TRUE)), fmt(max(age, na.rm = TRUE)))
)
knitr::kable(stat_age, align = "c", caption = "Tabel 4.1 Statistik Deskriptif Variabel Age")
| Statistik | Nilai |
|---|---|
| Jumlah Data | 891 |
| Mean | 29,60 |
| Median | 28,00 |
| Standar Deviasi | 14,15 |
| Minimum | 0,42 |
| Maksimum | 80,00 |
Variabel Age memiliki 891 data dan tidak terdapat missing value. Rata-rata umur adalah 29,60 tahun, median 28,00 tahun, dan standar deviasi 14,15, dengan umur minimum 0,42 dan maksimum 80,00 tahun.
ggplot(data_titanic, aes(x = Age)) +
geom_histogram(bins = 20, fill = "steelblue", color = "white", alpha = 0.9) +
labs(
title = "Distribusi Usia Penumpang",
x = "Usia (Tahun)",
y = "Total Penumpang"
) +
theme_minimal()
Gambar 4.1 Histogram distribusi usia penumpang
Histogram digunakan untuk melihat bentuk distribusi usia secara visual. Usia penumpang memiliki konsentrasi terbesar pada usia muda hingga dewasa, dengan penyebaran ke arah usia yang lebih tinggi.
ggplot(data_titanic, aes(x = Age)) +
geom_density() +
labs(
title = "Density Plot Usia Penumpang",
x = "Usia",
y = "Density"
) +
theme_minimal()
Gambar 4.2 Density plot usia penumpang
Density plot digunakan untuk melihat pola distribusi secara lebih halus. Pada data Age, distribusinya tidak sepenuhnya simetris dan terdapat kecenderungan penyimpangan dari bentuk normal.
ggplot(data_titanic, aes(sample = Age)) +
stat_qq() +
stat_qq_line() +
labs(
title = "Q-Q Plot Usia Penumpang"
) +
theme_minimal()
Gambar 4.3 Q-Q plot usia penumpang
Pada Q-Q plot, jika data berdistribusi normal maka titik-titik akan mengikuti garis acuan. Pada data Age, titik-titik tidak seluruhnya mengikuti garis, terutama pada bagian ujung distribusi. Hal ini menunjukkan adanya penyimpangan dari distribusi normal, dan bagian tail distribusi tidak sepenuhnya sesuai dengan distribusi normal.
Hipotesis: H0: data Age berdistribusi normal; H1: data Age tidak berdistribusi normal. Taraf signifikansi yang digunakan adalah 5%.
shapiro.test(data_titanic$Age)
##
## Shapiro-Wilk normality test
##
## data: data_titanic$Age
## W = 0.97916, p-value = 5.666e-10
sw <- shapiro.test(data_titanic$Age)
n_sw <- sum(!is.na(data_titanic$Age))
sw_W <- unname(sw$statistic)
sw_p <- sw$p.value
tabel_sw <- data.frame(
Statistik = c("Jumlah data (n)", "Statistik W", "p-value"),
Nilai = c(as.character(n_sw), fmt(sw_W, 4), fmt_p(sw_p))
)
knitr::kable(tabel_sw, align = "c", caption = "Tabel 4.2 Hasil Uji Shapiro-Wilk")
| Statistik | Nilai |
|---|---|
| Jumlah data (n) | 891 |
| Statistik W | 0,9792 |
| p-value | 5,666e-10 |
Uji Shapiro-Wilk pada 891 data menghasilkan W = 0,9792 dan p-value = 5,666e-10. Dengan taraf signifikansi 5%, p-value < 0,05 sehingga H0 ditolak, artinya data Age (usia) tidak berdistribusi normal.
Namun, sesuai konsep EDA, hasil ini tidak berarti bahwa data tersebut buruk. Data usia memang dapat memiliki distribusi yang tidak normal. Normalitas harus dilihat berdasarkan tujuan analisis dan metode statistik yang akan digunakan.
Selanjutnya diperiksa apakah penyebaran Age antara kelompok laki-laki dan perempuan relatif sama. Variabel Sex berperan sebagai kelompok, dan variabel Age sebagai nilai yang dibandingkan.
tabel_sex_stat <- data_titanic %>%
group_by(Sex) %>%
summarise(Jumlah = n(),
Mean_Age = mean(Age, na.rm = TRUE),
Median = median(Age, na.rm = TRUE),
Varians = var(Age, na.rm = TRUE),
.groups = "drop")
tabel(tabel_sex_stat, 2, "Tabel 4.3 Ringkasan Usia Berdasarkan Jenis Kelamin")
| Sex | Jumlah | Mean_Age | Median | Varians |
|---|---|---|---|---|
| female | 314 | 27,94 | 27 | 195,64 |
| male | 577 | 30,51 | 28 | 200,88 |
n_m <- tabel_sex_stat$Jumlah[tabel_sex_stat$Sex == "male"]
n_f <- tabel_sex_stat$Jumlah[tabel_sex_stat$Sex == "female"]
mean_m <- tabel_sex_stat$Mean_Age[tabel_sex_stat$Sex == "male"]
mean_f <- tabel_sex_stat$Mean_Age[tabel_sex_stat$Sex == "female"]
var_m <- tabel_sex_stat$Varians[tabel_sex_stat$Sex == "male"]
var_f <- tabel_sex_stat$Varians[tabel_sex_stat$Sex == "female"]
ggplot(data_titanic, aes(x = Sex, y = Age, fill = Sex)) +
geom_boxplot() +
scale_fill_manual(
values = c(
"male" = "skyblue",
"female" = "pink"
)
) +
labs(
title = "Boxplot Usia Berdasarkan Jenis Kelamin",
x = "Jenis Kelamin",
y = "Usia",
fill = "Jenis Kelamin"
) +
theme_minimal()
Gambar 4.4 Boxplot usia berdasarkan jenis kelamin
Berdasarkan tabel, jumlah penumpang laki-laki (male) adalah 577 orang dan perempuan (female) 314 orang. Rata-rata usia laki-laki 30,5 tahun, sedangkan perempuan 27,9 tahun, sehingga laki-laki cenderung lebih tua. Varians usia laki-laki 201 dan perempuan 196, menunjukkan penyebaran usia laki-laki sedikit lebih besar. Pada boxplot, penyebaran usia kedua kelompok tampak relatif mirip.
data_levene <- data_variabel
data_levene$Sex <- as.factor(data_levene$Sex)
car::leveneTest(Age ~ Sex, data = data_levene)
## Levene's Test for Homogeneity of Variance (center = median)
## Df F value Pr(>F)
## group 1 0.2307 0.6311
## 889
lev <- car::leveneTest(Age ~ Sex, data = data_levene)
lev_F <- lev[1, "F value"]
lev_p <- lev[1, "Pr(>F)"]
tabel_lev <- data.frame(Statistik = c("F", "p-value"),
Nilai = c(fmt(lev_F, 4), fmt(lev_p, 4)))
knitr::kable(tabel_lev, align = "c", caption = "Tabel 4.4 Hasil Uji Levene")
| Statistik | Nilai |
|---|---|
| F | 0,2307 |
| p-value | 0,6311 |
Uji Levene (car::leveneTest, dengan pusat median sebagai
pengaturan bawaan) menghasilkan F = 0,2307 dan p-value
= 0,6311. Karena p-value > 0,05, maka
H0 tidak ditolak. Artinya, tidak terdapat bukti yang cukup
bahwa varians usia laki-laki dan perempuan berbeda secara statistik,
sehingga varians dapat dianggap homogen.
| Aspek | Temuan |
|---|---|
| Normalitas | Histogram dan density plot menunjukkan bentuk distribusi usia yang tidak sepenuhnya normal; Q-Q plot menunjukkan penyimpangan titik dari garis acuan terutama pada bagian ujung. |
| Normalitas (uji) | Shapiro-Wilk: p-value = 5,666e-10 (p < 0,05, Age tidak berdistribusi normal). |
| Homogenitas | Boxplot menunjukkan penyebaran usia laki-laki dan perempuan relatif mirip. |
| Homogenitas (uji) | Levene: p-value = 0,6311 (p > 0,05, varians Age berdasarkan Sex dapat dianggap homogen). |
Data karakteristik penumpang (Sex dan Age) dan data keselamatan (Survived) dipisahkan menjadi dua tabel, lalu diintegrasikan menggunakan PassengerId sebagai key.
tabel_karakteristik <- data_titanic %>%
dplyr::select(PassengerId, Sex, Age)
tabel_keselamatan <- data_titanic %>%
dplyr::select(PassengerId, Survived)
nrow(tabel_karakteristik)
## [1] 891
nrow(tabel_keselamatan)
## [1] 891
length(unique(tabel_karakteristik$PassengerId))
## [1] 891
length(unique(tabel_keselamatan$PassengerId))
## [1] 891
data_integrasi <- tabel_karakteristik %>%
left_join(tabel_keselamatan, by = "PassengerId")
cek_integrasi <- data.frame(
Pemeriksaan = c("Jumlah baris tabel_karakteristik", "Jumlah baris tabel_keselamatan",
"PassengerId unik pada tabel_karakteristik", "PassengerId unik pada tabel_keselamatan",
"Jumlah baris data_integrasi", "Jumlah missing value pada data_integrasi"),
Hasil = c(nrow(tabel_karakteristik), nrow(tabel_keselamatan),
length(unique(tabel_karakteristik$PassengerId)),
length(unique(tabel_keselamatan$PassengerId)),
nrow(data_integrasi), sum(is.na(data_integrasi)))
)
tabel(cek_integrasi, 0, "Tabel 5.1 Pemeriksaan Sebelum dan Sesudah Integrasi")
| Pemeriksaan | Hasil |
|---|---|
| Jumlah baris tabel_karakteristik | 891 |
| Jumlah baris tabel_keselamatan | 891 |
| PassengerId unik pada tabel_karakteristik | 891 |
| PassengerId unik pada tabel_keselamatan | 891 |
| Jumlah baris data_integrasi | 891 |
| Jumlah missing value pada data_integrasi | 0 |
tampil(data_integrasi, 10, "Tabel 5.2 Data Hasil Integrasi (10 Baris Pertama)")
| PassengerId | Sex | Age | Survived |
|---|---|---|---|
| 1 | male | 22 | 0 |
| 2 | female | 38 | 1 |
| 3 | female | 26 | 1 |
| 4 | female | 35 | 1 |
| 5 | male | 35 | 0 |
| 6 | male | 29 | 0 |
| 7 | male | 54 | 0 |
| 8 | male | 2 | 0 |
| 9 | female | 27 | 1 |
| 10 | female | 14 | 1 |
Proses left_join() menggabungkan informasi Sex
dan Age dengan Survived berdasarkan
PassengerId yang sama, sehingga diperoleh satu dataset
(data_integrasi) berisi 891 baris yang
memuat karakteristik dan status keselamatan setiap penumpang. Dataset
hasil integrasi inilah yang digunakan untuk analisis selanjutnya.
Sebelum encoding, variabel Sex memiliki nilai kategorik berupa male dan female. Setelah encoding, nilai tersebut diubah menjadi angka, yaitu 1 = male dan 0 = female, sehingga data lebih mudah digunakan dalam proses analisis atau pemodelan.
data_label <- data_integrasi %>%
mutate(Sex_Label = ifelse(Sex == "male", 1, 0))
tampil(data_label, 10, "Tabel 6.1 Hasil Label Encoding Variabel Sex")
| PassengerId | Sex | Age | Survived | Sex_Label |
|---|---|---|---|---|
| 1 | male | 22 | 0 | 1 |
| 2 | female | 38 | 1 | 0 |
| 3 | female | 26 | 1 | 0 |
| 4 | female | 35 | 1 | 0 |
| 5 | male | 35 | 0 | 1 |
| 6 | male | 29 | 0 | 1 |
| 7 | male | 54 | 0 | 1 |
| 8 | male | 2 | 0 | 1 |
| 9 | female | 27 | 1 | 0 |
| 10 | female | 14 | 1 | 0 |
table(Sex = data_label$Sex, Sex_Label = data_label$Sex_Label)
## Sex_Label
## Sex 0 1
## female 314 0
## male 0 577
Pada one-hot encoding, data yang semula berbentuk kategori teks (male dan female) diubah menjadi kolom indikator (0/1) untuk setiap kategori.
titanic_onehot <- data_integrasi
titanic_sex <- dummy_cols(
data_integrasi,
select_columns = "Sex",
remove_first_dummy = FALSE,
remove_selected_columns = TRUE
)
tabel_sex <- titanic_sex %>%
dplyr::select(PassengerId, Sex_male, Sex_female)
tampil(tabel_sex, 10, "Tabel 6.2 Hasil One-Hot Encoding Variabel Sex")
| PassengerId | Sex_male | Sex_female |
|---|---|---|
| 1 | 1 | 0 |
| 2 | 0 | 1 |
| 3 | 0 | 1 |
| 4 | 0 | 1 |
| 5 | 1 | 0 |
| 6 | 1 | 0 |
| 7 | 1 | 0 |
| 8 | 1 | 0 |
| 9 | 0 | 1 |
| 10 | 0 | 1 |
Hasilnya adalah dua kolom indikator, Sex_male dan
Sex_female, di mana setiap penumpang bernilai 1 pada kolom
kategorinya dan 0 pada kolom lainnya.
left_join()
berdasarkan PassengerId menjadi 891 baris data.Sex_male
dan Sex_female), sehingga data siap digunakan untuk
analisis atau pemodelan.