Library:

library(ggplot2)
library(readxl)
library(REdaS)
## Loading required package: grid
library(factoextra)
## Welcome! Want to learn more? See two factoextra-related books at https://goo.gl/ve3WBa

1. Deskripsi Data

Dataset yang digunakan dalam penelitian ini berasal dari Kaggle, yaitu salinan dari Breast Cancer Wisconsin (Diagnostic) Dataset. Dataset ini berisi 569 sampel dan 30 variabel numerik yang menggambarkan karakteristik sel kanker payudara (seperti radius, perimeter, area, tekstur, dan aspek lainnya). Dalam studi kasus ini, analisis komponen utama (PCA) difokuskan pada 10 variabel mean yang merepresentasikan atribut utama morfologi sel, yaitu:

  1. Radius_mean
  2. Texture_mean
  3. Perimeter_mean
  4. Area_mean
  5. Smoothness_mean
  6. Compactness_mean
  7. Concavity_mean
  8. Concave points_mean
  9. Symmetry_mean
  10. Fractal_dimension_mean

Setiap variabel tersebut menggambarkan sifat khusus dari struktur sel, baik dari segi ukuran maupun kompleksitas bentuknya.

2. Analisis PCA

Penggunaan PCA bertujuan untuk memperoleh komponen utama yang paling informatif, sehingga dapat merangkum sebagian besar keragaman data sekaligus mengungkap pola hubungan antarvariabel morfologi sel yang berkaitan dengan karakteristik kanker payudara.

3. Source Code

3.1 Import Data

Faktor <- read_excel("E:/Download/dataset_cancer.xlsx")
View(Faktor)
str(Faktor)
## tibble [569 × 10] (S3: tbl_df/tbl/data.frame)
##  $ radius_mean           : num [1:569] 18 20.6 19.7 11.4 20.3 ...
##  $ texture_mean          : num [1:569] 10.4 17.8 21.2 20.4 14.3 ...
##  $ perimeter_mean        : num [1:569] 122.8 132.9 130 77.6 135.1 ...
##  $ area_mean             : num [1:569] 1001 1326 1203 386 1297 ...
##  $ smoothness_mean       : num [1:569] 0.1184 0.0847 0.1096 0.1425 0.1003 ...
##  $ compactness_mean      : num [1:569] 0.2776 0.0786 0.1599 0.2839 0.1328 ...
##  $ concavity_mean        : num [1:569] 0.3001 0.0869 0.1974 0.2414 0.198 ...
##  $ concave points_mean   : num [1:569] 0.1471 0.0702 0.1279 0.1052 0.1043 ...
##  $ symmetry_mean         : num [1:569] 0.242 0.181 0.207 0.26 0.181 ...
##  $ fractal_dimension_mean: num [1:569] 0.0787 0.0567 0.06 0.0974 0.0588 ...

3.2 Uji KMO

kmos <- KMOS(Faktor)
kmos$MSA
##            radius_mean           texture_mean         perimeter_mean 
##              0.7172162              0.9335588              0.6965623 
##              area_mean        smoothness_mean       compactness_mean 
##              0.8652626              0.7913636              0.6928527 
##         concavity_mean    concave points_mean          symmetry_mean 
##              0.8778683              0.8772256              0.9540986 
## fractal_dimension_mean 
##              0.6802894

Hasil Measure of Sampling Adequacy (MSA) menunjukkan bahwa seluruh variabel memiliki nilai MSA di atas 0.5 berada pada rentang 0.680 hingga 0.954. Dengan demikian, setiap variabel telah memenuhi tingkat kecukupan sampel yang memadai dan layak untuk disertakan dalam analisis Principal Component Analysis (PCA), karena tidak ada variabel yang perlu dieliminasi.

kmos$KMO
## [1] 0.7868379

Nilai KMO sebesar 0,7868 mengindikasikan bahwa secara keseluruhan data memiliki tingkat kecukupan sampel yang berada pada kategori middling, sehingga dataset dianggap baik dianalisis menggunakan PCA.

