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