ANALISIS DATA TITANIC MENGGUNAKAN STATISTIK DESKRIPTIF, VISUALISASI, KORELASI PEARSON, DAN REGRESI LINIER BERGANDA DI R

NAZWA KHOIRINA
3338240005

Laporan ini Disusun untuk Memenuhi
Tugas Mata Kuliah Pengantar Data Sains.

PROGRAM STUDI STATISTIKA
FAKULTAS TEKNIK
UNIVERSITAS SULTAN AGENG TIRTAYASA
2025

Kata Pengantar

Puji syukur penulis panjatkan kepada Tuhan Yang Maha Esa atas rahmat dan kemudahan yang diberikan sehingga laporan analisis data ini dapat diselesaikan dengan baik. Laporan ini disusun sebagai salah satu tugas mata kuliah Pengantar Data Sains yang bertujuan untuk melakukan analisis data menggunakan bahasa pemrograman R.

Dalam laporan ini, penulis melakukan analisis terhadap dataset titanic menggunakan beberapa metode analisis statistik, meliputi statistik deskriptif, visualisasi data, korelasi Pearson, serta regresi linier berganda. Analisis ini diharapkan dapat memberikan gambaran mengenai karakteristik penumpang Titanic serta faktor-faktor yang berpengaruh terhadap variabel tertentu dalam dataset.

Penulis juga mengucapkan terima kasih kepada semua pihak yang telah memberikan dukungan selama proses penyusunan laporan ini.

Semoga laporan ini dapat memberikan manfaat bagi pembaca dan membantu meningkatkan pemahaman dalam melakukan analisis data.

Cilegon, 27 November 2025
Penulis

Abstract:

Titanic adalah kapal penumpang mewah, tenggelam pada 15 April 1912 yang mengakibatkan banyak korban meninggal. Analisis ini bertujuan menganalisis pola dan hubungan dalam dataset Titanic untuk memahami faktor-faktor yang memengaruhi keselamatan penumpang dan harga tiket (Fare). Analisis berbasis data sekunder dilakukan menggunakan statistik deskriptif, visualisasi data, analisis korelasi, dan regresi linear berganda. Hasil analisis menunjukkan mayoritas penumpang berusia muda, sebagian besar berada di kelas tiga, dan penumpang perempuan memiliki tingkat keselamatan lebih tinggi dibanding laki-laki. Kelas tiket berpengaruh kuat terhadap keselamatan dan harga tiket, sedangkan usia dan jenis kelamin memberikan pengaruh tambahan yang lebih kecil. Hasil regresi berganda menunjukkan bahwa sekitar 32% variasi harga tiket dapat dijelaskan oleh variabel-variabel tersebut, menegaskan bahwa kelas tiket merupakan faktor utama penentu harga. Analisis ini memberikan wawasan mengenai bagaimana kelas sosial, jenis kelamin, usia, dan variabel lain berperan dalam peluang keselamatan serta harga tiket penumpang Titanic.

Kata kunci: Titanic, analisis penumpang, keselamatan, harga tiket, regresi, visualisasi data, statistik deskriptif

1. Pendahuluan

Titanic adalah sebuah kapal penumpang mewah yang populer dan tenggelam pada tanggal 15 April 1912. Titanic dibangun oleh perusahaan kapal Inggris bernama White Star Line. Pada saat itu, Titanic dianggap sebagai salah satu prestasi teknik yang luar biasa karena merupakan salah satu kapal penumpang terbesar dan termewah pada masanya. Titanic juga dipromosikan sebagai kapal yang “tidak bisa tenggelam”. Banyak orang yang menunggu peluncuran dan pelayaran perdananya dengan antusias”. [1]

Pada tanggal 10 April 1912, Titanic memulai perjalanan perdananya dari Southampton. Kemudian, Titanic sampai di Cherbourg pada hari yang sama dan Queenstown pada keesokan harinya. Titanic dijadwalkan untuk sampai di New York pada 17 April 1912, tetapi kapal tersebut tidak pernah mencapai New York. Titanic merupakan salah satu kejadian paling tragis. Hal ini dikarenakan Titanic telah dipromosikan sebagai kapal yang tidak bisa tenggelam, namun justru tenggelam pada pelayaran perdananya. [2]

Pada tanggal 14 April 1912, bencana Titanic terjadi. Pada saat itu, Titanic menabrak gunung es di Samudra Atlantik Utara sekitar pukul 11:40 malam. Tabrakan tersebut menyebabkan kerusakan pada lambung kapal dan membuka beberapa kompartemen sehingga air masuk ke dalam kapal. Meskipun Titanic dirancang dengan sistem kompartemen yang dapat bertahan jika tergenang air, tabrakan ini melampaui kapasitas yang dapat ditahan kapal.

Pada tanggal 15 April 1912 pukul 2:20 pagi, Titanic tenggelam di Samudra Atlantik Utara. Kurangnya jumlah sekoci penyelamat untuk semua penumpang dan kru menjadi factor yang memperparah situasi. Meskipun usaha penyelamatan dilakukan dan beberapa sekoci penyelamat berhasil diluncurkan, banyak orang terpaksa tinggal di kapal yang tenggelam atau terjatuh ke dalam air yang dingin. [3]

Titanic tetap menjadi topik yang hangat dan menarik minat publik dari dulu sampai sekarang. Salah satu faktor yang mempengaruhi popularitasnya adalah film yang terkenal dengan judul “Titanic” yang dirilis pada tahun 1997. Akibatnya, Titanic terus menjadi objek studi, penelitian, dan perbincangan oleh berbagai kalangan. Dalam berbagai penelitian, para peneliti sering menggunakan data penumpang Titanic sebagai sumber analisis. Salah satu hasil dari penelitian terhadap tenggelamnya Titanic adalah dataset sampel penumpang Titanic. [3]

Dalam dataset Titanic terdapat 12 variabel , yaitu PassengerId, Survived, Pclass, Name, Sex, Age, SibSp, Parch, Ticket, Fare, Cabin, dan Embarked. Seluruh variabel tersebut berisi informasi penting mengenai identitas dan karakteristik penumpang, mulai dari data demografis, kondisi sosial-ekonomi, hingga status keselamatan mereka.