3.3 Uji Bartlett

bart_spher(x = Faktor)
##  Bartlett's Test of Sphericity
## 
## Call: bart_spher(x = Faktor)
## 
##      X2 = 11176.179
##      df = 45
## p-value < 2.22e-16

Didapatkan p-value (2.22e-16) < 0.05, sehingga tolak H0. Maka didapatkan hasil bahwa variabel-variabel dalam dataset memiliki korelasi yang cukup kuat untuk dianalisis lebih menggunakan PCA.

3.4 Analisis PCA

pca_object <- prcomp(Faktor[ , colnames(Faktor)], scale = TRUE)
loadings <- pca_object$rotation
loadings
##                                PC1          PC2         PC3          PC4
## radius_mean            -0.36393793  0.313929073 -0.12442759  0.029558858
## texture_mean           -0.15445113  0.147180909  0.95105659  0.008916084
## perimeter_mean         -0.37604434  0.284657885 -0.11408360  0.013458069
## area_mean              -0.36408585  0.304841714 -0.12337786  0.013442682
## smoothness_mean        -0.23248053 -0.401962324 -0.16653247 -0.107802033
## compactness_mean       -0.36444206 -0.266013147  0.05827786 -0.185700413
## concavity_mean         -0.39574849 -0.104285968  0.04114649 -0.166653523
## concave points_mean    -0.41803840 -0.007183605 -0.06855383 -0.072983951
## symmetry_mean          -0.21523797 -0.368300910  0.03672364  0.892998475
## fractal_dimension_mean -0.07183744 -0.571767700  0.11358395 -0.349331790
##                                 PC5          PC6         PC7          PC8
## radius_mean             0.031067022 -0.264180150 -0.04418839 -0.084834062
## texture_mean            0.219922761 -0.032206572  0.02055748  0.007126797
## perimeter_mean          0.005945081 -0.237819464 -0.08336923 -0.089258879
## area_mean               0.019341222 -0.331707454  0.26118796 -0.144609749
## smoothness_mean         0.843745292  0.062225368  0.01129197 -0.170503128
## compactness_mean       -0.240182967  0.005271104 -0.80380484 -0.063980134
## concavity_mean         -0.312533244  0.601467155  0.36713629 -0.449573315
## concave points_mean     0.009180198  0.265613395  0.14131308  0.850918762
## symmetry_mean          -0.112888068 -0.061957003  0.04790201 -0.016455606
## fractal_dimension_mean -0.264878077 -0.567918997  0.34521359  0.065259461
##                                 PC9          PC10
## radius_mean            -0.474425305 -0.6690714888
## texture_mean           -0.004212629  0.0002497826
## perimeter_mean         -0.380167210  0.7404905337
## area_mean               0.747347357 -0.0323589585
## smoothness_mean        -0.005847386  0.0036904058
## compactness_mean        0.218732407 -0.0527527802
## concavity_mean         -0.081170670 -0.0103668020
## concave points_mean     0.022024652 -0.0037475480
## symmetry_mean          -0.009067850  0.0014669472
## fractal_dimension_mean -0.129667491  0.0070573477

3.5 Scree Plot

scree_plot <- fviz_eig(pca_object, addlabels = TRUE, choice = "eigenvalue", ncp = 25) + geom_hline( yintercept = 1, linetype = "dashed", color = "red")
## Warning in geom_bar(stat = "identity", fill = barfill, color = barcolor, :
## Ignoring empty aesthetic: `width`.
scree_plot

Scree plot menunjukkan penurunan nilai eigen yang sangat tajam dari komponen utama ke-1 dan ke-2, kemudian mulai melandai secara signifikan pada komponen ke-3 dan seterusnya. Hal ini mengindikasikan bahwa sebagian besar keragaman data dijelaskan oleh dua komponen utama pertama, sedangkan komponen setelahnya hanya memberikan tambahan informasi yang relatif kecil karena nilai eigen yang semakin menurun dan dibawah 1. Dengan demikian, berdasarkan scree plot, jumlah komponen utama yang optimal untuk dipertahankan adalah dua komponen utama.

