1. Mari mulai dengan Titanic

Ini adalah Dataset Titanic yang saya dapatkan dari kaggle. Dataset ini tentang Orang yang Selamat di Kapal Titanic, kita bisa melihat Umur, Jenis Kelamin dan banyak lagi. Kita akan memeriksa rahasia Orang yang Selamat, apakah itu tergantung pada Usia, Jenis Kelamin atau Pclass.

Kita akan menggunakan beberapa library di R, ada ggplot, scales, ggthemes, tidyr, and ggpubr . Contoh install.packages(“ggplot”) dan seterusnya

library(ggplot2)
library(scales)
library(ggthemes)
library(ggpubr)
library(tidyr)

2. Data Pre-Processing

Import The Titanic Dataset

titanic <- read.csv("train.csv")

Dataset Inspection

Get first 10 rows

head(titanic, 10)
##    PassengerId Survived Pclass
## 1            1        0      3
## 2            2        1      1
## 3            3        1      3
## 4            4        1      1
## 5            5        0      3
## 6            6        0      3
## 7            7        0      1
## 8            8        0      3
## 9            9        1      3
## 10          10        1      2
##                                                   Name    Sex Age SibSp Parch
## 1                              Braund, Mr. Owen Harris   male  22     1     0
## 2  Cumings, Mrs. John Bradley (Florence Briggs Thayer) female  38     1     0
## 3                               Heikkinen, Miss. Laina female  26     0     0
## 4         Futrelle, Mrs. Jacques Heath (Lily May Peel) female  35     1     0
## 5                             Allen, Mr. William Henry   male  35     0     0
## 6                                     Moran, Mr. James   male  NA     0     0
## 7                              McCarthy, Mr. Timothy J   male  54     0     0
## 8                       Palsson, Master. Gosta Leonard   male   2     3     1
## 9    Johnson, Mrs. Oscar W (Elisabeth Vilhelmina Berg) female  27     0     2
## 10                 Nasser, Mrs. Nicholas (Adele Achem) female  14     1     0
##              Ticket    Fare Cabin Embarked
## 1         A/5 21171  7.2500              S
## 2          PC 17599 71.2833   C85        C
## 3  STON/O2. 3101282  7.9250              S
## 4            113803 53.1000  C123        S
## 5            373450  8.0500              S
## 6            330877  8.4583              Q
## 7             17463 51.8625   E46        S
## 8            349909 21.0750              S
## 9            347742 11.1333              S
## 10           237736 30.0708              C

Dapatkan 10 baris terakhir

tail(titanic, 10)
##     PassengerId Survived Pclass                                     Name    Sex
## 882         882        0      3                       Markun, Mr. Johann   male
## 883         883        0      3             Dahlberg, Miss. Gerda Ulrika female
## 884         884        0      2            Banfield, Mr. Frederick James   male
## 885         885        0      3                   Sutehall, Mr. Henry Jr   male
## 886         886        0      3     Rice, Mrs. William (Margaret Norton) female
## 887         887        0      2                    Montvila, Rev. Juozas   male
## 888         888        1      1             Graham, Miss. Margaret Edith female
## 889         889        0      3 Johnston, Miss. Catherine Helen "Carrie" female
## 890         890        1      1                    Behr, Mr. Karl Howell   male
## 891         891        0      3                      Dooley, Mr. Patrick   male
##     Age SibSp Parch           Ticket    Fare Cabin Embarked
## 882  33     0     0           349257  7.8958              S
## 883  22     0     0             7552 10.5167              S
## 884  28     0     0 C.A./SOTON 34068 10.5000              S
## 885  25     0     0  SOTON/OQ 392076  7.0500              S
## 886  39     0     5           382652 29.1250              Q
## 887  27     0     0           211536 13.0000              S
## 888  19     0     0           112053 30.0000   B42        S
## 889  NA     1     2       W./C. 6607 23.4500              S
## 890  26     0     0           111369 30.0000  C148        C
## 891  32     0     0           370376  7.7500              Q

Dapatkan total baris / observasi

nrow(titanic)
## [1] 891

