data <- read.csv("https://archive.ics.uci.edu/ml/machine-learning-databases/00571/hcvdat0.csv")
head(data)
## X Category Age Sex ALB ALP ALT AST BIL CHE CHOL CREA GGT PROT
## 1 1 0=Blood Donor 32 m 38.5 52.5 7.7 22.1 7.5 6.93 3.23 106 12.1 69.0
## 2 2 0=Blood Donor 32 m 38.5 70.3 18.0 24.7 3.9 11.17 4.80 74 15.6 76.5
## 3 3 0=Blood Donor 32 m 46.9 74.7 36.2 52.6 6.1 8.84 5.20 86 33.2 79.3
## 4 4 0=Blood Donor 32 m 43.2 52.0 30.6 22.6 18.9 7.33 4.74 80 33.8 75.7
## 5 5 0=Blood Donor 32 m 39.2 74.1 32.6 24.8 9.6 9.15 4.32 76 29.9 68.7
## 6 6 0=Blood Donor 32 m 41.6 43.3 18.5 19.7 12.3 9.92 6.05 111 91.0 74.0
Dari dataset tersebut terdapat beberapa atribut yang digunakan untuk mendeteksi dan mengklasifikasikan kondisi kesehatan hati pasien berdasarkan hasil pemeriksaan laboratorium darah.
str(data)
## 'data.frame': 615 obs. of 14 variables:
## $ X : int 1 2 3 4 5 6 7 8 9 10 ...
## $ Category: chr "0=Blood Donor" "0=Blood Donor" "0=Blood Donor" "0=Blood Donor" ...
## $ Age : int 32 32 32 32 32 32 32 32 32 32 ...
## $ Sex : chr "m" "m" "m" "m" ...
## $ ALB : num 38.5 38.5 46.9 43.2 39.2 41.6 46.3 42.2 50.9 42.4 ...
## $ ALP : num 52.5 70.3 74.7 52 74.1 43.3 41.3 41.9 65.5 86.3 ...
## $ ALT : num 7.7 18 36.2 30.6 32.6 18.5 17.5 35.8 23.2 20.3 ...
## $ AST : num 22.1 24.7 52.6 22.6 24.8 19.7 17.8 31.1 21.2 20 ...
## $ BIL : num 7.5 3.9 6.1 18.9 9.6 12.3 8.5 16.1 6.9 35.2 ...
## $ CHE : num 6.93 11.17 8.84 7.33 9.15 ...
## $ CHOL : num 3.23 4.8 5.2 4.74 4.32 6.05 4.79 4.6 4.1 4.45 ...
## $ CREA : num 106 74 86 80 76 111 70 109 83 81 ...
## $ GGT : num 12.1 15.6 33.2 33.8 29.9 91 16.9 21.5 13.7 15.9 ...
## $ PROT : num 69 76.5 79.3 75.7 68.7 74 74.5 67.1 71.3 69.9 ...
Pada output berikut, dapat diketahui informasi struktur dataset sebagai berikut:
sum(is.na(data))
## [1] 31
num_data <- data[, c("Age","ALB","ALP","ALT","AST","BIL","CHE","CHOL","CREA","GGT","PROT")]
head(num_data)
## Age ALB ALP ALT AST BIL CHE CHOL CREA GGT PROT
## 1 32 38.5 52.5 7.7 22.1 7.5 6.93 3.23 106 12.1 69.0
## 2 32 38.5 70.3 18.0 24.7 3.9 11.17 4.80 74 15.6 76.5
## 3 32 46.9 74.7 36.2 52.6 6.1 8.84 5.20 86 33.2 79.3
## 4 32 43.2 52.0 30.6 22.6 18.9 7.33 4.74 80 33.8 75.7
## 5 32 39.2 74.1 32.6 24.8 9.6 9.15 4.32 76 29.9 68.7
## 6 32 41.6 43.3 18.5 19.7 12.3 9.92 6.05 111 91.0 74.0
Pemilihan variabel numerik dilakukan karena analisis yang akan dilakukan meliputi perhitungan matriks kovarians, korelasi, serta pencarian eigen value dan eigen vector yang merupakan dasar dari analisis multivariat. Perhitungan tersebut mengharuskan data bertipe numerik kontinu agar operasi matematis dapat dilakukan. Variabel kategorikal seperti Category dan Sex tidak digunakan karena tidak memiliki makna kuantitatif untuk perhitungan jarak maupun hubungan linear antar variabel. Sementara itu, variabel X (ID pasien) dihilangkan karena hanya berfungsi sebagai identitas dan tidak mengandung informasi statistik yang relevan.
Baris yang mengandung missing value juga dihapus karena perhitungan matriks kovarians, korelasi, serta pencarian eigen value dan eigen vector tidak dapat dilakukan apabila terdapat nilai missing value pada data. Keberadaan missing value dapat menyebabkan matriks menjadi tidak lengkap sehingga proses akan menghasilkan nilai yang bias. Penghapusan dilakukan karena jumlah data yang hilang relatif sedikit yaitu sebanyak 31 nilai sehingga tidak memengaruhi pola umum data.
cor_matrix <- cor(num_data, use="complete.obs")
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
Nilai koefisien korelasi berada pada rentang antara −1 sampai 1 yang menunjukan arah dan kekuatan hubungan antar variabel.
Berdasarkan matriks korelasi pada output di atas, terdapat beberapa hubungan antar variabel yang cukup kuat.
Selain hubungan positif, terdapat pula beberapa hubungan negatif.
Beberapa variabel juga memiliki nilai korelasi yang sangat rendah dengan sebagian besar variabel lain, seperti:
Hal ini menunjukan bahwa fungsi ginjal yang direpresentasikan oleh kreatinin relatif tidak berkaitan langsung dengan marker fungsi hati, sehingga kontribusinya terhadap pola utama data lebih kecil.
cov_matrix <- cov(num_data, use="complete.obs")
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
Matriks ini menggambarkan varians tiap variabel (elemen diagonal), yaitu ukuran seberapa besar penyebaran data terhadap rata-ratanya dan kovarians antar variabel (elemen non-diagonal), yang menunjukkan arah dan kecenderungan hubungan linear dalam skala asli. Matriks varians–kovarians menggambarkan sebaran masing-masing variabel serta arah hubungan antar variabel dalam skala aslinya. Nilai kovarians hanya memiliki tiga tanda, yaitu:
Elemen diagonal pada matriks merupakan varians masing-masing variabel, yang selalu bernilai positif karena menunjukan seberapa besar penyebaran data terhadap rata-ratanya.
Kovarians positif menunjukan bahwa dua variabel cenderung bergerak searah, sehingga peningkatan pada satu variabel umumnya diikuti peningkatan pada variabel lainnya.
Kovarians negatif menunjukan pola berlawanan arah, yaitu ketika satu variabel meningkat maka variabel lain cenderung menurun.
Kovarians yang mendekati nol menunjukan bahwa dua variabel hampir tidak memiliki hubungan linear dan perubahannya relatif saling independen.
Hal ini mengindikasikan bahwa fungsi ginjal dan kolesterol relatif berdiri sendiri dibandingkan marker utama fungsi hati.
eigen_result <- eigen(cov_matrix)
eigen_result$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
eigen_result$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
Nilai eigen menunjukkan seberapa besar keragaman data yang dapat dijelaskan oleh setiap komponen utama.
Nilai eigen vectorpada output tersebut menunjukkan bobot kontribusi setiap variabel terhadap pembentukan masing-masing komponen utama sehingga dapat digunakan untuk menafsirkan makna dari setiap PC (Principal Component).
Berdasarkan analisis yang telah dilakukan, dapat diketahui bahwa variabel numerik dalam data memiliki hubungan yang beragam, baik kuat maupun lemah, yang terlihat dari matriks korelasi dan varians–kovarians. Beberapa variabel menunjukkan keterkaitan yang cukup tinggi sehingga mengandung informasi yang saling berhubungan, sedangkan variabel lain relatif berdiri sendiri. Hal ini menunjukkan bahwa data memiliki struktur multivariat yang kompleks dan tidak semua variabel memberikan kontribusi yang sama terhadap keragaman data. Hasil analisis eigen value dan eigen vector menunjukkan bahwa sebagian besar informasi dalam data dapat dirangkum ke dalam beberapa komponen utama. Komponen pertama dan kedua mampu menjelaskan proporsi variasi terbesar, sehingga dapat digunakan sebagai representasi utama data, misalnya untuk visualisasi atau pengelompokan karakteristik pasien. Dengan demikian, metode ini membantu menyederhanakan data berdimensi banyak menjadi lebih ringkas tanpa menghilangkan pola penting yang terkandung di dalamnya.