PCA Using R : Quick Script

Lathifah Aliya Pratiwi
6 min readDec 29, 2021

--

Hi Data Esnthusiast….!!!

PCA atau Principal Component Analysis atau dalam bahasa Indonesia Analisis Komponen Utama adalah teknik yang digunakan untuk menyederhanakan suatu data, dengan cara mentransformasikan data secara linier sehingga terbentuk sistem koordinat baru dengan varians maksimum.

PCA memungkinkan kita untuk meringkas dan memvisualisasikan informasi dalam kumpulan data yang berisi individu/pengamatan yang dijelaskan oleh beberapa variabel kuantitatif yang saling berkorelasi.

PCA digunakan untuk mengekstrak informasi penting dari tabel data multivariat dan untuk mengekspresikan informasi ini sebagai kumpulan beberapa variabel baru dimana sering disebut sebagai komponen utama.

Tujuan PCA : mengidentifikasi komponen dimana variasi data dalam data maksimal, mengurangi dimensi daya multivariat menjadi 2 atau 3 komponen utama yang dapat divisualisasikan secara grafis.

YUUKK kita MULAIIII…..!!!

Teman-teman buka aplikasi R, lalu selanjutnya kita menginstall package “FactoMiner” dan “factoextra” dan aktifkan package tersebut dengan menggunakan perintah sebagai berikut .

> install.packages("FactoMiner")
> install.packages("factoextra")
> library(FactoMiner)
> library(factoextra)

kemudian pada bab ini kita hanya akan menggunakan data yang berasal dari package tersebut yaitu data “decathlon2” dapat dipanggil dengan menggunakan syntax berikut

> data(decathlon2)
> head(decathlon2)#memanggil 5 data teratas
> View(decathlon2)#melihat keseluruhan data
Tampilan Variabel Decathlon2

keterangan data :

- warna biru muda (individu aktif) : individu yang digunakan selama analisis PCA
- warna biru tua (individu tambahan) : individu yang akan diprediksi menggunkan informasi dan parameter PCA yang diperoleh dari individu aktif
- warna merah muda (variabel aktif) : digunakan untuk analisis PCA
- wara merah dan hijau (variabel kontinu tambahan)

lalu selanjutnya ita mulai dengan menetapkan individu dan variabel aktif untuk melakukan analisis PCA dengan menggunakan syntax berikut :

> decathlon2.active <- decathlon2[1:23, 1:10] 
> head(decathlon2.active[, 1:6])

maka akan muncul hasil sebagai berikut :

Decalathon2 Active

kemudian dilakukan Data Standardization, langkah ini sangat direkomendasikan ketika variabel diukur dalam skala yang berbeda (misalnya : kilogram, kilometer, sentimeter,…) jika tidak, output akan sangat terpengaruh. Tujuannya : untuk membuat variabel sebanding. Standarisasi Data adalah pendekatan yang digunakan dalam analisis data ekpresi gen sebelum PCA dan analisis clustering.

Dalam hal ini, secara default fungsi PCA() menstandarisasi data secara otomatis jadi tidak diperlukan transformasi sebelum PCA, namun dapat menggunakan syntax sebagai berikut :

> res.pca <- PCA(decathlon2.active, graph = FALSE)
> print(res.pca)#output function PCA

dari syntax tersebut menghasilkan output sebagai berikut :

output res.pca

Objek yang dibuat dengan menggunakan fungsi PCA() berisi banyak informasi yang ditemukan di banyak daftar dan matriks yang berbeda. Nilai-nilai dijelaskan dibagian selanjutnya :

Eigenvalues/Variances nilai ini digunakan untuk mengukur jumlah variasi yang dipertahankan oleh setiap komponen utama. Untuk mnegetahui nilai Eigenvalues dapat menggunakan perintah berikut.

> eig.val <- get_eigenvalue(res.pca) 
> eig.val

kemudian dihasilkan output sebagai berikut.

Hasil Eigenvalues

Jumlah semua nilai eigen memberikan total varians 10. Proporsi variasi yang dijelaskan oleh setiap nilai eigen diberikan di kolom kedua. Misalnya 4.124 dibagi 10 maka akan sama dengan 0.4124 dimana sekitar 41.24% variasi dijelaskan nilai eigen pertama. Sedangkan presentase kumulatif diperoleh dari penjumlahan nilai berurutan misalnya 41.24% + 18.385% = 59.627%, yang dapat diartikan bahwa variasi dapat dijelaska oleh dua nilai eigen tersebut.

Kita juga dapat membatasi jumlah komponen ke angka yang menyumbang sebagian kecil dari total varians, misalnya kita puas dengan 70% total varians yang dijelaskan. Sayangnya, tidak ada cara objektif yang diterima dengan baik untuk memutuskan berapa banyak komponen utama yang cukup. Ini akan tergantung pada bidang aplikasi tertentu dan kumpulan data spesifik. Dalam praktiknya, kita cenderung melihat beberapa komponen utama pertama untuk menemukan pola yang menarik dalam data.