Dapatkan total kolom

ncol(titanic)
## [1] 12

Dapatkan semua nama kolom

names(titanic)
##  [1] "PassengerId" "Survived"    "Pclass"      "Name"        "Sex"        
##  [6] "Age"         "SibSp"       "Parch"       "Ticket"      "Fare"       
## [11] "Cabin"       "Embarked"

Dapatkan dimensi kumpulan data

dim(titanic)
## [1] 891  12

Dari pemeriksaan kami dapat mengambil beberapa informasi: Titanic Dataset berisi 891 baris dan 12 kolom Setiap kolom nama : PassengerId, Survived, Pclass, Name, Sex, Age, SibSp, Parch, Ticket, Fare, Cabin, Embarked

Data Cleaning & Coertions Periksa tipe data untuk setiap kolom menggunakan str(struktur)

str(titanic)
## '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" ...

Dapat kita lihat dari hasil di atas, ada beberapa tipe data yang salah, mari kita ubah tipe data ke tipe yang benar (Explicit Coertion)

titanic$Sex <- as.factor(titanic$Sex)
titanic$Pclass <- as.factor(titanic$Pclass)
titanic$Age <-  as.integer(titanic$Age)
titanic$Survived <-  as.factor(titanic$Survived)
str(titanic)
## 'data.frame':    891 obs. of  12 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        : int  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" ...
summary(titanic)
##   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         
##  Min.   : 0.00   Min.   :0.000   Min.   :0.0000   Length:891        
##  1st Qu.:20.00   1st Qu.:0.000   1st Qu.:0.0000   Class :character  
##  Median :28.00   Median :0.000   Median :0.0000   Mode  :character  
##  Mean   :29.68   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                                                        
##       Fare           Cabin             Embarked        
##  Min.   :  0.00   Length:891         Length:891        
##  1st Qu.:  7.91   Class :character   Class :character  
##  Median : 14.45   Mode  :character   Mode  :character  
##  Mean   : 32.20                                        
##  3rd Qu.: 31.00                                        
##  Max.   :512.33                                        
## 

Setiap jenis kolom sekarang sudah benar. Kita bisa melihat rangkuman yang kita dapatkan, banyak informasi yang bisa kita dapatkan (terutama untuk tipe data faktor) karena tipe data yang sekarang sudah benar.

Periksa nilai yang hilang

colSums(is.na(titanic))
## PassengerId    Survived      Pclass        Name         Sex         Age 
##           0           0           0           0           0         177 
##       SibSp       Parch      Ticket        Fare       Cabin    Embarked 
##           0           0           0           0           0           0

Kami memiliki nilai yang hilang di Kolom Usia(Age)

anyNA(titanic)
## [1] TRUE

Berikut adalah 6 sampel nilai yang hilang di Kolom Usia(Age) Berdasarkan Nama(Name)

head(titanic[which(is.na(titanic$Age)),  c("Name", "Age")])
##                             Name Age
## 6               Moran, Mr. James  NA
## 18  Williams, Mr. Charles Eugene  NA
## 20       Masselmani, Mrs. Fatima  NA
## 27       Emir, Mr. Farred Chehab  NA
## 29 O'Dwyer, Miss. Ellen "Nellie"  NA
## 30           Todoroff, Mr. Lalio  NA

Dari hasil di atas, kita bisa melihat nilai yang hilang untuk kolom usia (Age), ada 177 baris. Mari bersihkan nilai yang hilang menggunakan fungsi complete_case() di R

titanic <- titanic[complete.cases(titanic), ]
nrow(titanic)
## [1] 714
anyNA(titanic)
## [1] FALSE

Tidak ada nilai yang hilang dalam dataset kami saat ini. Jika kami hanya menghapus 19% baris dari dataset kami, itu berarti kami masih dapat mengekstrak informasi penting dari dataset kami.

Mari subsetting dataset kita,karena kita tidak menggunakan semua kolom