Hasil penelitian sebelumnya menunjukkan bahwa mayoritas penumpang berusia dua puluhan, dengan konsentrasi tertinggi pada kelompok usia tersebut. Selain itu, lebih banyak penumpang yang tidak selamat, terutama laki-laki. Kelas tiket juga berpengaruh terhadap tingkat kelangsungan hidup, dengan penumpang kelas satu memiliki peluang selamat lebih tinggi dibanding kelas dua dan tiga.[1] [4]

Berdasarkan hasil penelitian tersebut, analisis ini bertujuan untuk menganalisis pola dan hubungan dalam dataset Titanic secara lebih menyeluruh. Analisis dilakukan menggunakan statistik deskriptif, visualisasi data, analisis korelasi, dan regresi berganda. Dengan demikian, analisis ini diharapkan memberikan wawasan mengenai bagaimana kelas sosial, jenis kelamin, usia, dan variabel lainnya berperan dalam menentukan peluang keselamatan penumpang, serta faktor-faktor yang memengaruhi harga tiket (Fare).

2. Metode Analisis

Analisis ini berbasis data sekunder karena menggunakan dataset Titanic yang telah tersedia secara publik. Metode yang digunakan bersifat kuantitatif dengan fokus pada statistik deskriptif, visualisasi data, analisis korelasi, dan regresi linear berganda untuk memahami karakteristik penumpang Titanic serta faktor-faktor yang memengaruhi harga tiket (Fare) dan keselamatan penumpang. Tahapan analisis dijelaskan sebagai berikut:

2.1 Persiapan dan Pembersihan Data

  • Dataset Titanic dimuat menggunakan library titanic. Struktur data, kolom, dan sampel data diperiksa.
  • Nilai kosong pada kolom Cabin diubah menjadi NA dan kolom ini dihapus karena terlalu banyak missing value.
  • Missing value pada Age dan Fare diimputasi menggunakan median, sedangkan Embarked diisi dengan kategori terbanyak (‘C’).
  • Variabel kategorik (Pclass, Sex, SibSp, Parch, Embarked, Survived) dikonversi menjadi faktor.

2.2 Statistik Deskriptif

Statistik deskriptif digunakan untuk memberikan gambaran awal mengenai karakteristik data.

  1. Variabel Numerik: Age dan Fare

    Analisis dilakukan melalui perhitungan:

  • Mean
  • Median
  • Standar deviasi
Tujuannya adalah mengetahui kecenderungan pusat data serta tingkat variasinya.

  1. Variabel Kategorik: Survived, Pclass

    Analisis mencakup:

  • Frekuensi
  • Persentase
Sehingga dapat diketahui distribusi penumpang berdasarkan status keselamatan, jenis kelamin, dan kelas tiket.

2.3 Visualisasi Data

Visualisasi digunakan untuk melihat pola, distribusi, dan hubungan antar variabel. Grafik yang digunakan meliputi:

  • Bar Chart

  1. Distribusi Survived: Menunjukkan jumlah penumpang yang selamat dan meninggal.
  2. Survived berdasarkan Sex: Menampilkan perbandingan keselamatan antara laki-laki dan perempuan.
  3. Survived berdasarkan Pclass: Memperlihatkan kelas tiket mana yang memiliki tingkat keselamatan lebih tinggi.

  • Histogram: untuk melihat distribusi variabel numerik seperti Age dan Fare

  • Boxplot: untuk membandingkan distribusi Fare berdasarkan kategori, misalnya Pclass dan Sex

  • Scatter plot: untuk menunjukkan hubungan antar variabel numerik, misalnya Age vs Fare

2.4 Analisis Korelasi

Analisis korelasi dilakukan untuk mengukur kekuatan dan arah hubungan linear antar variabel numerik menggunakan koefisien korelasi Pearson. Variabel yang dianalisis:

  • Age
  • Fare
  • SibSp
  • Parch

2.5 Analisis Regresi Linier Berganda

Regresi linear berganda digunakan untuk menganalisis pengaruh beberapa variabel independen terhadap variabel dependen, yaitu Fare.

  • Variabel dependen: Fare
  • Variabel independen: Age, Sex, dan Pclass

  • Tujuan analisis regresi adalah untuk mengidentifikasi variabel yang berpengaruh signifikan terhadap harga tiket (Fare), mengukur besarnya pengaruh masing-masing variabel.

3. Hasil dan Pembahasan

1. Mempersiapkan Data

# Panggil Library
library(titanic)
# Memuat dataset Titanic
data <- titanic_train
# Melihat 6 baris pertama dataset Titanic
lihat_data1 <- head(data)
library(knitr)
library(kableExtra)
## Warning: package 'kableExtra' was built under R version 4.4.3
kable(lihat_data1, 
      caption = "6 Baris Pertama Dataset Titanic", 
      format = "html") %>%
  kable_styling(bootstrap_options = c("striped", "hover"), 
                full_width = FALSE, 
                position = "center")
6 Baris Pertama Dataset Titanic
PassengerId Survived Pclass Name Sex Age SibSp Parch Ticket Fare Cabin Embarked
1 0 3 Braund, Mr. Owen Harris male 22 1 0 A/5 21171 7.2500 S
2 1 1 Cumings, Mrs. John Bradley (Florence Briggs Thayer) female 38 1 0 PC 17599 71.2833 C85 C
3 1 3 Heikkinen, Miss. Laina female 26 0 0 STON/O2. 3101282 7.9250 S
4 1 1 Futrelle, Mrs. Jacques Heath (Lily May Peel) female 35 1 0 113803 53.1000 C123 S
5 0 3 Allen, Mr. William Henry male 35 0 0 373450 8.0500 S
6 0 3 Moran, Mr. James male NA 0 0 330877 8.4583 Q
# Melihat 6 baris terakhir dataset Titanic
lihat_data2 <- tail(data)
kable(lihat_data2, 
      caption = "6 Baris Terakhir Dataset Titanic", 
      format = "html") %>%
  kable_styling(bootstrap_options = c("striped", "hover"), 
                full_width = FALSE, 
                position = "center")
