# 1. PERSIAPAN DATA
# Memastikan dataset terbaca (pastikan file .csv berada di folder yang sama)
titanic_data <- read.csv("Titanic-Dataset.csv")

# Memilih kolom spesifik dan menghapus baris dengan NA (Missing Values)
selected_data <- titanic_data[, c("Age", "SibSp", "Parch", "Fare")]
clean_data <- na.omit(selected_data)

# a) Correlation Matrix (Matriks Korelasi)
cat("\na) Correlation Matrix \n")
## 
## a) Correlation Matrix
cor_matrix <- cor(clean_data)
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
# PENJELASAN (a):
# Matriks ini menunjukkan kekuatan hubungan antara dua variabel.
# Rentang nilai: -1 (negatif kuat) hingga 1 (positif kuat).
# Contoh: Jika korelasi SibSp & Parch positif, artinya orang yang membawa saudara cenderung juga membawa orang tua/anak.

# b) Variance-Covariance Matrix
cat("\nb) Variance-Covariance Matrix \n")
## 
## b) Variance-Covariance Matrix
cov_matrix <- cov(clean_data)
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
# PENJELASAN (b):
# Diagonal utama (atas-kiri ke bawah-kanan) adalah VARIANS masing-masing variabel.
# Varians menunjukkan seberapa jauh data tersebar dari rata-ratanya.
# Nilai di luar diagonal utama adalah KOVARIANS, yang menunjukkan arah hubungan (positif/negatif) antara dua variabel berbeda dalam skala aslinya.

# c) Eigen Value dan Eigen Vector
cat("\n--- c) Eigen Value & Eigen Vector ---\n")
## 
## --- c) Eigen Value & Eigen Vector ---
eigen_result <- eigen(cov_matrix)

cat("\nEigen Values:\n")
## 
## Eigen Values:
print(eigen_result$values)
## [1] 2802.5636587  209.0385659    0.9438783    0.4787214
cat("\nEigen Vectors:\n")
## 
## Eigen Vectors:
print(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
# PENJELASAN (c):
# 1. EIGEN VALUES: Menunjukkan jumlah varians yang ditangkap oleh setiap 
#    Principal Component (PC). Nilai yang besar menunjukkan komponen yang paling penting.
# 2. EIGEN VECTORS: Menunjukkan bobot atau kontribusi setiap variabel asli 
#    (Age, SibSp, dll) terhadap pembentukan komponen tersebut. 
#    Ini menentukan "arah" dari data dalam ruang multidimensi.