titanic <- titanic[, !(colnames(titanic) %in% c("Ticket", "Fare", "Cabin", "Embarked"))]
head(titanic, 10)
##    PassengerId Survived Pclass
## 1            1        0      3
## 2            2        1      1
## 3            3        1      3
## 4            4        1      1
## 5            5        0      3
## 7            7        0      1
## 8            8        0      3
## 9            9        1      3
## 10          10        1      2
## 11          11        1      3
##                                                   Name    Sex Age SibSp Parch
## 1                              Braund, Mr. Owen Harris   male  22     1     0
## 2  Cumings, Mrs. John Bradley (Florence Briggs Thayer) female  38     1     0
## 3                               Heikkinen, Miss. Laina female  26     0     0
## 4         Futrelle, Mrs. Jacques Heath (Lily May Peel) female  35     1     0
## 5                             Allen, Mr. William Henry   male  35     0     0
## 7                              McCarthy, Mr. Timothy J   male  54     0     0
## 8                       Palsson, Master. Gosta Leonard   male   2     3     1
## 9    Johnson, Mrs. Oscar W (Elisabeth Vilhelmina Berg) female  27     0     2
## 10                 Nasser, Mrs. Nicholas (Adele Achem) female  14     1     0
## 11                     Sandstrom, Miss. Marguerite Rut female   4     1     1

Kita berhasil menghapus Ticket, Fare, Cabin dan Embarked Column. Karena fokus di Survived Peopel by Age, Sex and Pclass

3. Data Processing and Visualization

Mari kita rangkum data kita dengan fungsi ringkasan di R

summary(titanic)
##   PassengerId    Survived Pclass      Name               Sex     
##  Min.   :  1.0   0:424    1:186   Length:714         female:261  
##  1st Qu.:222.2   1:290    2:173   Class :character   male  :453  
##  Median :445.0            3:355   Mode  :character               
##  Mean   :448.6                                                   
##  3rd Qu.:677.8                                                   
##  Max.   :891.0                                                   
##       Age            SibSp            Parch       
##  Min.   : 0.00   Min.   :0.0000   Min.   :0.0000  
##  1st Qu.:20.00   1st Qu.:0.0000   1st Qu.:0.0000  
##  Median :28.00   Median :0.0000   Median :0.0000  
##  Mean   :29.68   Mean   :0.5126   Mean   :0.4314  
##  3rd Qu.:38.00   3rd Qu.:1.0000   3rd Qu.:1.0000  
##  Max.   :80.00   Max.   :5.0000   Max.   :6.0000

Ringkasan : 1. Ada 424 Kematian dan 290 Orang Hidup. Itu berarti, lebih banyak orang mati daripada selamat

  1. Di kapal Titanic ada beberapa Kelas. Kelayakan kelas sesuai dengan urutannya :Kelas 1 adalah kelas VIP, kelas 2 adalah kelas normal, kelas 3 adalah kelas biasa dan kebanyakan Orang berada di Kelas 3

  2. Ada lebih banyak pria daripada wanita di titanic. Ada 453 Pria dan 261 Wanita

  3. Usia rata-rata penumpang Titanic adalah 29 tahun, sedangkan penumpang dengan usia tertua berusia 80 tahun

Mari kita lihat apakah tingkat kematian dan kehidupan di titanic bergantung pada Usia dan jenis kelamin

Pertama Mari kita periksa orang yang selamat berdasarkan Jenis Kelamin dan Usia

# Calculate the frequency of Death and Live by Age and Sex 
sex_freq <- as.data.frame(table(titanic$Sex, titanic$Survived))
age_freq <- as.data.frame(table(titanic$Age, titanic$Survived))

# Take the highest frequency of Death and Live
sex_freq <- sex_freq[order(sex_freq$Freq, decreasing = T),]
age_freq <- age_freq[order(age_freq$Freq, decreasing = T),]

library(ggplot2)
# Let's Plot the sex_freq data.frame
ggplot(sex_freq, aes(x = reorder(Var1, Freq) , y = Freq)) +
  geom_col(aes(fill = Var2), position = "fill") +
  labs(
    title = "Total of Male and Female",
    subtitle = " that Survived and Not",
    x = "Sex",
    y = "Total Survived"
  ) +
  theme_solarized() +
  theme(
    plot.title = element_text(hjust = 0.5, face = "bold"),
    plot.subtitle = element_text(hjust = 0.5),
    legend.title = element_blank()
  ) +
  scale_fill_brewer(palette = "Set4", labels = c("Death", "Live")) 
