Dokumen ini bertujuan untuk melakukan analisis Principal Component Analysis (PCA) pada data HCV. Analisis dimulai dari tahap preprocessing data hingga interpretasi hasil PCA.

Preprocesssing Data

Tahap preprocessing dilakukan untuk memastikan data siap dianalisis. Proses ini meliputi pembersihan nama kolom, pemilihan variabel numerik, penghapusan kolom identitas yang tidak relevan, penghapusan data yang mengandung nilai hilang, serta normalisasi data menggunakan scaling.

# Preprocessing
colnames(data) <- make.names(colnames(data), unique = TRUE)
data_num <- data[, sapply(data, is.numeric)]
if ("X" %in% colnames(data_num)) {
  data_num <- data_num[, colnames(data_num) != "X"]
}
data_clean <- na.omit(data_num)
data_scaled <- scale(data_clean)

Matriks Korelasi dan Kovarians

Matriks korelasi digunakan untuk melihat hubungan antar variabel, sedangkan matriks kovarians digunakan sebagai dasar perhitungan eigenvalue dan eigenvector dalam analisis PCA.

Matriks korelasi menunjukkan hubungan antar variabel numerik setelah data dinormalisasi. Nilai korelasi berada pada rentang -1 hingga 1, di mana nilai mendekati 1 atau -1 menunjukkan hubungan yang kuat, sedangkan nilai mendekati 0 menunjukkan hubungan yang lemah.

Berdasarkan hasil korelasi, beberapa variabel memiliki korelasi cukup kuat, misalnya:

Hal ini menunjukkan adanya keterkaitan antar beberapa variabel klinis, sehingga PCA layak digunakan untuk mereduksi dimensi data.

cor_matrix <- cor(data_scaled)
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
cov_matrix <- cov(data_scaled)
cov_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

Analisis Eigenvalue

Eigenvalue digunakan untuk mengetahui seberapa besar variasi data yang dapat dijelaskan oleh masing-masing komponen utama. Semakin besar nilai eigen, semakin penting komponen tersebut.

Berdasarkan hasil:

Vektor eigen menunjukkan arah pembentukan komponen utama dari kombinasi variabel asli.

eigen_result <- eigen(cov_matrix)
eigen_result
## eigen() decomposition
## $values
##  [1] 2.4545058 1.8565538 1.3529667 1.0824588 1.0271456 0.7337743 0.6695579
##  [8] 0.5823136 0.5002047 0.4230111 0.3175079
## 
## $vectors
##              [,1]         [,2]        [,3]        [,4]        [,5]         [,6]
##  [1,]  0.17219692 -0.141749729  0.40848048  0.17103491  0.59286684 -0.512280325
##  [2,] -0.44634657 -0.104178822 -0.35344733 -0.11948260  0.14388193 -0.106406743
##  [3,]  0.17784824 -0.472853911  0.24288555 -0.24914421  0.02538508  0.439085366
##  [4,] -0.02439965 -0.441174159  0.01372124  0.28162234 -0.54807244 -0.077771501
##  [5,]  0.33792771 -0.259064098 -0.43138963  0.24593969 -0.03603284 -0.394092554
##  [6,]  0.33055613  0.009570773 -0.37393889 -0.01868906  0.35553053  0.456055191
##  [7,] -0.42805007 -0.286677489  0.11223822  0.03852862 -0.08600828 -0.042025791
##  [8,] -0.31231864 -0.332535281  0.26732321  0.10396018  0.30821711  0.217487822
##  [9,]  0.06562592 -0.097971348  0.02491455 -0.85713321 -0.09397796 -0.336175221
## [10,]  0.31501654 -0.492999085 -0.13278213 -0.06871188  0.03517596 -0.003485379
## [11,] -0.36210931 -0.195479774 -0.46989229 -0.05060177  0.29430318 -0.044875203
##              [,7]        [,8]        [,9]        [,10]        [,11]
##  [1,]  0.02382611  0.34704474  0.11177358  0.006364507  0.081744690
##  [2,]  0.21536021  0.33991107 -0.01643885 -0.562587583 -0.374167629
##  [3,]  0.42274925  0.16778831  0.13646042  0.270649788 -0.362670648
##  [4,] -0.24111667  0.53978166 -0.20075765  0.036108703  0.166522763
##  [5,] -0.10449956 -0.29071638  0.03604980  0.198741654 -0.528456244
##  [6,] -0.51419525  0.30772765  0.21880083 -0.076077675  0.057606495
##  [7,] -0.25611450 -0.21548676  0.77200091  0.011557370  0.056529081
##  [8,] -0.41648873 -0.31530088 -0.50613037 -0.052856402 -0.188334634
##  [9,] -0.33756201  0.03751411 -0.09180819  0.071683815 -0.005330296
## [10,]  0.22184168 -0.34143836 -0.03130231 -0.489089555  0.477631923
## [11,]  0.19662621  0.03813499 -0.13257463  0.562440189  0.380323434

Principal Component Analysis (PCA)

Analisis PCA dilakukan untuk mereduksi dimensi data dengan tetap mempertahankan informasi utama yang terkandung di dalamnya. Output PCA menunjukkan proporsi varians yang dijelaskan oleh setiap komponen utama.

