data <- read.csv("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
Output tersebut menampilkan 10 data pertama dari total 615 baris dan 14 kolom pada dataset. Terlihat ada kolom kategori pasien (misalnya Blood Donor), umur (Age), jenis kelamin (Sex), serta beberapa variabel hasil tes darah seperti ALB, ALP, ALT, AST, BIL, dan CHE. Data yang tampil masih berupa preview awal, sehingga belum mewakili keseluruhan isi dataset. Secara umum, dataset ini berisi informasi medis terkait kondisi fungsi hati pasien.
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 ...
Berdasarkan output diatas, dataset terdiri dari 615 data dan 14 variabel dengan tipe data integer, character, dan numeric. Mayoritas variabel berupa numerik sehingga dapat digunakan untuk analisis selanjutnya.
colSums(is.na(data))
## X Category Age Sex ALB ALP ALT AST
## 0 0 0 0 1 18 1 0
## BIL CHE CHOL CREA GGT PROT
## 0 0 10 0 0 1
data_clean <- na.omit(data)
data_num <- data_clean[, sapply(data_clean, is.numeric)]
str(data_num)
## 'data.frame': 589 obs. of 12 variables:
## $ X : int 1 2 3 4 5 6 7 8 9 10 ...
## $ Age : int 32 32 32 32 32 32 32 32 32 32 ...
## $ 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 ...
Berdasarkan pengecekan data, masih terdapat beberapa nilai yang kosong (NA) pada beberapa variabel. Oleh karena itu dilakukan proses cleaning dengan menghapus baris yang memiliki data kosong agar analisis tidak terganggu. Setelah data dibersihkan, kemudian dipilih hanya variabel yang bertipe numerik saja, karena analisis statistik seperti varians dan covariance matrix hanya bisa dilakukan pada data berbentuk angka.
#Correlation Matrix
cor_matrix <- cor(data_num)
cor_matrix
## X Age ALB ALP ALT AST
## X 1.00000000 0.44305790 -0.315204550 0.01794376 -0.20023304 0.30360292
## Age 0.44305790 1.00000000 -0.191093637 0.17771977 -0.04057647 0.07273886
## ALB -0.31520455 -0.19109364 1.000000000 -0.14611991 0.03949714 -0.17760895
## ALP 0.01794376 0.17771977 -0.146119911 1.00000000 0.22160301 0.06702428
## ALT -0.20023304 -0.04057647 0.039497139 0.22160301 1.00000000 0.19865775
## AST 0.30360292 0.07273886 -0.177608947 0.06702428 0.19865775 1.00000000
## BIL 0.17651109 0.03965486 -0.169597498 0.05837241 -0.10679662 0.30957974
## CHE -0.27853454 -0.07586328 0.360919403 0.02948169 0.22434447 -0.19727042
## CHOL -0.05794709 0.12474161 0.210419878 0.12590008 0.14999727 -0.20121300
## CREA -0.02016270 -0.02514225 0.001433247 0.15390895 -0.03610554 -0.01794810
## GGT 0.22146275 0.14337927 -0.147598318 0.46130000 0.21970686 0.47777362
## PROT -0.16648242 -0.15975998 0.570725680 -0.06308514 0.01678633 0.01740394
## BIL CHE CHOL CREA GGT PROT
## X 0.17651109 -0.27853454 -0.057947087 -0.020162704 0.221462754 -0.16648242
## Age 0.03965486 -0.07586328 0.124741615 -0.025142253 0.143379268 -0.15975998
## ALB -0.16959750 0.36091940 0.210419878 0.001433247 -0.147598318 0.57072568
## ALP 0.05837241 0.02948169 0.125900079 0.153908950 0.461299996 -0.06308514
## ALT -0.10679662 0.22434447 0.149997271 -0.036105541 0.219706857 0.01678633
## AST 0.30957974 -0.19727042 -0.201213004 -0.017948098 0.477773617 0.01740394
## BIL 1.00000000 -0.32071323 -0.181569556 0.019909617 0.210566559 -0.05257491
## CHE -0.32071323 1.00000000 0.428018276 -0.012119999 -0.095716131 0.30628754
## CHOL -0.18156956 0.42801828 1.000000000 -0.051464078 0.008822692 0.24504950
## CREA 0.01990962 -0.01212000 -0.051464078 1.000000000 0.125353469 -0.03011070
## GGT 0.21056656 -0.09571613 0.008822692 0.125353469 1.000000000 -0.03712701
## PROT -0.05257491 0.30628754 0.245049503 -0.030110695 -0.037127008 1.00000000
Correlation matrix menunjukkan hubungan antar variabel numerik dengan nilai antara -1 sampai 1. Nilai yang mendekati 1 berarti hubungan positif kuat, mendekati -1 berarti hubungan negatif kuat, dan mendekati 0 berarti hubungannya lemah. Dari hasil tersebut, terlihat ada beberapa variabel yang memiliki hubungan cukup kuat (misalnya ALP dan GGT), sedangkan sebagian lainnya hubungannya lemah.
#Variance & Covariance Matrix
cov_matrix <- cov(data_num)
cov_matrix
## X Age ALB ALP ALT AST
## X 30325.61267 766.254175 -316.2678135 80.997414 -727.477884 1737.677172
## Age 766.25418 98.631388 -10.9348172 45.750544 -8.407388 23.742827
## ALB -316.26781 -10.934817 33.1982701 -21.823283 4.747912 -33.634186
## ALP 80.99741 45.750544 -21.8232826 671.901949 119.841675 57.100968
## ALT -727.47788 -8.407388 4.7479116 119.841675 435.269784 136.220708
## AST 1737.67717 23.742827 -33.6341863 57.100968 136.220708 1080.231200
## BIL 535.04466 6.855155 -17.0094554 26.337454 -38.783770 177.110426
## CHE -106.27733 -1.650806 4.5564303 1.674411 10.255372 -14.206173
## CHOL -11.39233 1.398606 1.3687395 3.684302 3.532962 -7.466047
## CREA -178.00646 -12.658841 0.4186596 202.254881 -38.188738 -29.906045
## GGT 2094.23092 77.323769 -46.1804560 649.315069 248.909775 852.706557
## PROT -155.07302 -8.486697 17.5892871 -8.746677 1.873261 3.059630
## BIL CHE CHOL CREA GGT PROT
## X 535.044661 -106.277326 -11.3923339 -178.0064562 2094.2309247 -155.073024
## Age 6.855155 -1.650806 1.3986055 -12.6588412 77.3237685 -8.486697
## ALB -17.009455 4.556430 1.3687395 0.4186596 -46.1804560 17.589287
## ALP 26.337454 1.674411 3.6843023 202.2548814 649.3150694 -8.746677
## ALT -38.783770 10.255372 3.5329616 -38.1887382 248.9097752 1.873261
## AST 177.110426 -14.206173 -7.4660468 -29.9060449 852.7065571 3.059630
## BIL 302.988734 -12.231702 -3.5680635 17.5694569 199.0314564 -4.895025
## CHE -12.231702 4.800799 1.0587548 -1.3462991 -11.3883550 3.589626
## CHOL -3.568064 1.058755 1.2745375 -2.9455248 0.5408745 1.479767
## CREA 17.569457 -1.346299 -2.9455248 2570.1849279 345.0941704 -8.165186
## GGT 199.031456 -11.388355 0.5408745 345.0941704 2948.7514092 -10.783808
## PROT -4.895025 3.589626 1.4797666 -8.1651857 -10.7838076 28.610549
Berdasarkan output diatas, terdapat beberapa variabel matrix varians memiliki penyebaran data yang cukup besar (misalnya CREA dan GGT), artinya nilainya cukup bervariasi antar individu. Sementara variabel lain penyebarannya lebih kecil. Pada bagian kovarians, terlihat ada pasangan variabel yang bernilai positif dan negatif. Nilai positif menunjukkan keduanya cenderung meningkat bersama, sedangkan nilai negatif menunjukkan hubungan berlawanan arah. Ini memberi gambaran awal tentang keterkaitan antar variabel.
#Eigen Value & Vector
eigen_result <- eigen(cov_matrix)
eigen_result$values
## [1] 3.064615e+04 3.411952e+03 2.431355e+03 8.106778e+02 4.759857e+02
## [6] 3.597636e+02 2.295242e+02 7.550312e+01 4.386454e+01 1.225674e+01
## [11] 3.543169e+00 8.832592e-01
eigen_result$vectors
## [,1] [,2] [,3] [,4] [,5]
## [1,] 0.9943168408 0.0781794505 -0.0428895929 -0.0328121735 0.020212889
## [2,] 0.0252084504 -0.0048342063 0.0049027524 -0.0592379614 0.060040370
## [3,] -0.0104849795 0.0082864828 -0.0043684634 -0.0004021013 -0.025903024
## [4,] 0.0044080667 -0.2356681437 0.0356393108 -0.4374522941 0.710618877
## [5,] -0.0230437543 -0.1041992516 0.0916985555 0.0673718565 0.547112440
## [6,] 0.0607143554 -0.2580042619 0.1999667225 0.8489173365 0.256978864
## [7,] 0.0184370838 -0.0576707031 0.0297876343 0.1542686413 -0.079875667
## [8,] -0.0035236442 0.0013755262 -0.0001678846 -0.0100541902 0.011976556
## [9,] -0.0003865148 0.0002186455 0.0009124350 -0.0103444081 0.005339638
## [10,] -0.0053562951 -0.4023281847 -0.9087666493 0.1021482314 0.004426586
## [11,] 0.0771038647 -0.8340483849 0.3488376959 -0.2101014484 -0.343945278
## [12,] -0.0050747796 0.0005044839 0.0043774244 0.0163142811 -0.009811142
## [,6] [,7] [,8] [,9] [,10]
## [1,] -0.029899000 -0.0117861445 0.028276257 -0.0075378056 0.002522380
## [2,] 0.013200918 0.0142637105 -0.987882489 -0.1224848387 -0.020137828
## [3,] -0.041230519 0.0196324002 0.073071176 -0.7117277819 0.693190933
## [4,] 0.462008490 0.1601735463 0.082208949 -0.0250189827 0.017575507
## [5,] -0.680285668 -0.4612712030 0.014509161 -0.0004604439 -0.009521025
## [6,] 0.171499060 0.2691408215 -0.025811818 -0.0013787705 0.020143047
## [7,] 0.524197933 -0.8290819581 -0.013118146 -0.0459489418 0.009776830
## [8,] -0.030163171 0.0150483056 0.002265340 -0.1084487331 -0.017859713
## [9,] -0.009869622 0.0007455209 -0.011252758 -0.0491322591 -0.030609508
## [10,] -0.039663866 -0.0110805318 -0.008986684 -0.0015590011 -0.003436025
## [11,] -0.119064616 -0.0091672413 -0.002651554 0.0038121325 -0.002258407
## [12,] -0.006258120 0.0244543592 0.099611920 -0.6793031525 -0.718958094
## [,11] [,12]
## [1,] -1.166495e-03 -0.0005701834
## [2,] 1.638485e-02 -0.0153975609
## [3,] 6.807153e-02 0.0016019737
## [4,] 4.373501e-03 -0.0027458982
## [5,] 2.126558e-02 -0.0043095508
## [6,] -9.352837e-03 0.0072123962
## [7,] -2.699176e-02 -0.0001634271
## [8,] -9.680597e-01 -0.2222163944
## [9,] -2.170998e-01 0.9742461763
## [10,] -4.016040e-04 0.0012264068
## [11,] -6.161861e-05 -0.0015769054
## [12,] 9.765782e-02 -0.0337955255
Eigenvalue menunjukkan besarnya variasi yang bisa dijelaskan oleh masing-masing komponen. Nilai eigen yang besar berarti komponen tersebut menjelaskan variasi data yang lebih dominan. Sedangkan eigenvector menunjukkan kombinasi atau arah kontribusi tiap variabel dalam membentuk komponen tersebut. Hasil ini biasanya digunakan untuk melihat komponen utama dalam analisis seperti PCA.