Data

data <- read.csv("hcvdat0.csv")
data_numerik <- data[, c(3, 5:14)]
data_clean <- na.omit(data_numerik)

a) Correlation Matrix

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)

Penjelasan output Correlation Matrix

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.

b) Variance-Covariance Matrix

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)

Penjelasan output Variance-Covariance Matrix

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).

c) Eigen Value dan Eigen Vector

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)")

Penjelasan output Eigen Value

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.

Penjelasan output Eigen Vector

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