6 Baris Terakhir Dataset Titanic
PassengerId Survived Pclass Name Sex Age SibSp Parch Ticket Fare Cabin Embarked
886 886 0 3 Rice, Mrs. William (Margaret Norton) female 39 0 5 382652 29.125 Q
887 887 0 2 Montvila, Rev. Juozas male 27 0 0 211536 13.000 S
888 888 1 1 Graham, Miss. Margaret Edith female 19 0 0 112053 30.000 B42 S
889 889 0 3 Johnston, Miss. Catherine Helen “Carrie” female NA 1 2 W./C. 6607 23.450 S
890 890 1 1 Behr, Mr. Karl Howell male 26 0 0 111369 30.000 C148 C
891 891 0 3 Dooley, Mr. Patrick male 32 0 0 370376 7.750 Q
# Melihat nama kolom
nama_kolom <- data.frame(matrix("", nrow = 1, ncol = length(colnames(data))))
colnames(nama_kolom) <- colnames(data)

# Tampilkan tabel 
kable(nama_kolom, 
      caption = "Nama Kolom Dataset Titanic", 
      format = "html") %>%
  kable_styling(bootstrap_options = c("striped", "hover"), 
                full_width = TRUE,
                position = "center")
Nama Kolom Dataset Titanic
PassengerId Survived Pclass Name Sex Age SibSp Parch Ticket Fare Cabin Embarked
# Menampilkan dimensi dataset (baris x kolom)
dim(data)
## [1] 891  12
# Menampilkan tipe struktur keseluruhan dataset
str(data)
## 'data.frame':    891 obs. of  12 variables:
##  $ PassengerId: int  1 2 3 4 5 6 7 8 9 10 ...
##  $ Survived   : int  0 1 1 1 0 0 0 0 1 1 ...
##  $ Pclass     : int  3 1 3 1 3 3 1 3 3 2 ...
##  $ Name       : chr  "Braund, Mr. Owen Harris" "Cumings, Mrs. John Bradley (Florence Briggs Thayer)" "Heikkinen, Miss. Laina" "Futrelle, Mrs. Jacques Heath (Lily May Peel)" ...
##  $ Sex        : chr  "male" "female" "female" "female" ...
##  $ Age        : num  22 38 26 35 35 NA 54 2 27 14 ...
##  $ SibSp      : int  1 1 0 1 0 0 0 3 0 1 ...
##  $ Parch      : int  0 0 0 0 0 0 0 1 2 0 ...
##  $ Ticket     : chr  "A/5 21171" "PC 17599" "STON/O2. 3101282" "113803" ...
##  $ Fare       : num  7.25 71.28 7.92 53.1 8.05 ...
##  $ Cabin      : chr  "" "C85" "" "C123" ...
##  $ Embarked   : chr  "S" "C" "S" "S" ...

Dataset Titanic mencakup informasi lengkap tentang penumpang, seperti:

  • PassengerID : tipe data Integer (ID unik penumpang),
  • Survived : Tipe data Integer, data penumpang (Survived = 1) atau tidak (0)
  • Pclass : Tipe data Integer, data kelas penumpang
  • Name : Tipe data Character, data nama penumpang
  • Sex : Tipe data Character, data jenis kelamin penumpang
  • Age : Tipe data Numeric, data umur penumpang
  • SibSp : Tipe data Integer, data jumlah saudara kandung (Siblings) atau pasangan (spouses)
  • Parch : Tipe data Integer, data jumlah orang tua (parents) atau anak (children)
  • Ticket : Tipe data Character, data identitas ticket penumpang
  • Fare : Tipe data Numeric, data kekayaan atau status sosial penumpang
  • Cabin : Tipe data Character, data identitas cabin
  • Embarked : Tipe data Character, data embarkasi

2. Data Cleansing

Pada kolom Cabin terdapat nilai kosong ““, agar dapat mengetahui jumlah Missing Value (NA) pada data maka dapat dilakukan imputasi dengan mengisikan nilai NA pada data.

# Mengubah nilai kosong "" pada Cabin menjadi NA
data$Cabin[data$Cabin == ""] <- NA

# Mengetahui jumlah missing value tiap kolom
colSums(is.na(data))
## PassengerId    Survived      Pclass        Name         Sex         Age 
##           0           0           0           0           0         177 
##       SibSp       Parch      Ticket        Fare       Cabin    Embarked 
##           0           0           0           0         687           0
# Menghapus kolom Cabin (karena terlalu banyak missing value)
data <- subset(data, select = -c(Cabin))

Dari hasil diatas diketahui bahwa, bahwa kolom Age terdapat banyak nilai NA ada 177, maka akan diimputasi menggunakan median karena median lebih tahan terhadap nilai ekstrem (outlier) dibandingkan mean. Dengan demikian, nilai imputasi menjadi lebih stabil dan tidak bias, sehingga distribusi usia tetap mencerminkan kondisi mayoritas penumpang dan Cabin sebesar 687 yang akan dihilangkan, karena informasi yang tersisa sudah tidak cukup kuat untuk dijadikan dasar analisis.

3. Imputasi Missing Value (Age, Fare, Embarked)

# Menghitung median Age
median(data$Age, na.rm = TRUE)
## [1] 28
# Menghitung median Fare
median(data$Fare, na.rm = TRUE)
## [1] 14.4542
# Mengisi missing Age dengan median
data$Age[is.na(data$Age)] <- 28

# Mengisi missing Fare dengan median
data$Fare[is.na(data$Fare)] <- 14.454

# Mengubah Embarked kosong menjadi 'C'
data$Embarked[data$Embarked == ""] <- "C"

4. Cek Struktur Setelah Pembersihan

