Data Understanding

Dataset Hepatitis C Virus (HCV) ini bersumber dari UCI Machine Learning Repository.Dataset ini berisi data hasil pemeriksaan laboratorium pasien. Data ini digunakan untuk melihat hubungan antar parameter klinis yang berkaitan dengan fungsi hati.Tujuan Analisis Analisis ini disusun sebagai pemenuhan tugas mata kuliah Pengantar Analisis Multivariat. Fokus utama adalah untuk memahami hubungan antar variabel klinis secara simultan, mengidentifikasi korelasi antar parameter kesehatan hati, serta melakukan reduksi dimensi data menggunakan nilai Eigen.

Deskripsi Variabel:

Unnamed: 0: Nomor urut atau ID pasien.

Category: Status kesehatan pasien (apakah dia pendonor sehat, kena Hepatitis, Fibrosis, atau Sirosis hati).

Age: Usia pasien.

Sex: Jenis kelamin (m = laki-laki, f = perempuan).

ALB: kadar albumin dalam darah.

ALT: enzim hati yang berkaitan dengan kerusakan sel hati.

AST: enzim hati yang berkaitan dengan gangguan jaringan hati.

ALP: enzim yang berhubungan dengan fungsi hati dan empedu.

BIL: kadar bilirubin dalam darah.

CHE: enzim yang mencerminkan fungsi sintesis hati.

CHOL: kadar kolesterol.

CREA: indikator fungsi ginjal.

GGT: enzim yang sensitif terhadap gangguan fungsi hati.

PROT: total protein dalam darah.

Load and Show Data

hcv <- read.csv("hcv.csv", header = TRUE, sep = ",")
head(hcv)
##   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
str(hcv)
## '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 ...
summary(hcv)
##        X           Category              Age            Sex           
##  Min.   :  1.0   Length:615         Min.   :19.00   Length:615        
##  1st Qu.:154.5   Class :character   1st Qu.:39.00   Class :character  
##  Median :308.0   Mode  :character   Median :47.00   Mode  :character  
##  Mean   :308.0                      Mean   :47.41                     
##  3rd Qu.:461.5                      3rd Qu.:54.00                     
##  Max.   :615.0                      Max.   :77.00                     
##                                                                       
##       ALB             ALP              ALT              AST        
##  Min.   :14.90   Min.   : 11.30   Min.   :  0.90   Min.   : 10.60  
##  1st Qu.:38.80   1st Qu.: 52.50   1st Qu.: 16.40   1st Qu.: 21.60  
##  Median :41.95   Median : 66.20   Median : 23.00   Median : 25.90  
##  Mean   :41.62   Mean   : 68.28   Mean   : 28.45   Mean   : 34.79  
##  3rd Qu.:45.20   3rd Qu.: 80.10   3rd Qu.: 33.08   3rd Qu.: 32.90  
##  Max.   :82.20   Max.   :416.60   Max.   :325.30   Max.   :324.00  
##  NA's   :1       NA's   :18       NA's   :1                        
##       BIL             CHE              CHOL            CREA        
##  Min.   :  0.8   Min.   : 1.420   Min.   :1.430   Min.   :   8.00  
##  1st Qu.:  5.3   1st Qu.: 6.935   1st Qu.:4.610   1st Qu.:  67.00  
##  Median :  7.3   Median : 8.260   Median :5.300   Median :  77.00  
##  Mean   : 11.4   Mean   : 8.197   Mean   :5.368   Mean   :  81.29  
##  3rd Qu.: 11.2   3rd Qu.: 9.590   3rd Qu.:6.060   3rd Qu.:  88.00  
##  Max.   :254.0   Max.   :16.410   Max.   :9.670   Max.   :1079.10  
##                                   NA's   :10                       
##       GGT              PROT      
##  Min.   :  4.50   Min.   :44.80  
##  1st Qu.: 15.70   1st Qu.:69.30  
##  Median : 23.30   Median :72.20  
##  Mean   : 39.53   Mean   :72.04  
##  3rd Qu.: 40.20   3rd Qu.:75.40  
##  Max.   :650.90   Max.   :90.00  
##                   NA's   :1