3.6 Eigen Value dan Proporsi Keragaman

eigenvalues <- pca_object$sdev^2
summary_table <- data.frame(
  Nilai_Eigen = eigenvalues,
  Proportion = eigenvalues / sum(eigenvalues),
  Cumulative_Proportion = cumsum(eigenvalues / sum(eigenvalues))
)
summary_table[1:2,]
##   Nilai_Eigen Proportion Cumulative_Proportion
## 1    5.478588  0.5478588             0.5478588
## 2    2.518714  0.2518714             0.7997302

Berdasarkan hasil analisis Principal Component Analysis (PCA), diperoleh bahwa data dapat direduksi menjadi dua komponen utama yang mampu menjelaskan sekitar 80% total keragaman.

loadings[, 1:2]
##                                PC1          PC2
## radius_mean            -0.36393793  0.313929073
## texture_mean           -0.15445113  0.147180909
## perimeter_mean         -0.37604434  0.284657885
## area_mean              -0.36408585  0.304841714
## smoothness_mean        -0.23248053 -0.401962324
## compactness_mean       -0.36444206 -0.266013147
## concavity_mean         -0.39574849 -0.104285968
## concave points_mean    -0.41803840 -0.007183605
## symmetry_mean          -0.21523797 -0.368300910
## fractal_dimension_mean -0.07183744 -0.571767700

Nilai masing-masing komponen utama merupakan kombinasi linier dari setiap variabel, dimana koefisiennya seperti pada hasil di atas.

Komponen utama yang terbentuk:
PC1 = - 0.364X1 - 0.154X2 - 0.376X3 - 0.364X4 - 0.232X5 - 0.364X6 - 0.396X7 - 0.418X8 - 0.215X9 - 0.072X10
PC2 = 0.314X1 + 0.147X2 + 0.285X3 + 0.305X4 - 0.402X X5 - 0.266X6 - 0.104X7 - 0.007X8 - 0.368X9 - 0.572X10

4. Kesimpulan

Hasil pengujian asumsi menunjukkan bahwa analisis dapat dilanjutkan. Nilai KMO berada pada kategori memadai yaitu sebesar 0.78 yang menandakan bahwa data cukup untuk dilakukan analisis PCA. Hasil Uji Bartlett juga dinyatakan signifikan (p-value < 0.05), sehingga variabel-variabel pada data berkorelasi dan layak dianalisis menggunakan PCA.

Berdasarkan hasil analisis Principal Component Analysis (PCA), diperoleh bahwa data dapat direduksi menjadi dua komponen utama yang mampu menjelaskan sekitar 80% total keragaman. Komponen utama pertama (PC1) didominasi oleh variabel-variabel ukuran dan bentuk seperti radius_mean, perimeter_mean, area_mean, serta karakteristik ketidakteraturan seperti concavity_mean dan concave_points_mean. Komponen utama kedua (PC2) dipengaruhi oleh variabel terkait tekstur dan kompleksitas permukaan, seperti smoothness_mean dan fractal_dimension_mean.

Secara keseluruhan, PCA berhasil menyederhanakan variabel-variabel yang awalnya saling berkaitan menjadi dua komponen utama yang lebih ringkas namun tetap informatif karena dapat menjelaskan sekitar 80% keragaman data. Hasil ini dapat digunakan untuk analisis lanjutan seperti clustering, visualisasi, atau sebagai variabel input dalam model prediktif dengan kompleksitas lebih rendah tanpa menghilangkan informasi penting dalam data.

5. Daftar Pustaka

https://www.kaggle.com/code/tarkkaanko/pca-principal-component-analysis-cancer-dataset/comments