str(data)
## 'data.frame':    891 obs. of  11 variables:
##  $ PassengerId: int  1 2 3 4 5 6 7 8 9 10 ...
##  $ Survived   : int  0 1 1 1 0 0 0 0 1 1 ...
##  $ Pclass     : int  3 1 3 1 3 3 1 3 3 2 ...
##  $ Name       : chr  "Braund, Mr. Owen Harris" "Cumings, Mrs. John Bradley (Florence Briggs Thayer)" "Heikkinen, Miss. Laina" "Futrelle, Mrs. Jacques Heath (Lily May Peel)" ...
##  $ Sex        : chr  "male" "female" "female" "female" ...
##  $ Age        : num  22 38 26 35 35 28 54 2 27 14 ...
##  $ SibSp      : int  1 1 0 1 0 0 0 3 0 1 ...
##  $ Parch      : int  0 0 0 0 0 0 0 1 2 0 ...
##  $ Ticket     : chr  "A/5 21171" "PC 17599" "STON/O2. 3101282" "113803" ...
##  $ Fare       : num  7.25 71.28 7.92 53.1 8.05 ...
##  $ Embarked   : chr  "S" "C" "S" "S" ...

5. Konversi Variabel Kategorik Menjadi Faktor

# Konversi kolom kategorik menjadi faktor
data[, c("Pclass","Sex","SibSp","Parch","Embarked","Survived")] <- lapply(
  data[, c("Pclass","Sex","SibSp","Parch","Embarked","Survived")], as.factor)

Kolom Pclass, Sex, SibSp, Parch, Embarked, dan Survived diubah jadi faktor karena semuanya adalah data kategori, bukan angka yang perlu dihitung-hitung. Dengan dijadikan faktor, R jadi paham bahwa nilai-nilai itu adalah kelompok, bukan angka yang bisa dijumlah atau dirata-ratakan.

# Cek ulang struktur dataset
str(data)
## 'data.frame':    891 obs. of  11 variables:
##  $ PassengerId: int  1 2 3 4 5 6 7 8 9 10 ...
##  $ Survived   : Factor w/ 2 levels "0","1": 1 2 2 2 1 1 1 1 2 2 ...
##  $ Pclass     : Factor w/ 3 levels "1","2","3": 3 1 3 1 3 3 1 3 3 2 ...
##  $ Name       : chr  "Braund, Mr. Owen Harris" "Cumings, Mrs. John Bradley (Florence Briggs Thayer)" "Heikkinen, Miss. Laina" "Futrelle, Mrs. Jacques Heath (Lily May Peel)" ...
##  $ Sex        : Factor w/ 2 levels "female","male": 2 1 1 1 2 2 2 2 1 1 ...
##  $ Age        : num  22 38 26 35 35 28 54 2 27 14 ...
##  $ SibSp      : Factor w/ 7 levels "0","1","2","3",..: 2 2 1 2 1 1 1 4 1 2 ...
##  $ Parch      : Factor w/ 7 levels "0","1","2","3",..: 1 1 1 1 1 1 1 2 3 1 ...
##  $ Ticket     : chr  "A/5 21171" "PC 17599" "STON/O2. 3101282" "113803" ...
##  $ Fare       : num  7.25 71.28 7.92 53.1 8.05 ...
##  $ Embarked   : Factor w/ 3 levels "C","Q","S": 3 1 3 3 3 2 3 3 3 1 ...

6. Ringkasan Statistik

# Menampilkan ringkasan statistik dataset yang sudah dibersihkan
summary(data)
##   PassengerId    Survived Pclass      Name               Sex     
##  Min.   :  1.0   0:549    1:216   Length:891         female:314  
##  1st Qu.:223.5   1:342    2:184   Class :character   male  :577  
##  Median :446.0            3:491   Mode  :character               
##  Mean   :446.0                                                   
##  3rd Qu.:668.5                                                   
##  Max.   :891.0                                                   
##                                                                  
##       Age        SibSp   Parch      Ticket               Fare        Embarked
##  Min.   : 0.42   0:608   0:678   Length:891         Min.   :  0.00   C:170   
##  1st Qu.:22.00   1:209   1:118   Class :character   1st Qu.:  7.91   Q: 77   
##  Median :28.00   2: 28   2: 80   Mode  :character   Median : 14.45   S:644   
##  Mean   :29.36   3: 16   3:  5                      Mean   : 32.20           
##  3rd Qu.:35.00   4: 18   4:  4                      3rd Qu.: 31.00           
##  Max.   :80.00   5:  5   5:  5                      Max.   :512.33           
##                  8:  7   6:  1

3.1 Statistik Deskriptif

Variabel Numerik

Hasil

# -----------------------------
# 1. Hitung Statistik Deskriptif
# -----------------------------

# Menghitung Statistik Age
mean_age <- mean(data$Age)
median_age <- median(data$Age)
sd_age     <- sd(data$Age)
# Menghitung Statistik Fare
mean_fare   <- mean(data$Fare)
median_fare <- median(data$Fare)
sd_fare <- sd(data$Fare)
# Menampilkan Output

library(kableExtra)
library(knitr)
tabel_statistik <- data.frame(
  Variabel = c(
    "Age", "Age", "Age",
    "Fare", "Fare", "Fare"
  ),
  Statistik = c(
    "Mean", "Median", "Standar Deviasi",
    "Mean", "Median", "Standar Deviasi"
  ),
  Nilai = c(
    mean_age, median_age, sd_age,
    mean_fare, median_fare, sd_fare
  )
)

kable(tabel_statistik,
      caption = "Statistik Deskriptif Variabel Age dan Fare",
      align = "c", 
      booktabs = TRUE) %>%
  kable_styling(full_width = FALSE,
                bootstrap_options = c("striped", "hover", "condensed"),
                position = "center",
                font_size = 14,
                latex_options = "striped") %>%
  row_spec(0, bold = TRUE, background = "#457b9d", color = "white") %>%   
  row_spec(1:nrow(tabel_statistik), 
           background = "#e8f1fa", color = "black",
           extra_css = "border: 1px solid #003049;")
Statistik Deskriptif Variabel Age dan Fare
Variabel Statistik Nilai
Age Mean 29.36158
Age Median 28.00000
Age Standar Deviasi 13.01970
Fare Mean 32.20421
Fare Median 14.45420
Fare Standar Deviasi 49.69343

