library(Rmisc)
library(dplyr)
library(ggplot2)
library(tidyr)

Background

Data ini merupakan data yang berisi tentang penumpang kapal titanic yang berhasil selamat dan yang tidak. Dalam pembahasan kali ini kita akan menampilkan beberapa plot yang akan ditampilkan agar memudahkan kita untuk membaca data titanic. Dalam data ini saya akan menampilkan 3 macam bentuk plot yaitu box plot untuk melihat outlier dalam variabel age yang memiliki na. dan juga bar chart dan scatter plot.

Read Data

titanic <- read.csv("data_input/train.csv")
head(titanic)

Data Wrangling

Kita akan melakukan cek na dalam data titanic

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

Dapat kita lihat kita memiliki 177 data na pada kolom variabel age, kita akan terlebuh dahulu mengecek apakah variabel Age memilki outlier

titanic %>%
  select(Age) %>%
  boxplot()

Dapat kita lihat variabel age memiliki outlier oleh karena itu kita akan menggunakan metode median untuk mengisi data yang NA

titanic <- titanic %>% 
  mutate( Age = replace_na(Age, median(Age))) %>% 
  na.omit()
glimpse(titanic)
## Rows: 714
## Columns: 12
## $ PassengerId <int> 1, 2, 3, 4, 5, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17,...
## $ Survived    <int> 0, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 1...
## $ Pclass      <int> 3, 1, 3, 1, 3, 1, 3, 3, 2, 3, 1, 3, 3, 3, 2, 3, 3, 2, 2...
## $ Name        <chr> "Braund, Mr. Owen Harris", "Cumings, Mrs. John Bradley ...
## $ Sex         <chr> "male", "female", "female", "female", "male", "male", "...
## $ Age         <dbl> 22, 38, 26, 35, 35, 54, 2, 27, 14, 4, 58, 20, 39, 14, 5...
## $ SibSp       <int> 1, 1, 0, 1, 0, 0, 3, 0, 1, 1, 0, 0, 1, 0, 0, 4, 1, 0, 0...
## $ Parch       <int> 0, 0, 0, 0, 0, 0, 1, 2, 0, 1, 0, 0, 5, 0, 0, 1, 0, 0, 0...
## $ Ticket      <chr> "A/5 21171", "PC 17599", "STON/O2. 3101282", "113803", ...
## $ Fare        <dbl> 7.2500, 71.2833, 7.9250, 53.1000, 8.0500, 51.8625, 21.0...
## $ Cabin       <chr> "", "C85", "", "C123", "", "E46", "", "", "", "G6", "C1...
## $ Embarked    <chr> "S", "C", "S", "S", "S", "S", "S", "S", "C", "S", "S", ...

Merubah tipe data character menjadi factor

titanic<- titanic %>% 
  mutate(survived = as.factor(Survived)) %>% 
  mutate(pclass = as.factor(Pclass)) %>% 
  mutate(sex = as.factor(Sex)) %>% 
  mutate(sibSp = as.factor(SibSp)) %>% 
  mutate(sarch = as.factor(Parch)) %>% 
  mutate(embarked = as.factor(Embarked)) %>% 
  select(-c(Sex))

Pembuatan Plot

Bar chart

Aggregasi data berdasrkan sex, survived, dan pclass untuk menunjukan jumlah frequansi data dan agar lebih mudah dalam memampilkan data dalam bar chart

titanicagg <- titanic %>%
  filter(survived != 0) %>% 
  group_by(sex, survived, pclass) %>% 
  summarise(freq = n()) %>% 
  arrange(desc(freq))
titanicagg
ggplot(data = titanicagg, aes(x = sex, 
                               y = freq)) +
  geom_col(aes(fill = pclass)) +
  theme_minimal()+
  labs(y = "survived = yes",
       title = "Jumlah orang yang selamat berdasarkan jenis kelamin dan tipe kelas kabin",fill="Ticket class    ")

Dapat dilihat lebih banyaknya jumlah penumpang wanita yang selematan dan berada di kelas 1, sedangkan penumpang pria yang selamat # Scatter plot Disini saya akan memisahkan variabel age, fare, survived berdasarkan pclass atau kelas dari tiket penumpang.

pclass3 <- titanic %>% 
  filter(pclass != "1") %>% 
  filter(pclass != "2") %>% 
  select(Age, Fare, survived,pclass)
pclass2 <- titanic %>% 
  filter(pclass != "1") %>% 
  filter(pclass != "3") %>% 
  select(Age, Fare, survived,pclass)
pclass1 <- titanic %>% 
  filter(pclass != "2") %>% 
  filter(pclass != "3") %>% 
  select(Age, Fare, survived,pclass)
plot1 <- ggplot(data = pclass1, aes(x = Fare, 
                               y =Age )) +
  geom_point(colour="red", shape=21, size = 3, 
     aes(fill = survived))+
  theme_minimal()+
  labs(title = "Penumpang Tiket Kelas 1")
plot2 <- ggplot(data = pclass2, aes(x = Fare, 
                               y =Age )) +
  geom_point(colour="red", shape=21, size = 3, 
     aes(fill = survived))+
  theme_minimal()+
  labs(title = "Penumpang Tiket Kelas 2")
plot3 <- ggplot(data = pclass3, aes(x = Fare, 
                               y =Age )) +
  geom_point(colour="red", shape=21, size = 3, 
     aes(fill = survived))+
  theme_minimal()+
  labs(title = "Penumpang Tiket Kelas 3")
multiplot(plot1, plot2, plot3)