summary(data_scaled)
##       Age                ALB                ALP                ALT         
##  Min.   :-2.45865   Min.   :-4.63819   Min.   :-2.19216   Min.   :-1.2307  
##  1st Qu.:-0.84759   1st Qu.:-0.49017   1st Qu.:-0.60272   1st Qu.:-0.4877  
##  Median :-0.04205   Median : 0.04785   Median :-0.07419   Median :-0.1858  
##  Mean   : 0.00000   Mean   : 0.00000   Mean   : 0.00000   Mean   : 0.0000  
##  3rd Qu.: 0.66279   3rd Qu.: 0.60324   3rd Qu.: 0.45434   3rd Qu.: 0.2552  
##  Max.   : 2.97869   Max.   : 7.04220   Max.   :13.44377   Max.   :14.3183  
##       AST                BIL                 CHE                CHOL         
##  Min.   :-0.70505   Min.   :-0.587029   Min.   :-3.09603   Min.   :-3.50886  
##  1st Qu.:-0.37341   1st Qu.:-0.334251   1st Qu.:-0.58128   1st Qu.:-0.68324  
##  Median :-0.24562   Median :-0.225097   Median : 0.02573   Median :-0.07205  
##  Mean   : 0.00000   Mean   : 0.000000   Mean   : 0.00000   Mean   : 0.00000  
##  3rd Qu.:-0.06307   3rd Qu.:-0.001044   3rd Qu.: 0.62361   3rd Qu.: 0.61000  
##  Max.   : 8.83039   Max.   :11.373971   Max.   : 3.74537   Max.   : 3.78993  
##       CREA              GGT                PROT         
##  Min.   :-1.4531   Min.   :-0.62057   Min.   :-5.06464  
##  1st Qu.:-0.2696   1st Qu.:-0.41616   1st Qu.:-0.48424  
##  Median :-0.0921   Median :-0.28357   Median : 0.03923  
##  Mean   : 0.0000   Mean   : 0.00000   Mean   : 0.00000  
##  3rd Qu.: 0.1446   3rd Qu.:-0.01102   3rd Qu.: 0.61879  
##  Max.   :19.6744   Max.   :11.28314   Max.   : 2.73138

Ringkasan statistik menunjukkan bahwa seluruh variabel memiliki: - Nilai rata-rata (mean) mendekati nol - Skala data yang seragam Hal ini menandakan bahwa proses standarisasi data telah berhasil dilakukan, sehingga data siap digunakan untuk analisis PCA tanpa bias skala.

pca_result <- prcomp(data_clean, scale. = TRUE)
summary(pca_result)
## Importance of components:
##                           PC1    PC2    PC3     PC4     PC5     PC6     PC7
## Standard deviation     1.5667 1.3626 1.1632 1.04041 1.01348 0.85661 0.81827
## Proportion of Variance 0.2231 0.1688 0.1230 0.09841 0.09338 0.06671 0.06087
## Cumulative Proportion  0.2231 0.3919 0.5149 0.61332 0.70669 0.77340 0.83427
##                            PC8     PC9    PC10    PC11
## Standard deviation     0.76309 0.70725 0.65039 0.56348
## Proportion of Variance 0.05294 0.04547 0.03846 0.02886
## Cumulative Proportion  0.88721 0.93268 0.97114 1.00000

##Interprtasi Hasil

Berdasarkan hasil PCA, komponen utama pertama (PC1) memiliki kontribusi terbesar dalam menjelaskan variasi data. Komponen selanjutnya memiliki kontribusi yang semakin kecil. Dengan demikian, sebagian besar informasi dalam data dapat direpresentasikan oleh beberapa komponen utama saja.

Proses preprocessing yang dilakukan memastikan bahwa PCA berjalan dengan baik tanpa error dan menghasilkan output yang valid.

Hasil PCA menunjukkan proporsi varians yang dijelaskan oleh masing-masing komponen utama.

Dari hasil tersebut dapat dilihat bahwa: - PC1 menjelaskan sekitar 22,31% variasi data - PC2 menjelaskan sekitar 16,88%

Secara kumulatif, lima komponen utama pertama sudah mampu menjelaskan sekitar 70% variasi data. Hal ini menunjukkan bahwa sebagian besar informasi dalam data dapat direpresentasikan dengan jumlah komponen yang lebih sedikit.

apply(data_clean, 2, mean)
##       Age       ALB       ALP       ALT       AST       BIL       CHE      CHOL 
## 47.417657 41.624278 68.123090 26.575382 33.772835 11.018166  8.203633  5.391341 
##      CREA       GGT      PROT 
## 81.669100 38.198472 71.890153
apply(data_clean, 2, sd)
##       Age       ALB       ALP       ALT       AST       BIL       CHE      CHOL 
##  9.931334  5.761794 25.921072 20.863120 32.866871 17.406572  2.191073  1.128954 
##      CREA       GGT      PROT 
## 50.696991 54.302407  5.348883

Nilai rata-rata dan simpangan baku menunjukkan karakteristik dasar dari setiap variabel sebelum dilakukan standarisasi. Informasi ini digunakan untuk memahami skala dan penyebaran data asli, serta sebagai pembanding sebelum dan sesudah proses normalisasi.

###Kesimpulan Berdasarkan hasil analisis PCA, dapat disimpulkan bahwa: - Terdapat hubungan antar variabel klinis dalam data Hepatitis C - PCA berhasil mereduksi dimensi data dengan tetap mempertahankan sebagian besar informasi - Beberapa komponen utama pertama sudah cukup mewakili struktur data secara keseluruhan

Dengan demikian, PCA efektif digunakan untuk menyederhanakan data dan membantu analisis lanjutan.