## Warning in pal_name(palette, type): Unknown palette Set4

Mari kita lihat apakah tingkat kematian dan kehidupan di titanic bergantung pada Usia dan jenis kelamin

Untuk visualisasi dan pemahaman yang lebih baik, kami akan memecah plot menjadi panel oleh masing-masing wanita dan pria menggunakan plot facet di library ggplot

ggplot(sex_freq, aes(x = reorder(Var1, Freq) , y = Freq)) +
  geom_col(aes(fill = Var2), position = "dodge") +
  facet_wrap(~Var1, scales = "free_y") +
  labs(
    title = "Total Death and Live of Male and Female",
    subtitle = "In Titanic Ship",
    caption = "Source: Titanic dataset-kaggle",
    x = "Sex",
    y = "Total Survived"
  ) +
  theme_solarized() +
  theme(
    plot.title = element_text(hjust = 0.5, face = "bold"),
    plot.subtitle = element_text(hjust = 0.5),
    axis.text.x = element_blank(),
    legend.title = element_blank()
  ) +
  scale_fill_brewer(palette = "Set4", labels = c("Death", "Live"))
## Warning in pal_name(palette, type): Unknown palette Set4

Hasil diatas menyatakan bahwa wanita bertahan hidup lebih lama daripada pria. Hal ini terlihat dari jumlah kematian perempuan yang jauh lebih rendah dibandingkan dengan laki-laki. Ada kemungkinan proses evakuasi kapal titanic lebih mengutamakan perempuan daripada laki-laki. Masuk akal karena wanita lebih rentan daripada pria dalam situasi itu

Berikutnya kita akan memeriksa orang yang selamat berdasarkan Usia

age_death <- head(age_freq[age_freq$Var2 == 0,])
age_death
##    Var1 Var2 Freq
## 29   28    0   20
## 22   21    0   19
## 19   18    0   17
## 26   25    0   17
## 31   30    0   17
## 20   19    0   16
age_live <- head(age_freq[age_freq$Var2 == 1,])
age_live
##     Var1 Var2 Freq
## 96    24    1   15
## 94    22    1   11
## 99    27    1   11
## 107   35    1   11
## 108   36    1   11
## 102   30    1   10
# create function for reusable plotting
plot_fn <- function(data, y_title, fill_color) {
  plot_live <- ggplot(data, aes(x = Var1 , y = Freq)) +
    geom_col(fill = fill_color , position = "dodge") +
    labs(x = "Age",
         y = y_title) +
    theme_solarized() +
    theme(
      plot.title = element_text(hjust = 0.5, face = "bold"),
      plot.subtitle = element_text(hjust = 0.5),
    ) +
    scale_fill_brewer(palette = "Set")
  
}


# assign the plot function to object / variable plot_death and plot_live

plot_death <- plot_fn(age_death, "Total Death", "#e41a1c")
## Warning in pal_name(palette, type): Unknown palette Set
plot_live <- plot_fn(age_live,  "Total Live", "#377eb8")
## Warning in pal_name(palette, type): Unknown palette Set
# unite plot together
figure_one <- ggarrange(plot_death, plot_live)
annotate_figure(
  figure_one,
  top = text_grob(
    "Total Death and Live Male of Female by Age",
    color = "black",
    face = "bold",
    size = 14
  ),
  bottom = text_grob(
    "Data source: \n Titanic dataset-kaggle",
    color = "black",
    hjust = 1.1,
    x = 1,
    face = "italic",
    size = 10
  ),
  
)

Dapat kita simpulkan dari visual di atas, bahwa banyak orang meninggal pada usia antara 18 - 30 tahun. Untuk orang yang selamat antara 22 - 36 tahun. Itu berarti banyak anak muda mulai dari usia 18, 21 dan 28 tahun tewas dalam insiden kapal titanic. Karena jika melihat frekuensi data, sebagian besar yang selamat hanya berkisar antara 22 hingga 36 tahun

