IMPORT & BACA DATA

# Import dan tampilkan data
data <- read.csv("Maternal_health.csv")
head(data)
##   Age SystolicBP DiastolicBP    BS BodyTemp HeartRate RiskLevel
## 1  25        130          80 15.00       98        86 high risk
## 2  35        140          90 13.00       98        70 high risk
## 3  29         90          70  8.00      100        80 high risk
## 4  30        140          85  7.00       98        70 high risk
## 5  35        120          60  6.10       98        76  low risk
## 6  23        140          80  7.01       98        70 high risk
# Mengambil data numerik
data_num <- data[sapply(data, is.numeric)]

Penjelasan Dataset:

Dataset Maternal Health Risk berisi data kondisi kesehatan ibu hamil yang terdiri dari beberapa variabel numerik, yaitu Age, SystolicBP, DiastolicBP, BS, BodyTemp, dan HeartRate. Selain itu, terdapat variabel RiskLevel yang menunjukkan tingkat risiko kesehatan ibu. Dataset ini digunakan untuk menganalisis hubungan dan variasi antar variabel kesehatan ibu hamil.

CORRELATION MATRIX

# Correlation Matrix
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

Interpretasi:

Hasil correlation matrix menunjukkan hubungan paling kuat terjadi antara SystolicBP dan DiastolicBP dengan nilai korelasi 0,787, yang berarti terdapat hubungan positif kuat antara tekanan darah sistolik dan diastolik. Variabel Age memiliki korelasi positif sedang dengan BS (0,473), menunjukkan bahwa semakin bertambah usia, kadar gula darah cenderung meningkat. Sebaliknya, BodyTemp memiliki korelasi negatif lemah dengan hampir semua variabel, menandakan bahwa suhu tubuh tidak memiliki hubungan kuat dengan indikator kesehatan lainnya. Variabel HeartRate memiliki korelasi sangat rendah terhadap variabel lain, sehingga pengaruhnya relatif kecil.

library(corrplot)
## corrplot 0.95 loaded
corrplot(cor_matrix,
         method = "color",
         type = "full",
         addCoef.col = "black",
         tl.col = "black",
         tl.srt = 40,
         col = colorRampPalette(c("brown", "white", "darkblue"))(150),
         number.cex = 0.4,
         tl.cex = 0.6,
         title = "Visualisasi Correlation Matrix\nDataset Maternal Health",
         mar = c(0,0,3,0))

Interpretasi :

Dari heatmap di atas, warna biru tua menunjukkan hubungan yang kuat dan searah, sedangkan warna kemerahan menunjukkan hubungan yang berlawanan arah. Semakin gelap warnanya, semakin kuat hubungannya.

Hubungan yang paling jelas terlihat antara SystolicBP dan DiastolicBP dengan nilai korelasi 0,79. Ini berarti kalau tekanan darah sistolik naik, biasanya tekanan darah diastolik juga ikut naik. Hal ini masuk akal karena keduanya sama-sama mengukur tekanan darah.

Variabel Age (usia) terlihat cukup berhubungan dengan BS (gula darah) dan juga tekanan darah. Nilainya sekitar 0,40–0,47, yang berarti hubungannya sedang. Artinya, semakin bertambah usia ibu hamil, ada kecenderungan tekanan darah dan kadar gula darah juga ikut meningkat.

BS (gula darah) juga terlihat cukup berkaitan dengan tekanan darah. Jadi ibu dengan kadar gula darah yang lebih tinggi cenderung memiliki tekanan darah yang lebih tinggi juga, meskipun hubungannya tidak terlalu kuat.

Sementara itu, BodyTemp (suhu tubuh) menunjukkan hubungan negatif lemah dengan sebagian besar variabel lain. Artinya, perubahan suhu tubuh tidak terlalu berkaitan dengan perubahan tekanan darah atau usia dalam data ini.

Untuk HeartRate (detak jantung), warnanya cenderung mendekati putih. Ini menunjukkan bahwa detak jantung hampir tidak memiliki hubungan yang berarti dengan variabel kesehatan lainnya pada dataset ini.

VARIANCE-COVARIANCE MATRIX

# 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

Interpretasi:

Variance–covariance matrix menunjukkan bahwa SystolicBP memiliki varians paling besar (338,70), sehingga merupakan variabel dengan penyebaran data tertinggi. Varians DiastolicBP (192,82) dan Age (181,56) juga cukup besar, menunjukkan variasi yang signifikan. Kovarians positif yang besar antara SystolicBP dan DiastolicBP (201,12) menunjukkan kedua variabel meningkat secara bersamaan. Sementara itu, kovarians yang kecil atau mendekati nol pada variabel lain menunjukkan hubungan yang lemah dalam skala aslinya.

