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" ...
library(corrplot)
## corrplot 0.95 loaded
data_num <- data[, sapply(data, is.numeric)]
str(data_num)
## 'data.frame': 1014 obs. of 6 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 ...
a.) Corelation Matrix
cor_matrix <- round(cor(data_num), 3)
cor_matrix
## Age SystolicBP DiastolicBP BS BodyTemp HeartRate
## Age 1.000 0.416 0.398 0.473 -0.255 0.080
## SystolicBP 0.416 1.000 0.787 0.425 -0.287 -0.023
## DiastolicBP 0.398 0.787 1.000 0.424 -0.258 -0.046
## BS 0.473 0.425 0.424 1.000 -0.103 0.143
## BodyTemp -0.255 -0.287 -0.258 -0.103 1.000 0.099
## HeartRate 0.080 -0.023 -0.046 0.143 0.099 1.000
corrplot(cor_matrix,
method = "color",
addCoef.col = "steelblue",
tl.col = "steelblue",
tl.srt = 45)

Berdasarkan corelation matrix, hubungan antar variabel Age,
SystolicBP, DiastolicBP, BS, BodyTemp, dan HeartRate menunjukkan tingkat
kekuatan yang bervariasi. Hubungan positif yang paling kuat terjadi
antara SystolicBP dan DiastolicBP dengan nilai korelasi sebesar 0,787,
yang menunjukkan bahwa peningkatan tekanan darah sistolik cenderung
diikuti oleh peningkatan tekanan darah diastolik. Variabel Age memiliki
korelasi positif sedang dengan BS sebesar 0,473, serta korelasi positif
sedang dengan SystolicBP (0,416) dan DiastolicBP (0,398). Sementara itu,
BodyTemp menunjukkan korelasi negatif lemah dengan Age (–0,255),
SystolicBP (–0,287), dan DiastolicBP (–0,258). Variabel HeartRate
memiliki nilai korelasi yang sangat lemah dengan variabel lainnya,
ditunjukkan oleh nilai korelasi yang mendekati nol, sehingga dapat
disimpulkan bahwa sebagian besar variabel memiliki hubungan linear yang
lemah hingga sedang, kecuali antara SystolicBP dan DiastolicBP yang
menunjukkan hubungan kuat.
b.) Variance-Covariance Matrix
cov_matrix <- round(cov(data_num), 3)
cov_matrix
## Age SystolicBP DiastolicBP BS BodyTemp HeartRate
## Age 181.559 103.172 74.472 21.004 -4.718 8.697
## SystolicBP 103.172 338.704 201.122 25.771 -7.234 -3.440
## DiastolicBP 74.472 201.122 192.815 19.383 -4.904 -5.184
## BS 21.004 25.771 19.383 10.847 -0.467 3.806
## BodyTemp -4.718 -7.234 -4.904 -0.467 1.881 1.096
## HeartRate 8.697 -3.440 -5.184 3.806 1.096 65.427
heatmap(
cov_matrix,
col = colorRampPalette(c("navy", "white", "pink"))(100),
scale = "none",
main = "Heatmap of Variance-Covariance Matrix"
)

Berdasarkan Variance-Covariance Matrix, terlihat bahwa variabel Age,
SystolicBP, dan DiastolicBP memiliki nilai variansi yang relatif besar,
yang menunjukkan tingkat penyebaran data yang tinggi pada ketiga
variabel tersebut. Kovarians positif terbesar ditemukan antara
SystolicBP dan DiastolicBP, menandakan bahwa kedua variabel tersebut
cenderung meningkat atau menurun secara bersamaan. Selain itu, kovarians
positif juga terlihat antara Age dan BS, yang menunjukkan adanya
kecenderungan peningkatan kadar gula darah seiring bertambahnya usia.
Sementara itu, BodyTemp dan HeartRate memiliki nilai kovarians yang
relatif kecil terhadap variabel lainnya, bahkan beberapa bernilai
negatif, yang mengindikasikan hubungan linier yang lemah. Visualisasi
heatmap varians–kovarians menunjukkan bahwa pasangan variabel dengan
warna lebih terang memiliki kovarians yang lebih besar, yang menandakan
hubungan linier yang lebih kuat. Pasangan SystolicBP dan DiastolicBP
tampak paling dominan, sedangkan BodyTemp dan HeartRate menunjukkan
hubungan yang relatif lemah dengan variabel lainnya.
c.) Eigen Value dan Eigen Vector
eigen_result <- eigen(cov_matrix)
- Eigen Value
eigen_result$values
## [1] 529.522188 136.772552 64.572049 51.358317 7.359700 1.648193
plot(eigen_result$values,
type = "b",
xlab = "Komponen Utama",
ylab = "Eigen Value",
main = "Scree Plot Eigen Value")