Metode alternatif untuk menentukan jumlah komponen utama adalah dengan melihat Scree Plot, yaitu plot nilai eigen yang diurutkan dari yang terbesar ke yang terkecil. Jumlah komponen ditentukan pada titik, di mana nilai eigen yang tersisa semuanya relatif kecil dan berukuran sebanding (Jollife 2002, Peres-Neto, Jackson, dan Somers (2005))

> fviz_eig(res.pca, addlabels = TRUE, ylim = c(0, 50))

dari syntax tersebut didapatkan hasil sebagai berikut.

Hasil Scree Plot

Dari hasil plot Scree kita mungkin ingin berhenti pada komponen utama kelima yaitu 87% varians yang terkandung dalam data yang disimpan oleh lima komponen utama pertama.

Kemudian metode sederhana yang digunakan untuk mengekstrak hasil untuk variabel dari output PCA adalah menggunakan fungsi get_pca_var(). Fungsi ini menyediakan daftar matriks yang berisi semua hasil untuk variabel aktif.

> var <- get_pca_var(res.pca)
> var
# Coordinates
> head(var$coord)
# Cos2: quality on the factore map
> head(var$cos2)
# Contributions to the principal components
> head(var$contrib)
# Coordinates of variables
> head(var$coord, 4)
# Color by cos2 values: quality on the factor map
> fviz_pca_var(res.pca, col.var = "cos2", gradient.cols = c("#00AFBB", "#E7B800", "#FC4E07"), repel = TRUE )# Avoid text overlapping
Variabel PCA

Konstribusi variabel dalam komponen utama yang diberikan dinyatakan dalam presentase. Variabel yang berkorelasi dengan PC1 (yaitu Dim.1) dan PC2 (yaitu Dim.2) adalah yang paling penting dalam menjelaskan variabilitas dalam kumpulan data. Sedangkan variabel yang tidak berkorelasi maka dihilangkan untuk menyederhanakan analisis keseluruhan.

Kontribusi variabel dapat diekstraksi sebagai berikut: Fungsi fviz_contrib() [paket factoextra] dapat digunakan untuk menggambar plot batang kontribusi variabel. Jika data Anda berisi banyak variabel, Anda dapat memutuskan untuk hanya menampilkan variabel yang berkontribusi teratas. Kode R di bawah ini menunjukkan 10 variabel teratas yang berkontribusi pada komponen utama:

> head(var$contrib, 4)
# Contributions of variables to PC1
> fviz_contrib(res.pca, choice = "var", axes = 1, top = 10)
# Contributions of variables to PC2
> fviz_contrib(res.pca, choice = "var", axes = 2, top = 10)
#contributions of variable PC1 and PC2
> fviz_contrib(res.pca, choice = "var", axes = 1:2, top = 10)
Contribution of Variable to Dim 1–2

Garis putus-putus merah pada grafik Contribution of Variable to Dim 1–2 menunjukkan konstribusi rata-rata yang diharapkan. Jika konstribusi variabel seragam, nilai yang diharapkan adalah 1/panjang variabel = 1/10 = 10%. Terlihat bahwa variabel X100m, Long.jump, dan Pole.vault membrikan konstribusi yang paling besar.

okehh… sampai disini dulu pembahasan terkait PCA using R, kita lanjutkan di next session… Sampai Jumpa di pembahasan selanjutnya.

Happy Learning Data Enthusiast…!!!

Referensi :

Abdi, Hervé, and Lynne J. Williams. 2010. “Principal Component Analysis.” John Wiley and Sons, Inc. WIREs Comp Stat 2: 433–59. http://staff.ustc.edu.cn/~zwp/teach/MVA/abdi-awPCA2010.pdf.

Husson, Francois, Sebastien Le, and Jérôme Pagès. 2017. Exploratory Multivariate Analysis by Example Using R. 2nd ed. Boca Raton, Florida: Chapman; Hall/CRC. http://factominer.free.fr/bookV2/index.html.

Jollife, I.T. 2002. Principal Component Analysis. 2nd ed. New York: Springer-Verlag. https://goo.gl/SB86SR.

Kaiser, Henry F. 1961. “A Note on Guttman’s Lower Bound for the Number of Common Factors.” British Journal of Statistical Psychology 14: 1–2.

Peres-Neto, Pedro R., Donald A. Jackson, and Keith M. Somers. 2005. “How Many Principal Components? Stopping Rules for Determining the Number of Non-Trivial Axes Revisited.” British Journal of Statistical Psychology 49: 974–97.

--

--

Lathifah Aliya Pratiwi
Lathifah Aliya Pratiwi

No responses yet