data <- read.csv("hcvdat0.csv")
data_numerik <- data[, c(3, 5:14)]
data_clean <- na.omit(data_numerik)
cor_matrix <- cor(data_clean)
print(cor_matrix)
## Age ALB ALP ALT AST BIL
## Age 1.00000000 -0.191093637 0.17771977 -0.04057647 0.07273886 0.03965486
## ALB -0.19109364 1.000000000 -0.14611991 0.03949714 -0.17760895 -0.16959750
## ALP 0.17771977 -0.146119911 1.00000000 0.22160301 0.06702428 0.05837241
## ALT -0.04057647 0.039497139 0.22160301 1.00000000 0.19865775 -0.10679662
## AST 0.07273886 -0.177608947 0.06702428 0.19865775 1.00000000 0.30957974
## BIL 0.03965486 -0.169597498 0.05837241 -0.10679662 0.30957974 1.00000000
## CHE -0.07586328 0.360919403 0.02948169 0.22434447 -0.19727042 -0.32071323
## CHOL 0.12474161 0.210419878 0.12590008 0.14999727 -0.20121300 -0.18156956
## CREA -0.02514225 0.001433247 0.15390895 -0.03610554 -0.01794810 0.01990962
## GGT 0.14337927 -0.147598318 0.46130000 0.21970686 0.47777362 0.21056656
## PROT -0.15975998 0.570725680 -0.06308514 0.01678633 0.01740394 -0.05257491
## CHE CHOL CREA GGT PROT
## Age -0.07586328 0.124741615 -0.025142253 0.143379268 -0.15975998
## ALB 0.36091940 0.210419878 0.001433247 -0.147598318 0.57072568
## ALP 0.02948169 0.125900079 0.153908950 0.461299996 -0.06308514
## ALT 0.22434447 0.149997271 -0.036105541 0.219706857 0.01678633
## AST -0.19727042 -0.201213004 -0.017948098 0.477773617 0.01740394
## BIL -0.32071323 -0.181569556 0.019909617 0.210566559 -0.05257491
## CHE 1.00000000 0.428018276 -0.012119999 -0.095716131 0.30628754
## CHOL 0.42801828 1.000000000 -0.051464078 0.008822692 0.24504950
## CREA -0.01212000 -0.051464078 1.000000000 0.125353469 -0.03011070
## GGT -0.09571613 0.008822692 0.125353469 1.000000000 -0.03712701
## PROT 0.30628754 0.245049503 -0.030110695 -0.037127008 1.00000000
library(corrplot)
## corrplot 0.95 loaded
corrplot(cor_matrix, method = "color", addCoef.col = "black",
number.cex = 0.7, tl.cex = 0.8)
Terdapat korelasi positif antara Hasil Lab PROT dan ALB sebesar 0.57 yang berarti jika angka albuminnya tinggi, maka total protein yang diperoleh akan naik. Sedangkan korelasi negatif terdapat pada Hasil Lab CHE dan BIL yang berarti jika angka zat BIL tinggi maka nilai CHE (Cholinesterase) nya rendah.
cov_matrix <- cov(data_clean)
print(cov_matrix)
## Age ALB ALP ALT AST BIL
## Age 98.631388 -10.9348172 45.750544 -8.407388 23.742827 6.855155
## ALB -10.934817 33.1982701 -21.823283 4.747912 -33.634186 -17.009455
## ALP 45.750544 -21.8232826 671.901949 119.841675 57.100968 26.337454
## ALT -8.407388 4.7479116 119.841675 435.269784 136.220708 -38.783770
## AST 23.742827 -33.6341863 57.100968 136.220708 1080.231200 177.110426
## BIL 6.855155 -17.0094554 26.337454 -38.783770 177.110426 302.988734
## CHE -1.650806 4.5564303 1.674411 10.255372 -14.206173 -12.231702
## CHOL 1.398606 1.3687395 3.684302 3.532962 -7.466047 -3.568064
## CREA -12.658841 0.4186596 202.254881 -38.188738 -29.906045 17.569457
## GGT 77.323769 -46.1804560 649.315069 248.909775 852.706557 199.031456
## PROT -8.486697 17.5892871 -8.746677 1.873261 3.059630 -4.895025
## CHE CHOL CREA GGT PROT
## Age -1.650806 1.3986055 -12.6588412 77.3237685 -8.486697
## ALB 4.556430 1.3687395 0.4186596 -46.1804560 17.589287
## ALP 1.674411 3.6843023 202.2548814 649.3150694 -8.746677
## ALT 10.255372 3.5329616 -38.1887382 248.9097752 1.873261
## AST -14.206173 -7.4660468 -29.9060449 852.7065571 3.059630
## BIL -12.231702 -3.5680635 17.5694569 199.0314564 -4.895025
## CHE 4.800799 1.0587548 -1.3462991 -11.3883550 3.589626
## CHOL 1.058755 1.2745375 -2.9455248 0.5408745 1.479767
## CREA -1.346299 -2.9455248 2570.1849279 345.0941704 -8.165186
## GGT -11.388355 0.5408745 345.0941704 2948.7514092 -10.783808
## PROT 3.589626 1.4797666 -8.1651857 -10.7838076 28.610549
corrplot(cov_matrix, is.corr = FALSE, method = "color", type = "upper", tl.col = "black",
addCoef.col = "black", number.cex = 0.5)
Varian terbesar terdapat pada variabel CGT (2948.75) dan CREA (2570.18), yang menunjukkan data hasil tes GGT dan Creatinine pada pasien sangat bervariasi (rentangnya jauh).
eigen_data <- eigen(cov_matrix)
print("Eigen Values")
## [1] "Eigen Values"
print(eigen_data$values)
## [1] 3592.3628875 2477.4068784 843.8984053 489.7454024 382.8104539
## [6] 232.9586647 95.1113858 44.7180378 12.3733533 3.5687100
## [11] 0.8893693
print("Eigen Vectors")
## [1] "Eigen Vectors"
print(eigen_data$vectors)
## [,1] [,2] [,3] [,4] [,5]
## [1,] 0.0228584952 -0.0158247293 0.025048832 0.008286601 -0.094203786
## [2,] -0.0156851813 0.0082379827 0.012607209 -0.005994933 0.063944782
## [3,] 0.2241968280 -0.0044277358 0.453772184 0.601734944 -0.592486825
## [4,] 0.0845278489 -0.0635494091 0.021417463 0.665833839 0.612578629
## [5,] 0.3032700134 -0.1976275992 -0.835204909 0.281450347 -0.171571033
## [6,] 0.0710560295 -0.0325307981 -0.172391018 -0.122528794 -0.442337423
## [7,] -0.0039834770 0.0017981648 0.014875990 0.018327932 0.030580260
## [8,] -0.0005237225 -0.0006354985 0.010805636 0.005580850 0.007464542
## [9,] 0.3237154091 0.9386317685 -0.111165518 0.011269971 0.037686736
## [10,] 0.8602198550 -0.2728943388 0.229755213 -0.315835470 0.180980271
## [11,] -0.0038238240 -0.0020264214 -0.008747619 0.001425133 0.021896627
## [,6] [,7] [,8] [,9] [,10]
## [1,] -0.066038155 0.966939008 -0.223346101 -0.001275823 -0.0082657011
## [2,] -0.007498458 -0.156765672 -0.705923998 0.683108436 -0.0760513727
## [3,] -0.145767748 -0.094057692 -0.017421084 0.015820825 -0.0051761247
## [4,] 0.402840568 0.080792659 0.013790086 -0.014560342 -0.0234354579
## [5,] -0.247321000 -0.027211189 -0.011597518 0.023495365 0.0107082126
## [6,] 0.866178840 0.008479942 -0.048180731 0.010219609 0.0271089782
## [7,] -0.014579571 -0.020040710 -0.110555214 -0.012802671 0.9686083650
## [8,] -0.002203351 0.010172547 -0.048846711 -0.031886066 0.2126127540
## [9,] 0.007211477 0.014298812 -0.001647690 -0.003576001 0.0003442493
## [10,] 0.012826050 -0.009233404 0.001466248 -0.001302705 0.0005266345
## [11,] -0.013659573 -0.153205726 -0.658957481 -0.728729955 -0.0965170844
## [,11]
## [1,] 0.0192636522
## [2,] -0.0045775514
## [3,] 0.0023938915
## [4,] 0.0033410925
## [5,] -0.0065686504
## [6,] 0.0001067362
## [7,] 0.2174530193
## [8,] -0.9752335381
## [9,] -0.0012569024
## [10,] 0.0017980940
## [11,] 0.0343048571
varians_persen <- eigen_data$values / sum(eigen_data$values) * 100
barplot(varians_persen,
main = "Scree Plot (Eigenvalues)",
xlab = "Komponen Utama",
ylab = "Persentase Varians (%)",
col = "steelblue",
names.arg = 1:length(varians_persen))
lines(x = seq(0.7, by = 1.2, length.out = 11), y = varians_persen, type = "b", pch = 19, col = "red")
pca_result <- prcomp(data_clean, scale. = TRUE)
biplot(pca_result, cex = 0.7, col = c("gray", "red"),
main = "Biplot Hubungan Antar Variabel (Eigen Vectors)")
Nilai pertama (3592.36) dan kedua (2477.40) jauh lebih besar dibandingkan nilai-nilai lainnya, yang menunjukkan bahwa kita sebenarnya bisa meringkas informasi kesehatan pasien hanya dengan melihat 2 atau 3 komponen utama saja.
Adalah kontribusi setiap variabel asli terhadap komponen utama. Dalam data ini, variabel CGT (0.86) adalah variabel yang paling banyak memberikan informasi tentang perbedaan kondisi pasien. Dan terlihat pada biplot hubungan antar variabel (eigen vector), CGT memiliki panah paling panjang dibanding panah lainnya