Analisis Multivariat Data Titanic Menggunakan R

1. Import data

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.

2. Pemilihan Variabel dan Pembersihan Data

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.

3. Analisis Statistik

a). Correlation Matrix

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).

b). Variance-Covariance Matrix

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.

c). Eigen value dan eigen vector

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.