Berdasarkan hasil perhitungan eigen value berdasarkan dari
Variance-Covariance Matrix, diperoleh nilai eigen terbesar pada komponen
utama pertama (PC1) sebesar 529,52, PC2 sebesar 136,77 dan PC3 sebesar
64,57. Nilai eigen selanjutnya mengalami penurunan yang cukup
signifikan, yaitu PC4 sebesar 51,36, PC5 sebesar 7,36, dan PC6 sebesar
1,65. Hal ini menunjukkan bahwa sebagian besar variasi data dijelaskan
oleh komponen utama pertama dan kedua. Visualisasi scree plot
memperlihatkan penurunan eigen value yang sangat tajam dari komponen
utama pertama ke komponen utama kedua, kemudian penurunannya menjadi
lebih landai pada komponen-komponen berikutnya. Pola ini menunjukkan
adanya titik siku (elbow) pada komponen utama kedua, sehingga dapat
disimpulkan bahwa dua komponen utama pertama sudah cukup
merepresentasikan sebagian besar informasi atau variasi dalam data,
sementara komponen selanjutnya hanya memberikan tambahan informasi yang
relatif kecil.
- Eigen Vector
eigen_result$vectors
## [,1] [,2] [,3] [,4] [,5] [,6]
## [1,] -0.346412119 0.923899974 -0.13192139 0.042733829 0.08198847 0.02135272
## [2,] -0.764857773 -0.293487535 0.14911812 0.553046118 0.02349283 0.01447476
## [3,] -0.537978241 -0.186075504 -0.12390532 -0.811461902 0.04576023 0.00619461
## [4,] -0.072118115 0.069780779 0.04386924 -0.031199030 -0.99247473 -0.04500713
## [5,] 0.018657306 -0.008883075 0.01906137 -0.008223485 -0.04615981 0.99850453
## [6,] 0.004639588 0.143880313 0.97093777 -0.181114293 0.05911990 -0.01610037
Berdasarkan hasil eigen vector berdasarkan dari Variance-Covariance
Matrix, setiap komponen utama merupakan kombinasi linear dari variabel
Age, SystolicBP, DiastolicBP, BS, BodyTemp, dan HeartRate. Pada komponen
utama pertama (PC1), kontribusi terbesar berasal dari DiastolicBP dan
SystolicBP, yang ditunjukkan oleh nilai eigen vector dengan magnitudo
paling besar dibandingkan variabel lainnya. Hal ini mengindikasikan
bahwa variasi terbesar dalam data terutama dipengaruhi oleh tekanan
darah. Sementara itu, Age dan BS memberikan kontribusi sedang terhadap
pembentukan komponen utama pertama. Pada komponen-komponen berikutnya,
kontribusi variabel menjadi lebih tersebar, dengan beberapa variabel
seperti BodyTemp dan HeartRate memiliki pengaruh yang lebih dominan pada
komponen tertentu. Secara keseluruhan, eigen vector menunjukkan bahwa
tekanan darah sistolik dan diastolik merupakan variabel yang paling
berperan dalam menjelaskan struktur utama data risiko kesehatan
maternal.
Kesimpulan
Secara keseluruhan, hasil analisis menunjukkan bahwa sebagian besar
variabel memiliki korelasi lemah hingga sedang, sehingga tiap variabel
masih memberikan informasi yang relatif berbeda. Hanya beberapa pasangan
variabel yang menunjukkan korelasi cukup kuat, menandakan adanya
keterkaitan pola antar variabel tertentu. Kondisi ini mengindikasikan
bahwa data tidak terlalu redundan, namun tetap memiliki struktur
hubungan yang bisa dimanfaatkan untuk analisis lanjutan, seperti reduksi
dimensi (misalnya PCA) atau pemilihan variabel yang paling
berpengaruh.