Data Titanic diimpor ke dalam R menggunakan fungsi read.csv(). Setelah itu, dilakukan pengecekan struktur data untuk mengetahui tipe data pada setiap variabel, sekaligus memastikan bahwa kolom-kolom yang akan dianalisis sudah bertipe numerik.
setwd("~/archive (8)")
getwd()
## [1] "C:/Users/HP/OneDrive/Documents/archive (8)"
titanic <- read.csv("Titanic-Dataset.csv")
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" ...
Dari hasil pengecekan tersebut diketahui bahwa dataset terdiri dari 891 data penumpang dengan 12 variabel, yang memiliki tipe data beragam seperti integer, numerik, dan karakter.
Pada tahap ini dilakukan pemilihan variabel yang akan digunakan dalam analisis, yaitu Age, SibSp, Parch, dan Fare. Variabel-variabel tersebut dipilih karena bersifat numerik dan relevan untuk dianalisis lebih lanjut. Selanjutnya, dilakukan pengecekan missing value menggunakan fungsi colSums(is.na()).
data_am <- titanic[, c("Age", "SibSp", "Parch", "Fare")]
colSums(is.na(data_am))
## Age SibSp Parch Fare
## 177 0 0 0
Hasil pengecekan menunjukkan bahwa variabel Age memiliki 177 Missing value, sedangkan variabel SibSp, Parch, dan Fare tidak memiliki nilai kosong. Oleh karena itu, variabel Age perlu ditangani terlebih dahulu sebelum digunakan pada tahap analisis selanjutnya.
data_am_clean <- na.omit(data_am)
rownames(data_am_clean) <- NULL
summary(data_am_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
Setelah dilakukan penghapusan missing value pada variabel Age menggunakan fungsi na.omit(), penomoran baris diatur ulang dengan rownames(data_am_clean) <- NULL agar indeks data kembali berurutan dan rapi. Berdasarkan hasil summary(data_am_clean), diketahui bahwa rata-rata usia penumpang adalah 29,7 tahun dengan rentang usia yang cukup luas, yaitu dari 0,42 hingga 80 tahun. Variabel SibSp dan Parch memiliki nilai median 0, yang menunjukkan bahwa sebagian besar penumpang tidak bepergian bersama saudara kandung, pasangan, orang tua, maupun anak. Sementara itu, variabel Fare memiliki rentang nilai yang besar, yaitu dari 0 hingga 512,33, dengan nilai rata-rata 34,69 dan median 15,74, yang mengindikasikan adanya perbedaan harga tiket yang cukup signifikan antar penumpang.
Analisis matriks korelasi dilakukan untuk mengetahui hubungan linear antar variabel numerik yang digunakan dalam penelitian. Informasi ini membantu memahami pola hubungan antar variabel sebelum dilakukan analisis lanjutan atau pemodelan statistik.
cor_matrix <- cor(data_am_clean)
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
Berdasarkan matriks korelasi, SibSp dan Parch memiliki hubungan positif sedang (0,38), yang menunjukkan bahwa penumpang yang membawa saudara atau pasangan cenderung juga membawa orang tua atau anak. Variabel Age berkorelasi negatif dengan SibSp (−0,30), menandakan bahwa penumpang yang lebih muda cenderung bepergian dengan lebih banyak anggota keluarga. Sementara itu, Fare memiliki korelasi positif yang lemah dengan SibSp (0,13) dan Parch (0,20), serta hampir tidak berkorelasi dengan Age (0,09).
Analisis matriks variansi–kovarians dilakukan untuk melihat tingkat keragaman data serta hubungan perubahan antar variabel numerik yang digunakan. Hasil ini membantu dalam memahami karakteristik sebaran data sebelum dilakukan analisis lanjutan atau pemodelan statistik.
cov_matrix <- cov(data_am_clean)
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
Berdasarkan matriks kovarians, nilai pada diagonal utama menunjukkan variansi masing-masing variabel, di mana Fare memiliki variansi paling besar sebesar 2800,41 yang menandakan sebaran harga tiket sangat beragam. Kovarians positif antara Fare dengan Age (73,84), SibSp (6,80), dan Parch (9,26) menunjukkan bahwa penumpang yang lebih tua atau yang bepergian bersama keluarga cenderung membayar tarif yang lebih tinggi. Sebaliknya, kovarians negatif antara Age dengan SibSp (−4,16) dan Parch (−2,34) mengindikasikan bahwa penumpang yang berusia lebih tua cenderung membawa anggota keluarga dalam jumlah yang lebih sedikit.
Perhitungan eigenvalue dan eigenvector dilakukan untuk mengetahui besarnya variasi data yang dapat dijelaskan oleh masing-masing komponen utama serta memahami struktur utama data. Eigenvalue menunjukkan seberapa besar kontribusi setiap komponen dalam menjelaskan variasi data, sedangkan eigenvector menggambarkan arah atau kombinasi variabel pembentuk komponen tersebut, sehingga membantu menentukan komponen yang signifikan dan menyederhanakan data sebelum dilakukan analisis lanjutan seperti Principal Component Analysis (PCA).
eigen_result <- eigen(cov_matrix)
eigen_result$values
## [1] 2802.5636587 209.0385659 0.9438783 0.4787214
Nilai eigen (eigenvalues) yang diperoleh dari matriks kovarians menunjukkan besarnya variasi data yang dijelaskan oleh masing-masing komponen utama. Hasil tersebut menunjukkan bahwa eigenvalue pertama sebesar 2802,56 menjelaskan variasi terbesar dalam data, diikuti oleh eigenvalue kedua sebesar 209,04, sementara dua eigenvalue lainnya bernilai sangat kecil (0,94 dan 0,48), yang mengindikasikan bahwa sebagian besar informasi dalam data terkonsentrasi pada satu hingga dua komponen utama.
eigen_result$vectors
## [,1] [,2] [,3] [,4]
## [1,] 0.028477552 0.99929943 -0.024018111 0.0035788596
## [2,] 0.002386349 -0.02093144 -0.773693322 0.6332099362
## [3,] 0.003280818 -0.01253786 -0.633088089 -0.7739712590
## [4,] 0.999586200 -0.02837826 0.004609234 0.0009266652
Vektor eigen (eigenvectors) menunjukkan arah pembentukan komponen utama dari kombinasi linier variabel asli (Age, SibSp, Parch, dan Fare). Berdasarkan hasil tersebut, komponen utama pertama didominasi oleh variabel Fare (nilai loading tertinggi ≈ 0,9996), yang menandakan bahwa variasi terbesar dalam data terutama dipengaruhi oleh perbedaan harga tiket. Komponen utama kedua didominasi oleh variabel Age (≈ 0,9993), sedangkan komponen ketiga dan keempat lebih dipengaruhi oleh kombinasi SibSp dan Parch, yang mencerminkan variasi terkait struktur keluarga penumpang.