Pembahasan

  • Age: Rata-rata usia penumpang adalah 29,36 tahun, sedangkan nilai mediannya berada pada 28 tahun. Kedua nilai ini cukup berdekatan, sehingga menggambarkan bahwa sebaran usia penumpang cenderung tidak terlalu condong ke satu sisi atau relatif seimbang. Nilai standar deviasi sebesar 13,02 tahun menunjukkan bahwa variasi usia penumpang cukup luas artinya terdapat rentang umur yang beragam, mulai dari anak-anak hingga penumpang dewasa.

  • Fare: Rata-rata harga tiket adalah 32,20, sedangkan mediannya hanya 14,45. Perbedaan yang cukup jauh ini menunjukkan bahwa distribusi harga tiket miring ke kanan (right-skewed). Artinya, sebagian besar penumpang membayar tiket dengan harga yang relatif rendah, sementara ada sejumlah kecil penumpang yang membayar tiket jauh lebih mahal sehingga menarik nilai rata-rata ke arah angka yang lebih besar.Nilai standar deviasi sebesar 49,69 menggambarkan bahwa variasi harga tiket sangat tinggi, mencerminkan adanya perbedaan kelas dan fasilitas yang cukup besar antarpembeli tiket.

Variabel Kategorik

Hasil

# Hitung frekuensi
freq_survived <- table(data$Survived)

# Hitung persentase
percent_survived <- round(prop.table(freq_survived) * 100, 2)
# Menampilkan Output

tabel_survived <- data.frame(
  Survived   = c("0", "1"),
  Frekuensi  = freq_survived,
  Persentase = percent_survived
)

# Tampilkan
knitr::kable(tabel_survived, caption = "Distribusi Variabel Survived")
Distribusi Variabel Survived
Survived Frekuensi Persentase
0 549 61.62
1 342 38.38
# Menghitung frekuensi kelas penumpang
freq_pclass <-table(data$Pclass)

# Menghitung persentase tiap kelas
percent_pclass <- prop.table(table(data$Pclass)) * 100
freq_pclass <- data.frame(
  Pclass = names(table(data$Pclass)),
  Frekuensi = as.vector(table(data$Pclass)),
  Persentase = paste0(round(prop.table(table(data$Pclass)) * 100, 2), "%")
)

knitr::kable(freq_pclass, caption = "Frekuensi dan Persentase Pclass")
Frekuensi dan Persentase Pclass
Pclass Frekuensi Persentase
1 216 24.24%
2 184 20.65%
3 491 55.11%

Pembahasan

Survived

Berdasarkan hasil analisis terhadap variabel Survived, diketahui bahwa kategori “0” sebagai penumpang yang tidak selamat, sedangkan kategori “1” sebagai penumpang yang selamat dari peristiwa tenggelamnya kapal Titanic. Dari total data, terdapat 549 penumpang (61,62%) yang termasuk kategori 0 (tidak selamat), sementara 342 penumpang (38,38%) termasuk kategori 1 (selamat). Hal ini menunjukkan bahwa sebagian besar penumpang Titanic tidak berhasil selamat, karena proporsi korban meninggal jauh lebih besar dibandingkan yang selamat.

PClass

Variabel Pclass menunjukkan kelas tiket penumpang Titanic, yaitu kelas 1, 2, dan 3. Berdasarkan hasil analisis, jumlah penumpang di masing-masing kelas adalah:

  • Kelas 1: 216 penumpang (24,24%)
  • Kelas 2: 184 penumpang (20,65%)
  • Kelas 3: 491 penumpang (55,11%)
Hasil ini menunjukkan bahwa kelas 3 merupakan kelompok penumpang dengan jumlah terbesar, sedangkan kelas 1 memiliki jumlah penumpang paling sedikit. Perbedaan ini menggambarkan bahwa sebagian besar penumpang Titanic berasal dari kelas ekonomi dibandingkan kelas atas.

3.2 Visualisasi Data

Hasil

Bar Chart

Distribusi Survived: Menunjukkan jumlah penumpang yang selamat dan meninggal. Survived berdasarkan Sex: Menampilkan perbandingan keselamatan antara laki-laki dan perempuan. Survived berdasarkan Pclass: Memperlihatkan kelas tiket mana yang memiliki tingkat keselamatan lebih tinggi.

library(ggplot2)

Distribusi Survived

# Bar Chart Survived
# Grafik ini menampilkan jumlah penumpang yang selamat (1) dan tidak selamat (0)



p1 <- ggplot(data, aes(x = Survived, fill = Survived)) +
  geom_bar() +
  labs(title = "Distribusi Penumpang Berdasarkan Status Keselamatan",
       x = "Survived (0 = Tidak Selamat, 1 = Selamat)",
       y = "Jumlah Penumpang") +
  scale_fill_manual(values = c("0" = "#E63946",   
                               "1" = "#457B9D"))

Survived berdasarkan Sex

# Bar Chart Survived berdasarkan jenis kelamin
# Grafik ini menunjukkan perbedaan jumlah yang selamat antara laki-laki dan perempuan

p2 <- ggplot(data, aes(x = Sex, fill = Survived)) +
  geom_bar(position = "dodge") +
  labs(title = "Status Keselamatan Berdasarkan Jenis Kelamin",
       x = "Jenis Kelamin",
       y = "Jumlah Penumpang",
       fill = "Survived") +
  scale_fill_manual(values = c("0" = "#2a9d8f",    
                               "1" = "#e9c46a")) 

Survived berdasarkan Pclass

# Bar Chart Survived berdasarkan kelas tiket
# Grafik ini menampilkan kelas mana yang memiliki jumlah penumpang selamat lebih banyak

p3 <- ggplot(data, aes(x = Pclass, fill = Survived)) +
  geom_bar(position = "dodge") +
  labs(title = "Status Keselamatan Berdasarkan Kelas Tiket",
       x = "Kelas Tiket",
       y = "Jumlah Penumpang",
       fill = "Survived") +
  scale_fill_manual(values = c("0" = "#9b5de5",    
                               "1" = "#f15bb5"))  
p1

p2

p3

Histogram Untuk menggambarkan pola penyebaran variabel Age dan Fare

Histogram Age