library(corrplot)
corrplot(cov_matrix,
         method = "color",
         type = "full",
         is.corr = FALSE,     
         addCoef.col = "black",
         tl.col = "black",
         tl.cex = 0.6,
         number.cex = 0.4,
         col = colorRampPalette(c("brown", "pink", "darkblue"))(200),
         title = "Variance-Covariance Matrix - Maternal Health",
         mar = c(0,0,3,0))

Interpretasi :

Pada heatmap ini, warna yang semakin gelap menunjukkan nilai varians atau kovarians yang semakin besar. Berbeda dengan korelasi, di sini angkanya tidak dibatasi antara -1 sampai 1, karena masih dalam satuan asli datanya.

Nilai diagonal (dari kiri atas ke kanan bawah) menunjukkan varians masing-masing variabel. Terlihat bahwa SystolicBP (338,70) memiliki varians paling besar. Artinya, tekanan darah sistolik memiliki penyebaran data paling tinggi dibanding variabel lain. Disusul oleh DiastolicBP (192,82) dan Age (181,56) yang juga memiliki variasi cukup besar. Ini berarti data tekanan darah dan usia cukup beragam di dalam dataset.

Di luar diagonal adalah kovarians, yang menunjukkan apakah dua variabel bergerak bersama atau berlawanan arah.

Nilai kovarians paling besar terlihat antara SystolicBP dan DiastolicBP (201,12). Ini menunjukkan keduanya meningkat secara bersamaan dalam skala aslinya. Hal ini konsisten dengan hasil korelasi sebelumnya bahwa tekanan darah sistolik dan diastolik sangat berkaitan.

Kovarians antara Age dan tekanan darah juga cukup besar dan positif (sekitar 74–103), yang berarti semakin tinggi usia, tekanan darah cenderung ikut meningkat.

Sementara itu, BodyTemp memiliki nilai kovarians kecil dan beberapa bernilai negatif (misalnya dengan SystolicBP -7,23). Ini menunjukkan hubungan yang lemah dan cenderung tidak terlalu berpengaruh terhadap variabel lain.

Untuk HeartRate, variansnya cukup besar (65,43), tetapi kovariansnya dengan variabel lain relatif kecil. Artinya, detak jantung cukup bervariasi, tetapi perubahannya tidak terlalu bergerak searah dengan variabel kesehatan lainnya.

EIGEN VALUE DAN EIGEN VECTOR

eigen_result <- eigen(cov_matrix)

# Eigen value
eigen_result$values
## [1] 529.521825 136.772898  64.572037  51.358769   7.360073   1.647943

Interpretasi Eigen value:

Berdasarkan hasil perhitungan, komponen utama pertama (PC1) memiliki eigen value sebesar 529,52, yang merupakan nilai terbesar dibandingkan komponen lainnya. Hal ini menunjukkan bahwa PC1 menjelaskan variasi data paling besar. Artinya, sebagian besar informasi atau keragaman dalam dataset terkonsentrasi pada komponen pertama.

Komponen kedua dan ketiga memiliki eigen value sebesar 136,77 dan 64,57, yang nilainya jauh lebih kecil dibandingkan komponen pertama. Ini menunjukkan bahwa kontribusi variasi mulai menurun pada komponen-komponen berikutnya. Sementara itu, komponen kelima dan keenam memiliki eigen value yang sangat kecil, sehingga kontribusinya terhadap total variasi data relatif tidak signifikan.

Secara keseluruhan, hasil ini menunjukkan bahwa data dapat direduksi menjadi beberapa komponen utama pertama saja tanpa kehilangan terlalu banyak informasi.

# Eigen vector
eigen_result$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

Interpretasi Eigen vector:

Eigen vector menunjukkan kontribusi masing-masing variabel terhadap setiap komponen utama. Pada komponen utama pertama (PC1), nilai terbesar (dalam nilai absolut) terdapat pada variabel SystolicBP (-0,765) dan DiastolicBP (-0,538), diikuti oleh Age (-0,346). Hal ini menunjukkan bahwa komponen utama pertama terutama merepresentasikan faktor tekanan darah, dengan sedikit pengaruh dari usia.

Sementara itu, variabel BS, BodyTemp, dan HeartRate memiliki nilai koefisien yang relatif kecil pada komponen pertama, sehingga kontribusinya terhadap pembentukan komponen ini tidak terlalu besar.

Dengan demikian, dapat disimpulkan bahwa pola utama dalam data maternal health ini paling banyak dipengaruhi oleh tekanan darah, sedangkan variabel lainnya memiliki peran yang lebih kecil dalam membentuk struktur utama variasi data.