Data Preparation

hcv_num <- hcv[, c(3, 5:14)]
hcv_clean <- na.omit(hcv_num)
dim(hcv_clean)
## [1] 589  11

Analisis Multivariat

a) Correlation Matrix

cor_matrix <- cor(hcv_clean)
round(cor_matrix, 2)
##        Age   ALB   ALP   ALT   AST   BIL   CHE  CHOL  CREA   GGT  PROT
## Age   1.00 -0.19  0.18 -0.04  0.07  0.04 -0.08  0.12 -0.03  0.14 -0.16
## ALB  -0.19  1.00 -0.15  0.04 -0.18 -0.17  0.36  0.21  0.00 -0.15  0.57
## ALP   0.18 -0.15  1.00  0.22  0.07  0.06  0.03  0.13  0.15  0.46 -0.06
## ALT  -0.04  0.04  0.22  1.00  0.20 -0.11  0.22  0.15 -0.04  0.22  0.02
## AST   0.07 -0.18  0.07  0.20  1.00  0.31 -0.20 -0.20 -0.02  0.48  0.02
## BIL   0.04 -0.17  0.06 -0.11  0.31  1.00 -0.32 -0.18  0.02  0.21 -0.05
## CHE  -0.08  0.36  0.03  0.22 -0.20 -0.32  1.00  0.43 -0.01 -0.10  0.31
## CHOL  0.12  0.21  0.13  0.15 -0.20 -0.18  0.43  1.00 -0.05  0.01  0.25
## CREA -0.03  0.00  0.15 -0.04 -0.02  0.02 -0.01 -0.05  1.00  0.13 -0.03
## GGT   0.14 -0.15  0.46  0.22  0.48  0.21 -0.10  0.01  0.13  1.00 -0.04
## PROT -0.16  0.57 -0.06  0.02  0.02 -0.05  0.31  0.25 -0.03 -0.04  1.00
library(corrplot)
## corrplot 0.95 loaded
corrplot(cor_matrix,
         method = "color",
         type = "upper",
         tl.col = "black",
         tl.srt = 25,
         number.cex = 0.7, 
         tl.cex = 0.8,
         addCoef.col = "black")

Interpretasi

Berdasarkan correlation matrix, variabel ALB (Albumin) dan PROT (Total Protein) memiliki korelasi positif cukup kuat (0.57). Secara klinis, hal ini menunjukkan adanya hubungan linear yang signifikan; yaitu peningkatan kadar albumin akan diikuti oleh peningkatan protein total, mengingat albumin adalah komponen utama penyusun protein dalam darah.

Sementara itu, kelompok enzim hati seperti GGT, AST, dan ALP menunjukkan korelasi positif sedang dengan nilai berkisar 0.46 hingga 0.48. Hubungan ini mencerminkan adanya pola kerusakan sel hati yang terjadi secara simultan, di mana gangguan pada fungsi hati cenderung meningkatkan kadar enzim-enzim tersebut secara bersamaan.

Secara visual, Heatmap Korelasi mempertegas hubungan ini melalui intensitas warna biru; semakin pekat warnanya, semakin kuat hubungan searah antar variabel tersebut. Sebaliknya, warna yang memudar atau mendekati putih pada variabel seperti CREA (Kreatinin) menandakan korelasi sangat rendah atau lemah. Hal ini membuktikan bahwa variabel CREA bersifat independen dan tidak dipengaruhi secara linear oleh parameter fungsi hati dalam dataset ini, karena fungsinya yang lebih spesifik pada indikator kesehatan ginjal.

b) Variance-Covarianceat Matrix

