Dokumen ini bertujuan untuk melakukan analisis Principal Component Analysis (PCA) pada data HCV. Analisis dimulai dari tahap preprocessing data hingga interpretasi hasil PCA.
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 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:
Variabel GGT memiliki korelasi positif cukup tinggi dengan ALP dan AST
Variabel ALB memiliki korelasi positif dengan PROT
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
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:
Nilai eigen terbesar terdapat pada komponen pertama (PC1)
Nilai eigen semakin menurun pada komponen berikutnya
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
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.