Import Data

data <- read.csv("Maternal Health Risk Data Set.csv", header = TRUE)
str(data)
## 'data.frame':    1014 obs. of  7 variables:
##  $ Age        : int  25 35 29 30 35 23 23 35 32 42 ...
##  $ SystolicBP : int  130 140 90 140 120 140 130 85 120 130 ...
##  $ DiastolicBP: int  80 90 70 85 60 80 70 60 90 80 ...
##  $ BS         : num  15 13 8 7 6.1 7.01 7.01 11 6.9 18 ...
##  $ BodyTemp   : num  98 98 100 98 98 98 98 102 98 98 ...
##  $ HeartRate  : int  86 70 80 70 76 70 78 86 70 70 ...
##  $ RiskLevel  : chr  "high risk" "high risk" "high risk" "high risk" ...
variabel_data <- data[, c("Age", "SystolicBP", "DiastolicBP",
                     "BS", "BodyTemp", "HeartRate")]

A. Correlation Matrix

cor_mat <- cor(variabel_data, use = "complete.obs")
cor_mat
##                     Age  SystolicBP DiastolicBP         BS    BodyTemp
## Age          1.00000000  0.41604545  0.39802629  0.4732843 -0.25532314
## SystolicBP   0.41604545  1.00000000  0.78700648  0.4251717 -0.28661552
## DiastolicBP  0.39802629  0.78700648  1.00000000  0.4238241 -0.25753832
## BS           0.47328434  0.42517166  0.42382407  1.0000000 -0.10349336
## BodyTemp    -0.25532314 -0.28661552 -0.25753832 -0.1034934  1.00000000
## HeartRate    0.07979763 -0.02310796 -0.04615057  0.1428672  0.09877104
##               HeartRate
## Age          0.07979763
## SystolicBP  -0.02310796
## DiastolicBP -0.04615057
## BS           0.14286723
## BodyTemp     0.09877104
## HeartRate    1.00000000

matriks korelasi antar variabel numerik pada data maternal health. Nilai korelasi Age dengan SystolicBP (0,42) dan DiastolicBP (0,40) menunjukkan hubungan positif sedang, sehingga semakin bertambah usia, tekanan darah cenderung ikut meningkat. Korelasi BS dengan Age dan tekanan darah juga positif (sekitar 0,42–0,47), yang mengindikasikan bahwa kadar gula darah cenderung lebih tinggi pada pasien dengan usia dan tekanan darah yang lebih tinggi. Sebaliknya, BodyTemp memiliki korelasi negatif lemah dengan Age dan tekanan darah (sekitar -0,25 sampai -0,29), sehingga kenaikan usia atau tekanan darah sedikit berkaitan dengan penurunan suhu tubuh. Sementara itu, seluruh korelasi HeartRate dengan variabel lain bernilai sangat kecil (mendekati 0), yang menunjukkan bahwa detak jantung tidak memiliki hubungan linier yang kuat dengan usia, tekanan darah, kadar gula darah, maupun suhu tubuh pada data ini

b. Varians dan Kovarians

cov_mat <- cov(variabel_data, use = "complete.obs")
cov_mat
##                    Age SystolicBP DiastolicBP         BS   BodyTemp HeartRate
## Age         181.559065 103.171539   74.471739 21.0035619 -4.7180044  8.697168
## SystolicBP  103.171539 338.704005  201.121845 25.7712999 -7.2338429 -3.439938
## DiastolicBP  74.471739 201.121845  192.815323 19.3828770 -4.9042413 -5.183543
## BS           21.003562  25.771300   19.382877 10.8473512 -0.4674483  3.806040
## BodyTemp     -4.718004  -7.233843   -4.904241 -0.4674483  1.8806951  1.095640
## HeartRate     8.697168  -3.439938   -5.183543  3.8060397  1.0956395 65.427104

varians dan kovarians antar variabel numerik. Varians terbesar ada pada SystolicBP (338,70) dan DiastolicBP (192,82), artinya nilai tekanan darah paling menyebar dalam data. Kovarians positif antara Age, SystolicBP, DiastolicBP, dan BS menandakan bahwa variabel‑variabel ini cenderung naik bersama. Sebaliknya, kovarians BodyTemp dengan variabel lain yang umumnya negatif kecil menunjukkan kecenderungan lemah bahwa ketika tekanan darah atau Age meningkat, suhu tubuh sedikit menurun. Kovarians HeartRate dengan variabel lain bernilai kecil, sehingga detak jantung tidak menunjukkan hubungan kuat dengan variabel lainnya.

c. Eigen Value dan Eigen Vector

eig <- eigen(cov_mat)
eig$values
## [1] 529.521825 136.772898  64.572037  51.358769   7.360073   1.647943
eig$vectors
##              [,1]         [,2]        [,3]         [,4]        [,5]
## [1,] -0.346411189  0.923900546 -0.13192259  0.042731491 -0.08198705
## [2,] -0.764857940 -0.293487053  0.14910706  0.553048994 -0.02349903
## [3,] -0.537978589 -0.186074547 -0.12389090 -0.811464330 -0.04575582
## [4,] -0.072118241  0.069777475  0.04387199 -0.031191932  0.99247862
## [5,]  0.018657383 -0.008883756  0.01905652 -0.008215683  0.04608110
## [6,]  0.004638836  0.143880423  0.97094112 -0.181096759 -0.05911889
##              [,6]
## [1,]  0.021345781
## [2,]  0.014469639
## [3,]  0.006196148
## [4,] -0.044928412
## [5,]  0.998508320
## [6,] -0.016098692

Angka [1] 529.52 136.77 64.57 51.36 7.36 1.65 adalah eigen value dari matriks kovarians, yang menunjukkan seberapa besar variasi data yang dijelaskan oleh masing‑masing komponen utama (semakin besar nilainya, semakin besar variasi yang dijelaskan). Matriks di bawahnya adalah eigen vector; setiap kolom mewakili satu komponen utama, dan setiap baris berkaitan dengan variabel (Age, SystolicBP, DiastolicBP, BS, BodyTemp, HeartRate) dalam bentuk kombinasi linier. Kolom pertama, dengan eigen value terbesar, berisi loading besar (dalam nilai absolut) pada Age, SystolicBP, dan DiastolicBP, sehingga komponen utama pertama terutama merepresentasikan kombinasi usia dan tekanan darah. Komponen berikutnya (eigen value kedua dan seterusnya) menjelaskan variasi tambahan dengan kombinasi variabel yang berbeda, tetapi kontribusinya terhadap total variasi semakin kecil dibanding komponen pertama