data_salwa <- read.csv("D:/Tugas_ANMUL_1/Maternal Health Risk Data Set.csv", sep=",")
head(data_salwa)
## 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
Dataset Maternal Health Risk merupakan kumpulan data yang berisi informasi mengenai kondisi kesehatan ibu selama masa kehamilan. Data yang didapat berasal dari berbagai fasilitas layanan kesehatan seperti rumah sakit, klinik komunitas, dan layanan kesehatan ibu di wilayah pedesaan Bangladesh melalui sistem pemantauan berbasis IoT.
Dataset terdiri dari 1013 observasi dengan enam variabel fitur numerik utama dan satu variabel target kategorikal.Variabel numerik terdiri dari usia (Age), tekanan darah sistolik (SystolicBP), tekanan darah diastolik (DiastolicBP), kadar gula darah (BS), suhu tubuh (BodyTemp), dan detak jantung (HeartRate). Sedangkan untuk variabel target kategorikal yaitu tingkat risiko (RiskLevel).
data_numeric <- data_salwa[sapply(data_salwa, is.numeric)]
head(data_numeric)
## Age SystolicBP DiastolicBP BS BodyTemp HeartRate
## 1 25 130 80 15.00 98 86
## 2 35 140 90 13.00 98 70
## 3 29 90 70 8.00 100 80
## 4 30 140 85 7.00 98 70
## 5 35 120 60 6.10 98 76
## 6 23 140 80 7.01 98 70
Variabel RiskLevel tidak disertakan dalam perhitungan karena merupakan data kategorikal, sedangkan analisis matrix memerlukan data numerik. Oleh karena itu analisis akan difokuskan pada enam variabel numerik, yakni Age, SystolicBP, DiastolicBP, BS, BodyTemp, dan HeartRate.
cor_matrix <- cor(data_numeric)
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
library(corrplot)
## corrplot 0.95 loaded
corrplot(cor_matrix, method = "color", addCoef.col="black")
Correlation matrix digunakan untuk mengetahui kekuatan serta arah hubungan antar variabel numerik. Nilai korelasi berada pada rentang -1 hingga 1, dimana nilai positif menunjukkan hubungan searah sedangkan nilai negatif menunjukkan hubungan berlawanan arah.
Berdasarkan hasil perhitungan, terdapat hubungan positif yang kuat antara variabel SystolicBP dan DiastolicBP dengan nilai korelasi sebesar 0,79. Hal ini menunjukkan bahwa peningkatan tekanan darah sistolik cenderung diikuti oleh peningkatan tekanan darah diastolik. Variabel Age memiliki hubungan positif sedang dengan SystolicBP, DiastolicBP, dan BS (Blood Glucose), hal ini menunjukkan adanya kecenderungan peningkatan tekanan darah dan kadar gula darah seiring bertambahnya usia. Sementara itu, BodyTemp dan HeartRate menunjukkan korelasi yang relatif lemah terhadap variabel lainnya, sehingga pengaruhnya dalam hubungan antar variabel cenderung kecil.
cov_matrix <- cov(data_numeric)
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
Variance-Covariance Matrix digunakan untuk melihat tingkat variasi masing-masing variabel serta arah hubungan antar variabel berdasarkan skala data asli. Nilai diagonal utama menunjukkan varians, sedangkan nilai diluar diagonal menunjukkan kovarians antar variabel. Secara umum, nilai kovarians yang besar menunjukkan adanya hubungan yang lebih kuat dalam skala data asli, sedangkan nilai yang mendekati nol menunjukkan hubungan yang lemah antar variabel.
Berdasarkan hasil perhitungan yang telah dilakukan, variabel SystolicBP memiliki varians paling besar (338.704005) kemudian diikuti oleh DiastolicBP (192.815323) dan Age (181.559065). Hal ini menunjukkan bahwa ketiga variabel tersebut memiliki tingkat penyebaran data yang tinggi dibandingkan dengan variabel lainnya. Sementara itu, variabel BodyTemp memiliki varians yang paling kecil yakni 1.8806951, hal ini menunjukkan bahwa data suhu badan cenderung lebih stabil.
Nilai covariance dibagi menjadi dua yakni positif (naik secara bersamaan) dan negatif (berlawanan). Untuk nilai kovarians positif yakni antara SystolicBP dan DiastolicBP (201.121845) dan juga antara Age dan SystolicBP (103.171539), menunjukkan bahwa kedua variabel tersebut cenderung akan meningkat secara bersamaan. Sedangkan untuk kovarians negatif yakni antara BodyTemp dan SystolicBP (-7.2338429), menunjukkan adanya kecenderungan berlawanan arah, meskipun nilainya relatif kecil.
eigen <- eigen(cor_matrix)
eigen_value <- eigen$values
eigen_value
## [1] 2.6078934 1.1443812 0.8370499 0.7063345 0.4925435 0.2117975
persentase <- eigen_value / sum(eigen_value) * 100
persentase
## [1] 43.464890 19.073020 13.950832 11.772242 8.209058 3.529959
Analisis eigen digunakan untuk mengetahui besarnya kontribusi setiap komponen utama dalam menjelaskan variasi total data serta memahami struktur hubungan antar variabel. Pada analisis digunakan matriks korelasi karena variabel memiliki skala dan satuan yang berbeda, sehingga data secara matematis dianggap telah distandardisasi dan setiap variabel memiliki kontribusi yang seimbang dalam analisis.
Berdasarkan hasil perhitungan, komponen utama pertama memiliki nilai eigen sebesar 2.6078934 yang mampu menjelaskan sekitar 43.46% dari total variasi data. Komponen kedua memiliki nilai eigen sebesar 1.1443812 dengan kontribusi variasi sebesar 19.07%. Komponen ketiga hingga keenam memiliki nilai eigen yang lebih kecil, masing-masing memberikan kontribusi variasi kurang dari 15%. Hal ini menunjukkan bahwa sebagian besar informasi dalam dataset dapat direpresentasikan oleh beberapa komponen utama pertama, sehingga komponen dengan nilai eigen lebih besar memiliki kontribusi yang lebih dominan dalam menjelaskan variasi data yang telah distandardisasi.
eigen$vectors
## [,1] [,2] [,3] [,4] [,5] [,6]
## [1,] -0.4360752 0.1729019 0.2404386 -0.5550931 -0.64321080 0.01685752
## [2,] -0.5296016 -0.1128996 -0.2415842 0.3633726 -0.09386670 -0.71243407
## [3,] -0.5225675 -0.1230416 -0.2990961 0.3544156 -0.07810122 0.70043934
## [4,] -0.4255290 0.3528904 -0.1153507 -0.4254237 0.70709921 -0.01063092
## [5,] 0.2735090 0.4293197 -0.8093439 -0.1305413 -0.26067118 -0.02914362
## [6,] -0.0200401 0.7958469 0.3549994 0.4859993 -0.05856920 0.02399757
Eigen vector menunjukkan bobot atau kontribusi masing-masing variabel terhadap pembentukan komponen utama. Nilai dengan absolut terbesar menunjukkan variabel yang paling dominan pada komponen tersebut.
Pada komponen utama pertama, nilai terbesar terdapat pada variabel SystolicBP, DiastolicBP, Age, dan BS. Hal ini menunjukkan bahwa komponen utama pertama merepresentasikan variasi umum yang berkaitan dengan tekanan darah, usia, serta kadar gula darah. Komponen utama kedua dipengaruhi oleh HeartRate, sedangkan komponen utama ketiga didominasi oleh variabel BodyTemp. Sementara itu, komponen utama selanjutnya menunjukkan kontribusi yang lebih spesifik dari masing-masing variabel, sehingga merepresentasikan variasi individual yang lebih kecil dalam data.