cov_matrix <- cov(hcv_clean)
round(cov_matrix, 2)
##         Age    ALB    ALP    ALT     AST    BIL    CHE  CHOL    CREA     GGT
## Age   98.63 -10.93  45.75  -8.41   23.74   6.86  -1.65  1.40  -12.66   77.32
## ALB  -10.93  33.20 -21.82   4.75  -33.63 -17.01   4.56  1.37    0.42  -46.18
## ALP   45.75 -21.82 671.90 119.84   57.10  26.34   1.67  3.68  202.25  649.32
## ALT   -8.41   4.75 119.84 435.27  136.22 -38.78  10.26  3.53  -38.19  248.91
## AST   23.74 -33.63  57.10 136.22 1080.23 177.11 -14.21 -7.47  -29.91  852.71
## BIL    6.86 -17.01  26.34 -38.78  177.11 302.99 -12.23 -3.57   17.57  199.03
## CHE   -1.65   4.56   1.67  10.26  -14.21 -12.23   4.80  1.06   -1.35  -11.39
## CHOL   1.40   1.37   3.68   3.53   -7.47  -3.57   1.06  1.27   -2.95    0.54
## CREA -12.66   0.42 202.25 -38.19  -29.91  17.57  -1.35 -2.95 2570.18  345.09
## GGT   77.32 -46.18 649.32 248.91  852.71 199.03 -11.39  0.54  345.09 2948.75
## PROT  -8.49  17.59  -8.75   1.87    3.06  -4.90   3.59  1.48   -8.17  -10.78
##        PROT
## Age   -8.49
## ALB   17.59
## ALP   -8.75
## ALT    1.87
## AST    3.06
## BIL   -4.90
## CHE    3.59
## CHOL   1.48
## CREA  -8.17
## GGT  -10.78
## PROT  28.61
corrplot(
  cov_matrix,
  method = "color",
  type = "upper",
  is.corr = FALSE,
  tl.col = "black",
  tl.srt = 25
)

Interpretasi

Berdasarkan hasil output Variance Covarianceat Matrix, nilai diagonal yang sangat tinggi pada variabel GGT (2948.75) dan CREA (2570.18) menunjukkan bahwa kedua parameter ini memiliki varians atau sebaran data yang paling lebar dibandingkan variabel lainnya. Hal ini terlihat jelas pada gambar heatmap kovarians, di mana hanya area GGT dan CREA yang berwarna biru pekat, menandakan bahwa skala nilai mereka mendominasi keseluruhan matriks.

Selain itu, nilai kovarians positif yang besar antara GGT dan AST (852.71) serta GGT dan ALP (649.32) mengonfirmasi bahwa enzim-enzim hati ini cenderung meningkat secara bersamaan dalam satuan aslinya. Sebaliknya, nilai negatif seperti pada hubungan ALB dan AST (-33.63) menunjukkan adanya kecenderungan gerak yang berlawanan arah. Secara keseluruhan, output kovarians ini memperlihatkan bahwa perbedaan skala satuan antar variabel sangat mencolok, sehingga variabel dengan angka besar seperti GGT dan CREA memberikan kontribusi variasi yang paling dominan dalam dataset ini.

c) Eigen Value dan Eigen Vector

eigen_result <- eigen(cov_matrix)

# Eigen value
eigen_values <- eigen_result$values

# Eigen vector
eigen_vectors <- eigen_result$vectors

round(eigen_values, 2)
##  [1] 3592.36 2477.41  843.90  489.75  382.81  232.96   95.11   44.72   12.37
## [10]    3.57    0.89
round(eigen_vectors, 2)
##        [,1]  [,2]  [,3]  [,4]  [,5]  [,6]  [,7]  [,8]  [,9] [,10] [,11]
##  [1,]  0.02 -0.02  0.03  0.01 -0.09 -0.07  0.97 -0.22  0.00 -0.01  0.02
##  [2,] -0.02  0.01  0.01 -0.01  0.06 -0.01 -0.16 -0.71  0.68 -0.08  0.00
##  [3,]  0.22  0.00  0.45  0.60 -0.59 -0.15 -0.09 -0.02  0.02 -0.01  0.00
##  [4,]  0.08 -0.06  0.02  0.67  0.61  0.40  0.08  0.01 -0.01 -0.02  0.00
##  [5,]  0.30 -0.20 -0.84  0.28 -0.17 -0.25 -0.03 -0.01  0.02  0.01 -0.01
##  [6,]  0.07 -0.03 -0.17 -0.12 -0.44  0.87  0.01 -0.05  0.01  0.03  0.00
##  [7,]  0.00  0.00  0.01  0.02  0.03 -0.01 -0.02 -0.11 -0.01  0.97  0.22
##  [8,]  0.00  0.00  0.01  0.01  0.01  0.00  0.01 -0.05 -0.03  0.21 -0.98
##  [9,]  0.32  0.94 -0.11  0.01  0.04  0.01  0.01  0.00  0.00  0.00  0.00
## [10,]  0.86 -0.27  0.23 -0.32  0.18  0.01 -0.01  0.00  0.00  0.00  0.00
## [11,]  0.00  0.00 -0.01  0.00  0.02 -0.01 -0.15 -0.66 -0.73 -0.10  0.03
plot(eigen_values, type="b", pch=19, col="blue",
     main="Scree Plot", xlab="Principal Component (PC)", ylab="Eigen Value")

