Preparing Data

df_titanic <- read.csv("Titanic-Dataset.csv")
head(df_titanic)
##   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
##                                                  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
##             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
# hanya ambil kolom Age, SibSp, Parch, Fare & Hapus baris dengan missing value
titanic_clean <- df_titanic[, c("Age", "SibSp", "Parch", "Fare")]
titanic_clean <- na.omit(titanic_clean)

dim(titanic_clean)
## [1] 714   4
summary(titanic_clean)
##       Age            SibSp            Parch             Fare       
##  Min.   : 0.42   Min.   :0.0000   Min.   :0.0000   Min.   :  0.00  
##  1st Qu.:20.12   1st Qu.:0.0000   1st Qu.:0.0000   1st Qu.:  8.05  
##  Median :28.00   Median :0.0000   Median :0.0000   Median : 15.74  
##  Mean   :29.70   Mean   :0.5126   Mean   :0.4314   Mean   : 34.69  
##  3rd Qu.:38.00   3rd Qu.:1.0000   3rd Qu.:1.0000   3rd Qu.: 33.38  
##  Max.   :80.00   Max.   :5.0000   Max.   :6.0000   Max.   :512.33

Disini tertera bahwasannya setelah dilakukan penghapusan pada baris dengan missing value jumlah data menjadi 714 baris data, yang awalnya 891 baris (sebelum dihapus). Dan telah diambil hanya kolom yang spesifik diminta yaitu 4 kolom (Age, SibSp, Parch, Fare). Ringkasan dari dataset dengan 4 kolom/fitur dapat dilihat diatas, pada kolom “Age” terdapat penumpang paling muda yakni 0.42 tahun (bayi) dan penumpang tertua 80 tahun, dengan rata-rata usia penumpang 29.7 tahun. Pada kolom “SibSp”, terdapat penumpang yang membawa saudara atau pasangan (dengan total max 5). Pada kolom “SibSp”, terdapat penumpang yang membawa orang tua atau anak (dengan total max 6). Sedangkan pada kolom “Fare” terdapat penumpang yang bepergian dengan tarif tiket terendah atau gratis sebesar 0 (kemungkinan besar merupakan staf perusahaan atau kru teknis) dan tarif tertinggi (512.33).

Correlation Matrix

Correlation_Matrix <- cor(titanic_clean)
kable(Correlation_Matrix, caption = "Matriks Korelasi")
Matriks Korelasi
Age SibSp Parch Fare
Age 1.0000000 -0.3082468 -0.1891193 0.0960667
SibSp -0.3082468 1.0000000 0.3838199 0.1383288
Parch -0.1891193 0.3838199 1.0000000 0.2051189
Fare 0.0960667 0.1383288 0.2051189 1.0000000
corrplot(Correlation_Matrix,
         method = "color",
         type = "upper",
         addCoef.col = "black",
         number.digits = 4,
         tl.col = "black",
         diag = FALSE)

Heatmap diatas menampilkan output dari correlation matrix (korelasi antar variabelnya). Dari situ, diperoleh korelasi antara Age dengan SibSp sebesar -0.3082 artinya makin tua usia penumpang, mereka cenderung membawa sedikit saudara/pasangan. Korelasi antara Age dengan Parch sebesar -0.1891 artinya penumpang tua sedikit lebih jarang membawa orang tua mereka dibandingkan penumpang muda dan usia tidak berkorelasi signifikan dengan tarif tiket yang mereka beli (0.096). Korelasi antara SibSp dengan Parch sebesar 0.383 artinya penumpang yang membawa saudara/pasangan biasanya juga membawa orang tua/anak. Sedangkan korelasi Fare dengan SibSp dan Parch sebesar 0.1383 dan 0.2051(Parch), ini artinya harga tiket memiliki korelasi yang paling terlihat dengan jumlah anggota keluarga yang dibawa karena harus membeli tiket dalam jumlah yang banyak(perjalanan rombongan biasanya).

Variance - Covariance Matrix

Variance_Covariance_Matrix <- cov(titanic_clean)
kable(Variance_Covariance_Matrix, caption = "Matriks Kovarians Titanic")
Matriks Kovarians Titanic
Age SibSp Parch Fare
Age 211.019125 -4.1633339 -2.3441911 73.849030
SibSp -4.163334 0.8644973 0.3045128 6.806212
Parch -2.344191 0.3045128 0.7281027 9.262176
Fare 73.849030 6.8062117 9.2621760 2800.413100

Dari tabel cov matrix diatas, Fare sebesar 2800.41 ini menunjukkan bahwa data tarif tiket sangat menyebar. Sedangkan SibSp dan Parch memiliki varians dengan nilai yang kecil, artinya data jumlah keluarga (saudara, pasangan, orang tua, anak) cenderung seragam. Kebanyakan penumpang membawa sedikit keluarga atau bahkan solo travel.

Eigen value dan eigen vector

Eigen_result <- eigen(Variance_Covariance_Matrix)

# Eigen_Value
Eigen_value <- Eigen_result$values
kable(as.data.frame(Eigen_value), col.names = "Eigen Value", caption = "Eigen Value")
Eigen Value
Eigen Value
2802.5636587
209.0385659
0.9438783
0.4787214
# Eigen_Vector
Eigen_vector <- Eigen_result$vectors
kable(Eigen_vector, caption = "Eigen Vector")
Eigen Vector
0.0284776 0.9992994 -0.0240181 0.0035789
0.0023863 -0.0209314 -0.7736933 0.6332099
0.0032808 -0.0125379 -0.6330881 -0.7739713
0.9995862 -0.0283783 0.0046092 0.0009267

Dari tabel diatas, dapat disimpulkan bahwa keragaman pada dataset titanic ini didorong oleh variabel Fare dan Age yakni dengan value 2802.56 (Fare), 209.03 (Age). Hal ini diperkuat dengan hasil Eigen Vector, komponen utama ke-1 sangat dipengaruhi oleh komponen ke-4 (Fare) sementara variabel keluarga (SibSp, Parch) memiliki kontribusi yang lebih kecil.