# Histogram Age
# Grafik ini digunakan untuk melihat bagaimana data usia penumpang tersebar,
# apakah lebih banyak di usia muda, dewasa, atau tua.

library(ggplot2)

hist1 <- ggplot(data, aes(x = Age)) +
  geom_histogram(binwidth = 5, fill = "#4cc9f0", color = "black") +
  labs(title = "Histogram Usia (Age) Penumpang Titanic",
       x = "Usia Penumpang",
       y = "Frekuensi")

Histogram Fare

# Histogram Fare
# Tujuan histogram ini adalah untuk melihat pola sebaran harga tiket,
# apakah data condong ke harga murah atau ada variasi harga yang sangat besar.

hist2 <- ggplot(data, aes(x = Fare)) +
  geom_histogram(binwidth = 10, fill = "#f72585", color = "black") +
  labs(title = "Histogram Harga Tiket (Fare) Penumpang Titanic",
       x = "Harga Tiket",
       y = "Frekuensi")
# Menampilkan Output

print(hist1)

print(hist2)

BoxPlot Untuk membandingkan distribusi Fare berdasarkan kategori, misalnya Pclass dan Sex

BoxPlot PClass

# Boxplot Fare berdasarkan kelas tiket
boxplot_pclass <- ggplot(data, aes(x = Pclass, y = Fare, fill = Pclass)) +
  geom_boxplot() +
  labs(title = "Boxplot Fare Berdasarkan Pclass",
       x = "Kelas Tiket (Pclass)",
       y = "Harga Tiket (Fare)") +
  scale_fill_manual(values = c("1" = "#ffafcc",
                               "2" = "#bde0fe",
                               "3" = "#cdb4db"))

BoxPlot Sex

# Boxplot Fare berdasarkan jenis kelamin
boxplot_sex <- ggplot(data, aes(x = Sex, y = Fare, fill = Sex)) +
  geom_boxplot() +
  labs(title = "Boxplot Fare Berdasarkan Jenis Kelamin",
       x = "Jenis Kelamin",
       y = "Harga Tiket (Fare)") +
  scale_fill_manual(values = c("female" = "#ffcad4",
                               "male"   = "#90dbf4"))
# Menampilkan Output
print(boxplot_pclass)

print(boxplot_sex)

Scatter Plot Untuk menunjukkan hubungan antar variabel numerik, misalnya Age vs Fare

# Scatter Plot Age vs Fare
# Grafik ini digunakan untuk melihat apakah ada hubungan
# antara usia penumpang (Age) dan harga tiket (Fare).



library(ggplot2)

ggplot(data, aes(x = Age, y = Fare)) +
  geom_point(alpha = 0.6, color = "#457b9d") +        # titik scatter
  geom_smooth(method = "lm", se = TRUE, color = "#e63946") +  # garis regresi
  labs(title = "Scatter Plot Age vs Fare dengan Garis Regresi",
       x = "Usia Penumpang (Age)",
       y = "Harga Tiket (Fare)") +
  theme_minimal()
## `geom_smooth()` using formula = 'y ~ x'

Pembahasan

  • Bar Chart:
  1. Distribusi Penumpang Berdasarkan Status Keselamatan (Survived)

    Pada Grafik ini menunjukkan jumlah penumpang yang selamat (1) dan tidak selamat (0), terlihat pada grafik bahwa jumlah penumpang yang tidak selamat jauh lebih banyak dibandingkan yang selamat. Tingginya kolom pada kategori Survived = 0 menggambarkan bahwa mayoritas penumpang Titanic tidak selamat atau meninggal dalam peristiwa tenggelamnya kapal. Sementara itu, kelompok penumpang yang survived = 1 jumlahnya relatif lebih sedikit. Hasil ini sejalan dengan penjelasan pada pendahuluan bahwa kapasitas sekoci yang terbatas menyebabkan tingkat keselamatan penumpang rendah secara keseluruhan.

  2. Status Keselamatan Berdasarkan Jenis Kelamin

    Pada grafik terlihat pola yang sangat jelas bahwa: Penumpang perempuan, jumlah yang selamat jauh lebih besar dibandingkan yang tidak selamat. Sebaliknya, pada penumpang laki-laki, jumlah yang tidak selamat sangat banyak dibandingkan dengan yang selamat.

  3. Status Keselamatan Berdasarkan Kelas Tiket

    Dari grafik terlihat bahwa kelas sosial berpengaruh kuat terhadap peluang keselamatan: Penumpang kelas 1 memiliki jumlah yang selamat cukup tinggi dan hampir setara dengan yang tidak selamat. Hal ini menunjukkan bahwa penumpang kelas atas lebih mudah mengakses sekoci. Penumpang kelas 2 memiliki tingkat keselamatan yang seimbang, namun jumlah yang tidak selamat masih lebih besar. Penumpang kelas 3 merupakan kelompok penumpang dengan jumlah tidak selamat paling banyak. Grafik kolom 0 pada kelas 3 jauh lebih tinggi daripada kelas lain, menggambarkan mereka paling terdampak oleh keterbatasan akses menuju sekoci. Kondisi ini mencerminkan ketimpangan akses berdasarkan kelas sosial, di mana penumpang kelas atas lebih diuntungkan dalam proses penyelamatan.

  • Histogram:
  1. Histogram Usia (Age) Penumpang Titanic

    Distribusi usia penumpang terlihat terkonsentrasi pada rentang 20–40 tahun, dengan puncak frekuensi di usia sekitar 25–30 tahun, sehingga menunjukkan bahwa sebagian besar penumpang merupakan dewasa muda. Kelompok usia anak-anak (0–10 tahun) dan lansia di atas 60 tahun ada, tetapi jumlahnya jauh lebih sedikit. Secara umum, pola histogram bersifat right-skewed, karena masih terdapat sebagian kecil penumpang berusia lanjut hingga di atas 70 tahun. Grafik ini menggambarkan bahwa mayoritas penumpang Titanic berada pada usia produktif.

  2. Histogram Harga Tiket (Fare) Penumpang Titanic

    Histogram menunjukkan bahwa mayoritas penumpang Titanic membeli tiket dengan harga rendah, terutama di kisaran $0–$50, menunjukkan banyak penumpang kelas ekonomi. Distribusi harga tiket miring ke kanan (positively skewed) karena sebagian besar data terkonsentrasi pada harga rendah, tetapi terdapat beberapa tiket sangat mahal (outlier) yang bisa melebihi $500, umumnya tiket kelas satu. Variasi harga ini mencerminkan perbedaan kelas penumpang, dari kelas ekonomi hingga premium, dan menunjukkan ketimpangan harga tiket antara penumpang kelas rendah dan tinggi.

  • BoxPlot
  1. BoxPlot Fare Berdasarkan PClass

    Boxplot harga tiket (Fare) menunjukkan bahwa kelas penumpang (Pclass) berpengaruh kuat terhadap harga tiket. Kelas 1 memiliki median tertinggi ($60–$70) dengan variasi paling besar dan outlier mencapai lebih dari $500, sedangkan Kelas 2 median sekitar $20 dengan variasi lebih kecil, dan Kelas 3 median terendah (<$10) dengan sebaran seragam. Data ini menegaskan bahwa semakin tinggi kelasnya, semakin tinggi harga tiket dan variasinya, dengan kesenjangan terbesar antara Kelas 1 dan Kelas 2/3.

  2. BoxPlot Fare Berdasarkan Sex (Jenis Kelamin)

    Boxplot harga tiket (Fare) berdasarkan jenis kelamin menunjukkan bahwa median perempuan ($25–$30) sedikit lebih tinggi dibanding laki-laki ($10–$15), dengan variasi harga serupa pada kedua kelompok. Kedua kelompok memiliki outlier hingga harga tiket tertinggi ($512), menunjukkan penumpang terkaya tersebar di antara perempuan dan laki-laki. Hal ini menegaskan bahwa jenis kelamin bukan faktor utama penentu harga tiket, dan perbedaan median kemungkinan terkait distribusi kelas tiket (Pclass), di mana perempuan lebih banyak berada di Kelas 1 dan 2.

  • Scatter Plot

    Scatter plot usia (Age) terhadap harga tiket (Fare) menunjukkan hubungan linier positif yang sangat lemah, di mana penumpang yang lebih tua cenderung membayar sedikit lebih tinggi, tetapi titik-titik data sangat tersebar dan banyak outlier pada harga tinggi menunjukkan bahwa usia bukan faktor utama penentu harga tiket, dan sebagian besar variasi harga tiket tidak dapat dijelaskan oleh usia.