abline(h=1, col="red", lty=2)

text(1:length(eigen_values), eigen_values,
     labels = round(eigen_values, 2),
     pos = 3, cex = 0.8)

pc1 <- eigen_vectors[, 1]
pc2 <- eigen_vectors[, 2]

plot(pc1, pc2, xlim=c(-1,1), ylim=c(-1,1), pch=19, col="white",
     xlab="Principal Component 1", ylab="Principal Component 2",
     main="Eigen Vector Loadings Plot")

abline(h=0, v=0, lty=2, col="gray")
arrows(0, 0, pc1, pc2, length=0.1, col="red", lwd=2)
text(pc1, pc2, labels=colnames(hcv_clean), pos=4, cex=0.9, col="blue")

Interpretasi

Hasil Eigen Value menunjukkan bahwa nilai pertama (3592.36) dan kedua (2477.41) sangat mendominasi, yang berarti sebagian besar informasi dataset sudah terangkum hanya dalam dua komponen utama saja. Hal ini terlihat jelas pada Scree Plot, di mana terjadi penurunan tajam (curam) setelah komponen kedua, yang menandakan bahwa PC1 dan PC2 adalah dimensi yang paling signifikan dalam menjelaskan variansi data.

Pada Eigen Vector, variabel GGT (0.86) menjadi kontributor utama pada komponen pertama, sedangkan variabel CREA (0.94) sangat mendominasi komponen kedua. Visualisasi Loadings Plot mempertegas temuan ini melalui panjang vektor masing-masing variabel. Vektor GGT yang memanjang secara horizontal menunjukkan pengaruh dominannya dalam membentuk PC1, sedangkan vektor CREA yang memanjang secara vertikal membuktikan dominasinya pada PC2. Karena keduanya memiliki vektor yang paling panjang dibandingkan variabel lainnya, hal ini membuktikan bahwa GGT dan CREA adalah faktor pembeda utama yang paling memengaruhi keragaman data pasien dalam analisis ini.

Kesimpulan

Analisis multivariat pada dataset HCV memberikan wawasan mendalam tentang struktur dan hubungan antara parameter klinis pasien. Melalui Matriks Korelasi dan Kovarians, terlihat bahwa kelompok enzim hati memiliki keterkaitan yang kuat serta sebaran data yang paling lebar, terutama pada variabel GGT dan CREA yang memiliki varians paling tinggi dibandingkan variabel lainnya. Hasil Eigenvalue dan Eigenvector membantu kita mengidentifikasi bahwa variabel GGT dan CREA merupakan arah utama variasi dalam data. Hal ini dibuktikan secara visual pada Loadings Plot, di mana kedua variabel tersebut memiliki panah vektor paling panjang, yang menandakan keduanya sebagai faktor pembeda paling dominan dalam dataset ini. Secara keseluruhan, analisis multivariat ini berhasil melakukan reduksi dimensi data. Meskipun dataset asli memiliki banyak variabel, sebagian besar informasi dan keragaman data sudah mampu dijelaskan hanya melalui dua komponen utama (PC1 dan PC2). Hal ini membuktikan bahwa dalam pemantauan kesehatan pasien HCV, parameter fungsi hati (GGT) dan fungsi ginjal (CREA) merupakan indikator paling kritis yang menggambarkan perbedaan kondisi antar individu.