import dataset

library(readxl)
data <- read.csv("Maternal Health Risk Data Set.csv")
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" ...

Berdasarkan output str(data), terlihat bahwa dataset terdiri dari 1014 observasi dan 7 variabel. Enam variabel bertipe numerik (Age, SystolicBP, DiastolicBP, BS, BodyTemp, dan HeartRate) serta satu variabel bertipe karakter yaitu RiskLevel.

Correlation Matrix

data_num <- data[, sapply(data, is.numeric)]
cor_matrix <- cor(data_num)
cor_matrix
##                     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

Pada output yang terlihat semua nilai diagonalnya bernilai angka 1, yang menunjukkan bahwa setiap variabel memiliki korelasi yang sempurna dengan dirinya sendiri. Hubungan yang paling kuat tampak antara SystolicBP dan DiastolicBP dengan nilai mendekati 0,787. Variabel BodyTemp menunjukkan adanya korelasi negatif yang lemah terhadap tekanan darah (sekitar -0,25 hingga -0,28), yang menunjukkan peningkatan suhu tubuh sedikit berhubungan dengan penurunan tekanan darah. Sedangkan pada variabel HeartRate menunjukkan korelasi yang sangat kecil dengan variabel lainnya, sehingga bisa dikatakan hubungan tersebut lemah atau hampir tidak menunjukkan adanya hubungan linear yang signifikan.

Variance-Covariance Matrix

cov_matrix <- cov(data_num)
cov_matrix
##                    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

Output menunjukkan bahwa nilai diagonal merupakan varians masing-masing variabel. Variabel SystolicBP memiliki varians terbesar (338,70), diikuti DiastolicBP (192,82) dan Age (181,56), yang berarti ketiga variabel tersebut memiliki tingkat penyebaran data tertinggi. Nilai di luar diagonal menunjukkan kovarians antar variabel, misal kovarians positif yang cukup besar antara SystolicBP dan DiastolicBP (201,12) yang berarti keduanya meningkat secara bersamaan.

value dan eigen vector

eigen_result <- eigen(cov_matrix)

# Eigen value
eigen_values <- eigen_result$values
eigen_values
## [1] 529.521825 136.772898  64.572037  51.358769   7.360073   1.647943
# Eigen vector
eigen_vectors <- eigen_result$vectors
eigen_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

Pada output diatas, baris pertama menunjukkan deretan angka yang merupakan eigen value. Nilai pertamanya yaitu 529,521825 yang paling besar dan merepresentasikan jumlah variasi data. Matriks angka dibawahnya ialah eigen vector, kolom pertama adalah eigen vector untuk komponen pertama (yang memiliki eigen value 529,52). Tanda negatif tidak memengaruhi besar kontribusi, hanya menunjukkan arah hubungan.