library(readr)
Titanic_Dataset <- read_csv("Titanic-Dataset.csv", show_col_types = FALSE)
knitr::kable(head(Titanic_Dataset))
| 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 | NA | 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 | NA | 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 | NA | S |
| 6 | 0 | 3 | Moran, Mr. James | male | NA | 0 | 0 | 330877 | 8.4583 | NA | Q |
library digunakan untuk import library readr salah satu library untuk import file ke R. dataset raw saya simpan dalam variabel Titanic_Dataset dan dapat dibuka dengan menggunakan fungsi knitr:kable
2a. Filter berdasarkan kolom yg dibutuhkan (Age, Sibsp, Parch, Fare)
df <- Titanic_Dataset[, c("Age", "SibSp", "Parch", "Fare")]
knitr::kable(head(df))
| Age | SibSp | Parch | Fare |
|---|---|---|---|
| 22 | 1 | 0 | 7.2500 |
| 38 | 1 | 0 | 71.2833 |
| 26 | 0 | 0 | 7.9250 |
| 35 | 1 | 0 | 53.1000 |
| 35 | 0 | 0 | 8.0500 |
| NA | 0 | 0 | 8.4583 |
cat("Jumlah baris awal:", nrow(df), "\n")
## Jumlah baris awal: 891
summary(df)
## Age SibSp Parch Fare
## Min. : 0.42 Min. :0.000 Min. :0.0000 Min. : 0.00
## 1st Qu.:20.12 1st Qu.:0.000 1st Qu.:0.0000 1st Qu.: 7.91
## Median :28.00 Median :0.000 Median :0.0000 Median : 14.45
## Mean :29.70 Mean :0.523 Mean :0.3816 Mean : 32.20
## 3rd Qu.:38.00 3rd Qu.:1.000 3rd Qu.:0.0000 3rd Qu.: 31.00
## Max. :80.00 Max. :8.000 Max. :6.0000 Max. :512.33
## NA's :177
tabel pada df sudah berisi kolom yg diingingkan namun masih banyak berisi baris2 nan
2b. Bersihkan baris nan
data_clean <- na.omit(df)
cat("Jumlah baris setelah dibersihkan:", nrow(data_clean), "\n")
## Jumlah baris setelah dibersihkan: 714
summary(data_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
baris nan dibersihkan dengan menggunakan bantuan nan.omit untuk Handle Missing Values in Objects
3a. Correlation Matrix
cor_matrix <- cor(data_clean)
print(cor_matrix)
## Age SibSp Parch Fare
## Age 1.00000000 -0.3082468 -0.1891193 0.09606669
## SibSp -0.30824676 1.0000000 0.3838199 0.13832879
## Parch -0.18911926 0.3838199 1.0000000 0.20511888
## Fare 0.09606669 0.1383288 0.2051189 1.00000000
Pada dataset titanic didapatkan bahwa
jadi orang yang membawa orangtua/anak cenderung membawa saudaranya semakin banyak
jadi orang yang semakin berumur/tua cenderung membawa saudaranya semakin sedikit
jadi orang yang memiliki membawa banyak orangtua/anak cenderung lebih mahal biaya yang harus dibayar
jadi orang yang semakin berumur/tua cenderung membawa saudara semakin sedikit
jadi orang yang membawa saudara semakin banyak cenderung lebih mahal biaya yang harus dibayar
jadi orang yang berumur/tua cenderung lebih mahal biaya yang harus dibayar, namun memiliki korelasi yang jauh lebih rendah jika dibandingkan dengan faktor umur, saudara, dan orangtua/anak yang dibawa
3b. Variance-Covariance Matrix
cov_matrix <- cov(data_clean)
print(cov_matrix)
## 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
Pada diagonal utama (varian)
Age menunjukan persebaran umur penumpang yang cukup tinggi
SibSp memiliki persebaran jumlah saudara penumpang yang cukup rendah
Parch memiliki persebaran jumlah saudara penumpang yang cukup rendah
Fare memiliki persebaran harga yang dibayarkan sangat tinggi (bervariasi)
Pada non-diagonal utama (covarian)
Age dan Fare saling berkorelasi positif cukup tinggi sebesar 73.9
Parch dan Fare saling berkorelasi positif sebesar 9.2
SibSp dan Fare saling berkorelasi positif sebesar 6.8
SibSp dan Age saling berkorelasi negatif sebesar -4.1
Parch dan Age berkorelasi negatif sebesar -2.3
Parch dan SibSp berkorelasi positif sebesar 0.3 namun sangat rendah
3c. Eigen value dan Eigen vector
eigen_results <- eigen(cor_matrix)
print(eigen_results$values)
## [1] 1.6367503 1.1071770 0.6694052 0.5866676
dari 4 nilai eigen value
PC1 = 1.63 : 4 = 40%
PC2 = 1.10 : 4 = 27.5%
PC3 = 0.63 : 4 = 16.5%
PC4 = 0.58 : 4 = 14.5%
hanya dengan menggunakan component 1 dan 2 sudah bisa mewakili 67,5% dari data keseluruhan
print(eigen_results$vectors)
## [,1] [,2] [,3] [,4]
## [1,] 0.4388714 -0.5962415 0.56095237 0.37043268
## [2,] -0.6250770 0.0732461 0.05500006 0.77517016
## [3,] -0.5908590 -0.1774532 0.60558695 -0.50265342
## [4,] -0.2599159 -0.7795136 -0.56175785 -0.09607493
dari component
Age berkorelasi positif sebesar 0.43,dan berkorelasi negatif pada SibSp sebesar -0.62, Parch sebesar -0.59, dan Fare -0.25
SibSp berkorelasi positif rendah sebesar 0.07, dan berkorelasi negatif pada Age sebesar -0.59, Parch sebesar -0.17, dan Fare sebesar -0.77
Berkorelasi positif Age sebesar 0.56, SibSp sebesar 0.05, Parch 0.60 dan berkorelasi negatif sebesar -0.56
Berkoleasi positif Age sebesar 0.37, SibSp sebesar 0.77, dan Berkorelasi negatif Parch sebesar -0.50, Fare sebesar -0.09
3d. Jelaskan hasil dari setiap output
penjelasan terlampir dibawah poin a, b, dan c