3.3 Analisis Korelasi

Hasil

# Buat salinan dataset untuk korelasi (agar tidak bentrok dengan fungsi data())
data_corr <- data  

# Pilih variabel numerik dan konversi faktor menjadi numeric
numeric_data <- data.frame(
  Age = data_corr$Age,
  Fare = data_corr$Fare,
  SibSp = as.numeric(as.character(data_corr$SibSp)),
  Parch = as.numeric(as.character(data_corr$Parch))
)

# Menghitung korelasi Pearson
cor_matrix <- cor(numeric_data, method = "pearson")

# Menampilkan hasil
print(cor_matrix)
##               Age       Fare      SibSp      Parch
## Age    1.00000000 0.09668842 -0.2332963 -0.1724820
## Fare   0.09668842 1.00000000  0.1596510  0.2162249
## SibSp -0.23329633 0.15965104  1.0000000  0.4148377
## Parch -0.17248195 0.21622494  0.4148377  1.0000000

Pembahasan

  1. Umur (Age)

    Korelasi Age dengan harga tiket (Fare) sangat lemah, yaitu 0.097, yang menunjukkan bahwa umur penumpang hampir tidak berpengaruh terhadap harga tiket. Hubungan negatif dengan jumlah saudara/pasangan (SibSp = -0.233) dan orang tua/anak (Parch = -0.172) menunjukkan bahwa penumpang yang lebih tua cenderung bepergian sendiri atau membawa anggota keluarga yang lebih sedikit.

  2. Harga Tiket (Fare)

    Korelasi Fare dengan SibSp (0.160) dan Parch (0.216) lemah positif. Artinya, penumpang yang membawa keluarga cenderung membeli tiket dengan harga sedikit lebih tinggi, mungkin karena membeli beberapa tiket sekaligus atau memilih kelas kabin yang lebih mahal.

  3. Jumlah Saudara/Pasangan (SibSp) dan Orang Tua/Anak (Parch)

    Korelasi antara SibSp dan Parch cukup sedang, yaitu 0.415. Hal ini biasanya penumpang yang bepergian dengan saudara atau pasangan biasanya juga membawa orang tua atau anak.

Kesimpulan: Secara umum, sebagian besar variabel numerik memiliki korelasi yang lemah. Hanya hubungan antara jumlah saudara/pasangan dengan orang tua/anak yang cukup terlihat. Hanya hubungan antara jumlah saudara/pasangan dengan orang tua/anak yang terlihat cukup kuat.

3.4 Analisis Regresi Linier Berganda

Hasil

# Konversi Pclass jadi numeric
data$Pclass_num <- as.numeric(as.character(data$Pclass))

# Buat variabel numerik untuk Sex
data$Sex_num <- ifelse(data$Sex == "male", 1, 0)

# Model regresi linear berganda
model_regresi <- lm(Fare ~ Age + Sex_num + Pclass_num, data = data)

# Ringkasan model
summary(model_regresi)
## 
## Call:
## lm(formula = Fare ~ Age + Sex_num + Pclass_num, data = data)
## 
## Residuals:
##    Min     1Q Median     3Q    Max 
## -73.00 -18.84  -0.47   5.59 442.00 
## 
## Coefficients:
##             Estimate Std. Error t value Pr(>|t|)    
## (Intercept) 126.4475     6.2186  20.334  < 2e-16 ***
## Age          -0.3341     0.1133  -2.948 0.003287 ** 
## Sex_num     -10.4562     2.9289  -3.570 0.000376 ***
## Pclass_num  -33.6403     1.7746 -18.956  < 2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 41.02 on 887 degrees of freedom
## Multiple R-squared:  0.3209, Adjusted R-squared:  0.3186 
## F-statistic: 139.7 on 3 and 887 DF,  p-value: < 2.2e-16

