Kapal Titanic dikenal sebagail kapal yang tidak dapat tenggelam dan merupakan kapal penumang terbesar dan termewah pada masanya. sayangnya, kapal Titanic tenggelam pada tanggal 15 april 1912, menewaskan lebih dari 1500 orang sementara hanya 705 orang yang selamat. pada kesempatan kali ini saya akan melakukan Exploratory Data Analysis pada data kapal Titanic.
Selanjutnya kita akan membuat kolom baru survived dengan nilai NA tujuannya agar jumlah kolom sama dan bisa di joinkan
#> [1] 1309 12
#> [1] "PassengerId" "Survived" "Pclass" "Name" "Sex"
#> [6] "Age" "SibSp" "Parch" "Ticket" "Fare"
#> [11] "Cabin" "Embarked"
#> 'data.frame': 1309 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" ...
Dari hasil Data inspection kita dapat mengetahui bahwa data titanic memiliki 1309x12 row dan column.
Selanjutnya kita akan melakukan cleansing data
Terdapat nilai "" pada kolom cabin, maka kita akan replace dengan NA tujuannya agar mengetahui jumlah NA pada data.
#> PassengerId Survived Pclass Name Sex Age
#> 0 418 0 0 0 263
#> SibSp Parch Ticket Fare Cabin Embarked
#> 0 0 0 1 1014 0
Jika kita lihat kolom Age terdapat banyak nilai NA hampir 20% dari data, maka akan kita akan replace nilai NA menggunakan nilai median, dan survived 418 NA yang sudah di set kedalam observasi dan cabin sebesar 1014 kita akan menghilangkan kolom tersebut.
#> 'data.frame': 1309 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" ...
Dari hasil struktur data di atas masih ada beberapa type data yang belum sesuai, maka kita akan menyesuaikan type data tersebut.
Summary akan membantu mendapatkan deskripsi nilai statistik pada kolom numerik, metode ini sangat membantu untuk mendapatkan quick insight, mari kita check deskripsi statistik dari data titanic
#> PassengerId Survived Pclass Name Sex
#> Min. : 1 0 :549 1:323 Length:1309 female:466
#> 1st Qu.: 328 1 :342 2:277 Class :character male :843
#> Median : 655 NA's:418 3:709 Mode :character
#> Mean : 655
#> 3rd Qu.: 982
#> Max. :1309
#>
#> Age SibSp Parch Ticket Fare
#> Min. : 0.17 0:891 0 :1002 Length:1309 Min. : 0.000
#> 1st Qu.:22.00 1:319 1 : 170 Class :character 1st Qu.: 7.896
#> Median :28.00 2: 42 2 : 113 Mode :character Median : 14.454
#> Mean :29.50 3: 20 3 : 8 Mean : 33.281
#> 3rd Qu.:35.00 4: 22 4 : 6 3rd Qu.: 31.275
#> Max. :80.00 5: 6 5 : 6 Max. :512.329
#> 8: 9 (Other): 4
#> Embarked
#> C:272
#> Q:123
#> S:914
#>
#>
#>
#>
Interpretaion
Kita akan melakukan pengelompokan usia menggunakan function()
Age_g <-function(x){if(x<20){x <- "<20"} else if(x>=20 & x<=29){x <- "20-29"}else if (x>=30 & x<=39){x <-"30-39"}else if(x>=40 & x <=49){x <- "40-49"}else if(x>= 50 & x <=59){x <- "50-59"}else if(x>=60 & x<=69){x <- "60-69"}else if(x>= 70 & x<= 79){x <- "70-79"}else(x <- "+80")}
total$ageg <- as.factor(sapply(total$Age, Age_g))
kita ingin mengurutkan harga tiket dari jumlah terbesar ke terendah dengan kondisi apakah dia survived (0) atau tidak (1) dan berdasarkan pengelompokan usia penumpang.
order.fare <- aggregate(Fare~ageg+Survived, total, FUN = sum)
order.fare[order(order.fare$Fare, decreasing = T), ]
Kita ingin melihat berapa proporsi penumpang yang survived
#>
#> 0 1
#> 0.6161616 0.3838384
Interpretaion
mayoritas penumpang kapal titanic selamat dengan selisih 38.4% dengan penumpang tidak selamat.
Jika dilihat dari graph di atas maka jumlah penumpang yang survived meliki angka yang lebih besar yaitu 549.
Selanjutnya kita ingin mengetahui jumlah penjualan tiket terbesar ke berbagai tujuan
Interpretaion
Port of Embarkation/Tujuan pelabuhan (C = Cherbourg, Q = Queenstown, S = Southampton), Tujuan pelabuhan yang mimiliki jumlah penjualan tiket terbesar yaitu ke southampton = 25047.840
kita ingin mengetahui penumpang yang survived dan paling banyak di kelas berapa
#>
#> 0 1
#> 1 80 136
#> 2 97 87
#> 3 372 119
Dari hasil Eda di atas kita dapat ambil Kesimpulan bahwa data pada kapal titanic membuktikan bahwa adanya kolerasi yang signifikan antara sosial ekonomi dan survival, kedua variabel tersebut belum bisa dijelaskan secara lebih mendalam, hanya gambaran secara umum bahwa sosial ekomoni yang lebih baik memiliki peluang lebih besar untuk survived di dalam kapal.