Mari kita pastikan mayoritas penumpang di Titanic

titanic_age <- as.data.frame(table(titanic$Age))
head(titanic_age[order(titanic_age$Freq, decreasing = T),], 30)
##    Var1 Freq
## 25   24   31
## 23   22   27
## 29   28   27
## 31   30   27
## 19   18   26
## 20   19   25
## 22   21   24
## 26   25   23
## 37   36   23
## 30   29   20
## 33   32   20
## 27   26   18
## 28   27   18
## 36   35   18
## 17   16   17
## 32   31   17
## 21   20   16
## 24   23   16
## 35   34   16
## 34   33   15
## 41   40   15
## 40   39   14
## 46   45   14
## 18   17   13
## 43   42   13
## 39   38   11
## 3     2   10
## 5     4   10
## 51   50   10
## 45   44    9

Mayoritas penumpang Titanic berusia antara 20 hingga 40 tahun. Makanya banyak yang bertahan dari rentang usia 22 hingga 36 tahun

Mari kita periksa berapa orang bertahan hidup sesuai Pclass

summary(titanic$Pclass)
##   1   2   3 
## 186 173 355

Kita bisa lihat, banyak orang di Pclass 3 atau Class biasa Kita dapat menjumlahkan total Kematian dan Kehidupan orang-orang di Kapal Titanic berdasarkan Pclass

pclass_death <- aggregate(Survived == 0~ Pclass, titanic, sum)
names(pclass_death) <- c("Pclass", "Death")

pclass_live <- aggregate(Survived == 1~ Pclass, titanic, sum)
names(pclass_live) <- c("Pclass", "Live")

Tambahkan kolom ke pclass_death dari pclass_live data.frame

pclass_combine <- cbind(pclass_death, Live = pclass_live$Live)

Mari kita ubah format tabel kita dari format lebar menjadi format panjang

pclass_pivot <- pivot_longer(data = pclass_combine,
                           cols = c("Death", "Live"),
                           names_to = "Survived",
                           values_to = "Value")

pclass_pivot
## # A tibble: 6 x 3
##   Pclass Survived Value
##   <fct>  <chr>    <int>
## 1 1      Death       64
## 2 1      Live       122
## 3 2      Death       90
## 4 2      Live        83
## 5 3      Death      270
## 6 3      Live        85

Tabel kita sudah format panjang, jadi kita bisa menggunakan fungsi facet di ggplot untuk membuat plot terpisah oleh setiap kolom Survived Mari visualisasikan data menggunakan Bar Plot dan gunakan facet_wrap untuk dipisahkan oleh setiap kolom yang bertahan

ggplot(pclass_pivot, aes(x = Pclass , y = Value)) +
  geom_col(aes(fill = Survived), position = "dodge") +
  facet_wrap(~Survived, scales = "free_y") +
  labs(
    title = "Total Live and Death of Male and Female",
    subtitle = "In Titanic Ship",
    caption = "Source: Titanic dataset-kaggle",
    x = "Sex",
    y = "Total",
  ) +
  theme_solarized() +
  theme(
    plot.title = element_text(hjust = 0.5, face = "bold"),
    plot.subtitle = element_text(hjust = 0.5),
    legend.title = element_blank()
  ) +
  scale_fill_brewer(palette = "Set4", labels = c("Death", "Live")) 
## Warning in pal_name(palette, type): Unknown palette Set4

Menurut pengamatan bahwa setiap Pclass pasti terpengaruh baik kematian atau kehidupan.Dari visualisasi diatas, penumpang yang masih hidup didominasi dari Pclass 1 dan penumpang yang meninggal didominasi dari Pclass 3. Sangat masuk akal jika penumpang di Pclass 1 mendapatkan prioritas lebih tinggi pada proses evakuasi daripada penumpang di Pclass 3.

Mari kita lihat apakah di Titanic ada banyak saudara kandung, orang tua dengan keluarga mereka atau tidak.