Pembahasan

Berdasarkan hasil regresi linear berganda, diperoleh variabel dependen Fare (harga tiket) dan variabel independen Age (usia penumpang), Sex_num (jenis kelamin, 1 untuk laki-laki dan 0 untuk perempuan), serta Pclass_num (kelas tiket, semakin besar angkanya semakin rendah kelasnya).

Interpretasi tiap koefisien:

  • Intercept (126,45) menunjukkan perkiraan harga tiket jika usia, jenis kelamin, dan kelas tiket bernilai 0.
  • Age (-0,33) menandakan bahwa setiap tambahan 1 tahun usia penumpang menurunkan harga tiket rata-rata sebesar 0,33 satuan, dengan asumsi variabel lain tetap.
  • Sex_num (-10,46) berarti penumpang laki-laki membayar rata-rata 10,46 satuan lebih murah dibanding perempuan, dengan variabel lain konstan.
  • Pclass_num (-33,64) menunjukkan bahwa setiap kenaikan satu tingkat kelas (misal dari kelas 1 ke 2) menurunkan harga tiket rata-rata 33,64 satuan, menunjukkan pengaruh kelas tiket yang sangat dominan terhadap harga.

Pada output regresi linier berganda Multiple R-squared = 0,3209, yang berarti sekitar 32,09% variasi harga tiket dapat dijelaskan oleh ketiga variabel ini. Adjusted R-squared = 0,3186 memperbaiki estimasi untuk jumlah prediktor dan menunjukkan bahwa 31,86% variasi harga tiket dapat dijelaskan secara nyata. Rata-rata prediksi harga tiket menyimpang sekitar 41 satuan dari harga sebenarnya (Residual standard error = 41,02), deviasi ini relatif besar karena adanya tiket ekstrem (outlier) yang sangat mahal atau sangat murah. Sementara itu, F-statistic = 139,7 dengan p-value < 2,2×10^-16 menunjukkan bahwa regresi secara keseluruhan signifikan secara statistik, artinya variabel Age, Sex_num, dan Pclass_num secara simultan berpengaruh terhadap harga tiket.

Secara keseluruhan, hasil ini menegaskan bahwa kelas tiket adalah faktor utama penentu harga, sementara usia dan jenis kelamin memberikan pengaruh tambahan yang lebih kecil. Masih terdapat faktor lain di luar model yang memengaruhi harga tiket penumpang Titanic.

4. Kesimpulan

Analisis data penumpang Titanic berhasil menggambarkan karakteristik penumpang serta pola keselamatan dan harga tiket. Hasil statistik deskriptif dan visualisasi menunjukkan bahwa mayoritas penumpang berada di kelas ekonomi (kelas 3), usia produktif (20–40 tahun), dan bahwa penumpang perempuan memiliki peluang selamat lebih tinggi dibanding laki-laki. Analisis korelasi memperlihatkan hubungan lemah antar variabel numerik, kecuali antara jumlah saudara/pasangan dan orang tua/anak yang cukup kuat. Regresi linear berganda menjelaskan bahwa kelas tiket merupakan faktor utama penentu harga tiket, dengan pengaruh tambahan dari usia dan jenis kelamin.

Hasil regresi linier berganda menunjukkan bahwa signifikan secara statistik (F-statistic = 139,7; p-value < 2,2×10^-16), dengan Multiple R-squared = 0,3209 dan Adjusted R-squared = 0,3186, yang menunjukkan bahwa sekitar 32% variasi harga tiket dapat dijelaskan oleh variabel-variabel tersebut, sedangkan sisanya dipengaruhi oleh faktor lain. Rata-rata deviasi prediksi dari harga aktual sebesar ±41 satuan, relatif besar karena adanya tiket ekstrem (outlier).

Dengan demikian, analisis ini berhasil mencapai tujuan penelitian, yaitu memberikan wawasan mengenai peran kelas sosial, jenis kelamin, usia, dan variabel lain dalam menentukan peluang keselamatan penumpang serta faktor-faktor yang memengaruhi harga tiket Titanic.

Ucapan Terima Kasih

Penulis mengucapkan terima kasih kepada berbagai pihak yang telah menyediakan dataset, materi pembelajaran, serta referensi yang menjadi panduan dalam analisis data Titanic ini. Berbagai sumber tersebut membantu pemahaman dan penerapan teknik analisis data serta visualisasi, sehingga analisis ini dapat dilaksanakan dengan baik dan penulis memperoleh pengalaman serta wawasan yang berharga.

Daftar Pustaka

1.
Fakhri A, Winursito YC. Analisis penumpang kapal titanic menggunakan titanic dataset dengan bantuan pemrograman python. JOURNAL SAINS STUDENT RESEARCH. 2024;2(1):537–42.
2.
Kompas.com. Mengapa titanic bisa tenggelam? Ini kronologi dan kisahnya [Internet]. 2021 [cited 2025 Nov 29]. Available from: https://internasional.kompas.com/read/2021/09/30/112221170/mengapa-titanic-bisa-tenggelam-ini-kronologi-dan-kisahnya?page=all
3.
Lim KJ, Nathanael C, Wijaya FA, Dharma JA, Andrian TK, Soetresno W, et al. Penggunaan bahasa pemrograman python untuk memvisualisasikan data peluang selamat dari kecelakaan titanic. Jurnal Publikasi Teknik Informatika (JUPTI). 2023;2(2):66–79.
4.
Hermawan I, Sulianta F. Eksplorasi data keselamatan penumpang titanic dengan visualisasi diagram interaktif. 2025;
5.
Alansyah B. EDA-titanic dataset [Internet]. Rpubs; 2023 [cited 2025 Nov 29]. Available from: https://rpubs.com/bayualansyah/EDA-Titanic_Dataset
6.
YouTube. Introduction to r markdown | foundations of data analysis with r [Internet]. 2025 [cited 2025 Nov 30]. Available from: https://www.youtube.com/watch?v=vWGGlMHkhyY