data <- read.csv("https://archive.ics.uci.edu/static/public/863/data.csv")
# untuk cek data sudah masuk atau belum
data_angka <- data[, 1:6]
data_clean <- data_angka[, sapply(data_angka, is.numeric)]
library(knitr)
kable(head(data_angka))
| Age | SystolicBP | DiastolicBP | BS | BodyTemp | HeartRate |
|---|---|---|---|---|---|
| 25 | 130 | 80 | 15.00 | 98 | 86 |
| 35 | 140 | 90 | 13.00 | 98 | 70 |
| 29 | 90 | 70 | 8.00 | 100 | 80 |
| 30 | 140 | 85 | 7.00 | 98 | 70 |
| 35 | 120 | 60 | 6.10 | 98 | 76 |
| 23 | 140 | 80 | 7.01 | 98 | 70 |
# 3a. correlation matrix
library(knitr)
mat_cor <- cor(data_angka)
# Gunakan kable agar tabelnya rapi
kable(mat_cor, digits = 2, caption = "Tabel matriks korelasi")
| Age | SystolicBP | DiastolicBP | BS | BodyTemp | HeartRate | |
|---|---|---|---|---|---|---|
| Age | 1.00 | 0.42 | 0.40 | 0.47 | -0.26 | 0.08 |
| SystolicBP | 0.42 | 1.00 | 0.79 | 0.43 | -0.29 | -0.02 |
| DiastolicBP | 0.40 | 0.79 | 1.00 | 0.42 | -0.26 | -0.05 |
| BS | 0.47 | 0.43 | 0.42 | 1.00 | -0.10 | 0.14 |
| BodyTemp | -0.26 | -0.29 | -0.26 | -0.10 | 1.00 | 0.10 |
| HeartRate | 0.08 | -0.02 | -0.05 | 0.14 | 0.10 | 1.00 |
library(corrplot)
## corrplot 0.95 loaded
corrplot(mat_cor,
method = "color",
type = "upper",
addCoef.col = "black",
number.cex = 0.8,
tl.col = "black",
title = "Visualisasi matriks korelasi",
mar = c(0,0,1,0))
# 3b. matriks kovarians
library(knitr)
mat_cov <- cov(data_angka)
kable(mat_cov, digits = 2, caption = "Matriks kovarians")
| Age | SystolicBP | DiastolicBP | BS | BodyTemp | HeartRate | |
|---|---|---|---|---|---|---|
| Age | 181.56 | 103.17 | 74.47 | 21.00 | -4.72 | 8.70 |
| SystolicBP | 103.17 | 338.70 | 201.12 | 25.77 | -7.23 | -3.44 |
| DiastolicBP | 74.47 | 201.12 | 192.82 | 19.38 | -4.90 | -5.18 |
| BS | 21.00 | 25.77 | 19.38 | 10.85 | -0.47 | 3.81 |
| BodyTemp | -4.72 | -7.23 | -4.90 | -0.47 | 1.88 | 1.10 |
| HeartRate | 8.70 | -3.44 | -5.18 | 3.81 | 1.10 | 65.43 |
# visualisasi matriks kovarians
library(corrplot)
corrplot(cov(data_angka),
method = "color",
type = "upper",
addCoef.col = "black",
number.cex = 0.8,
tl.col = "black",
title = "visualisasi matriks kovarians",
mar = c(0,0,1,0),
is.corr = FALSE)
# 3c. eigen value & vector
library(knitr)
hasil_eigen <- eigen(cor(data_angka))
kable(data.frame(Komponen = 1:6, Nilai_Eigen = hasil_eigen$values),
digits = 3, caption = "Tabel nilai eigen")
| Komponen | Nilai_Eigen |
|---|---|
| 1 | 2.608 |
| 2 | 1.144 |
| 3 | 0.837 |
| 4 | 0.706 |
| 5 | 0.493 |
| 6 | 0.212 |
eigen_vec_df <- as.data.frame(hasil_eigen$vectors)
rownames(eigen_vec_df) <- colnames(data_angka)
colnames(eigen_vec_df) <- paste0("PC", 1:6)
kable(eigen_vec_df, digits = 3, caption = "Tabel vektor eigen")
| PC1 | PC2 | PC3 | PC4 | PC5 | PC6 | |
|---|---|---|---|---|---|---|
| Age | -0.436 | 0.173 | 0.240 | -0.555 | -0.643 | 0.017 |
| SystolicBP | -0.530 | -0.113 | -0.242 | 0.363 | -0.094 | -0.712 |
| DiastolicBP | -0.523 | -0.123 | -0.299 | 0.354 | -0.078 | 0.700 |
| BS | -0.426 | 0.353 | -0.115 | -0.425 | 0.707 | -0.011 |
| BodyTemp | 0.274 | 0.429 | -0.809 | -0.131 | -0.261 | -0.029 |
| HeartRate | -0.020 | 0.796 | 0.355 | 0.486 | -0.059 | 0.024 |
3d. Penjelasan output:
1. correlation matrix:
Hubungan terkuat ada pada SystolicBP dan DiastolicBP (0.78), artinya jika tekanan darah sistolik naik, diastolik cenderung ikut naik. Hubungan terlemah ada pada BS (Blood Sugar) yang memiliki korelasi rendah dengan age (0,35), artinya bahwa faktor usia tidak selalu menjadi faktor penentu utama kadar gula darah pada dataset tersebut.
2. matriks kovarians:
Variabel SystolicBP memiliki variasi data paling tinggi (338.70) dibanding variabel lainnya. Data paling tinggi ini menunjukkan bahwa data tekanan darah sistolik bervariasi antara para pasien, mulai dari normal hingga yang sangat tinggi.
3. eigen value & vector:
Nilai eigen pertama adalah (2.60) yang terbesar, menunjukkan bahwa sebagian besar informasi data terwakili di komponen pertama dan mampu menjelaskan sekitar 43% informasi dari seluruh dataset. Eigen Vector digunakan untuk menunjukkan kontribusi tiap variabel yang ada. Variabel SystolicBP dan DiastolicBP memiliki bobot yang besar, yang berarti kedua variabel inilah yang paling banyak memberikan pengaruh terhadap keragaman data secara keseluruhan.