Persiapan data

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

Analisis statistik

# 3a. correlation matrix
library(knitr)
mat_cor <- cor(data_angka)

# Gunakan kable agar tabelnya rapi
kable(mat_cor, digits = 2, caption = "Tabel matriks korelasi")
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")
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")
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")
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.