sibling <- head(titanic[order(titanic$SibSp, decreasing = T), c("Age", "SibSp")], 15)
sibling
##     Age SibSp
## 60   11     5
## 72   16     5
## 387   1     5
## 481   9     5
## 684  14     5
## 17    2     4
## 51    7     4
## 69   17     4
## 120   2     4
## 165   1     4
## 172   4     4
## 183   9     4
## 234   5     4
## 262   3     4
## 267  16     4
parent <- head(titanic[order(titanic$Parch, decreasing = T), c("Age", "Parch")], 15)
parent
##     Age Parch
## 679  43     6
## 14   39     5
## 26   38     5
## 611  39     5
## 639  41     5
## 886  39     5
## 168  45     4
## 361  40     4
## 439  64     4
## 568  29     4
## 87   16     3
## 438  24     3
## 737  48     3
## 775  54     3
## 859  24     3

Dari hasil di atas, rentang orang yang memiliki saudara kandung adalah dari 1 - 17 tahun dan 30 - 40 tahun untuk orang tua. Itu berarti cukup banyak anak dan keluarga di Kapal Titanic

Mari kita buat fungsi yang dapat digunakan kembali untuk merencanakan data kita

plot_fn <- function(data, axis_y, y_title) {
  ggplot(data, aes(x = Age, y = axis_y, color = axis_y)) +
    geom_jitter(aes(size = axis_y), alpha = 0.5, show.legend = F) +
    ylim(0, 7) +
    labs(y = y_title) +
    scale_color_gradient(low="red", high="yellow") +
    theme_solarized()
}

Kemudian gunakan fungsi plot_fn untuk memplot data.frame saudara dan data.frame induk

plot.one <- plot_fn(sibling, sibling$SibSp, "Siblings")
plot.one

plot.two <- plot_fn(parent, parent$Parch, "Parents")
plot.two

Untuk memudahkan kita dalam membandingkan visual, mari kita susun plot yang telah kita buat menggunakan fungsi ggarrange dari library ggpubr

figure <- ggarrange(plot.one, plot.two)
annotate_figure(
  figure,
  top = text_grob(
    "Total Siblings and Parents by Age",
    color = "black",
    face = "bold",
    size = 14
  ),
  bottom = text_grob(
    "Data source: \n Titanic dataset-kaggle",
    color = "black",
    hjust = 1.1,
    x = 1,
    face = "italic",
    size = 10
  ),
)

Ternyata di kapal titanic, cukup banyak anak-anak dan saudara-saudaranya. Rata-rata berusia 1, 9, 11, 14 dan 16 tahun. dan untuk orang tua atau orang yang sudah menikah, rata-rata rentang usianya adalah 30 sampai 40 tahun.

5. Kesimpulan Akhir

Dapat diambil kesimpulan dari semua visualisasi data diatas bahwa:

Dari kasus kematian orang menurut usia di Kapal Titanic, frekuensi rata-rata tertinggi pada usia 18-30 tahun. Artinya sebagian besar anak-anak terselamatkan dalam proses evakuasi, karena jika kita melihat data saudara kandung atau anak-anak cukup banyak namun yang meninggal rata-rata berada pada kisaran usia 18 – 30 tahun tidak berada pada kisaran tersebut dari 1 - 16 tahun.

Dari data orang tua atau keluarga pada plot di atas, rata-rata sebagian besar berada pada rentang usia 30 – 40 tahun. Jika melihat data yang bertahan, banyak juga yang berasal dari rentang usia 30-36 tahun. Artinya orang tua atau keluarga lebih diprioritaskan dalam proses evakuasi di kapal Titanic

Perempuan akan diprioritaskan dalam proses evakuasi. Terlihat pada data orang-orang yang bertahan hidup, dimana perempuan yang dominan bertahan lebih banyak daripada laki-laki.

Penumpang yang berada di Pclass 1 (Kelas VIP) akan diprioritaskan dalam proses evakuasi daripada orang di Pclass 3 (Kelas Biasa/Biasa), dilihat dari jumlah nyawa orang yang banyak dari Pclass 1 dibandingkan Pclass 3.