Pendahuluan
Principal Component Analysis (PCA) adalah teknik analisis multivariat yang digunakan untuk mengidentifikasi pola dan relasi antar variabel dalam sebuah dataset yang kompleks. PCA mengambil sekelompok variabel dan mentransformasikan mereka menjadi sejumlah komponen baru yang saling bebas secara linear yang disebut sebagai komponen utama (principal components). Setiap komponen utama merupakan kombinasi linier dari variabel asli dan diurutkan berdasarkan besarnya variansi yang dijelaskan oleh setiap komponen.
PCA berguna dalam mengekstraksi informasi penting dari dataset dengan mengurangi dimensi variabel yang ada tanpa mengorbankan banyak informasi. Selain itu, PCA juga dapat digunakan untuk mengidentifikasi korelasi antar variabel dan menghilangkan pengaruh variabel yang tidak penting. Hal ini dapat membantu mempercepat analisis data dan membuat hasil yang lebih mudah dipahami.
Konsep Dasar
Konsep dasar dari PCA adalah mengurangi dimensi variabel yang ada dalam sebuah dataset yang kompleks dengan mentransformasikan variabel-variabel tersebut ke dalam bentuk komponen utama yang saling bebas secara linear. PCA mengambil sebuah matriks data yang terdiri dari n observasi dan p variabel, kemudian melakukan transformasi linier pada data tersebut untuk menghasilkan sejumlah komponen utama baru yang dapat menggambarkan sebagian besar variabilitas dalam dataset.
Secara matematis, PCA bekerja dengan melakukan dekomposisi nilai singular (singular value decomposition/SVD) pada matriks data, sehingga menghasilkan matriks faktor komponen utama. Komponen utama ini diurutkan berdasarkan besarnya variansi yang dijelaskan oleh setiap komponen, dan dapat digunakan untuk merepresentasikan data dalam ruang yang lebih sederhana dan efisien.
Dalam praktiknya, PCA digunakan untuk mempercepat analisis data dengan menghilangkan variabel-variabel yang tidak penting dan mengidentifikasi hubungan antara variabel-variabel yang ada. Dalam hal ini, PCA membantu memperjelas struktur dalam data yang kompleks dan memungkinkan peneliti untuk membuat kesimpulan yang lebih tepat dan efektif.
Secara umum, PCA dapat digunakan untuk berbagai jenis data, termasuk data numerik, data kategorik, dan data ordinal. PCA juga dapat digunakan untuk mengekstraksi fitur penting dari data dalam aplikasi machine learning dan deep learning.
Kelebihan dan Kekurangan
Berikut adalah beberapa kelebihan dan kekurangan PCA:
Kelebihan:
Mengurangi dimensi variabel: PCA membantu mengurangi dimensi variabel dalam dataset yang kompleks, sehingga dapat mempercepat analisis data dan membuat hasil yang lebih mudah dipahami.
Meningkatkan efisiensi: Dengan menghilangkan variabel yang tidak penting dan mengidentifikasi hubungan antara variabel, PCA dapat meningkatkan efisiensi dan akurasi analisis data.
Meningkatkan pemahaman pola dalam data: PCA dapat membantu meningkatkan pemahaman pola dalam data yang kompleks, sehingga memungkinkan pengambilan keputusan yang lebih tepat dan efektif.
Dapat digunakan untuk berbagai jenis data: PCA dapat digunakan untuk berbagai jenis data, termasuk data numerik, data kategori, dan data ordinal.
Kekurangan:
Ketergantungan pada data: PCA sangat bergantung pada data yang dianalisis dan mungkin tidak memberikan hasil yang optimal jika data tidak berdistribusi normal.
Interpretasi yang sulit: Hasil PCA dapat sulit diinterpretasikan karena komponen utama tidak selalu memiliki arti yang jelas dalam konteks data asli.
Kerugian informasi: PCA dapat menyebabkan kerugian informasi yang signifikan jika komponen utama yang dihasilkan tidak dapat menjelaskan sebagian besar variasi dalam data.
Sensitif terhadap skala: PCA sensitif terhadap skala variabel yang diukur, sehingga perlu dilakukan normalisasi skala variabel untuk menghindari efek yang merugikan.
Dalam prakteknya, kelebihan dan kekurangan PCA harus dipertimbangkan dengan cermat untuk memutuskan apakah teknik ini tepat untuk digunakan pada dataset tertentu.
Jenis PCA
Ada beberapa jenis PCA yang dapat digunakan tergantung pada tujuan dan jenis data yang dianalisis, di antaranya:
Principal Component Analysis Standar: Ini adalah metode PCA paling umum yang digunakan untuk mengurangi dimensi variabel pada data numerik. PCA Standar mengasumsikan data berdistribusi normal dan memiliki kovarians diagonal.
Sparse PCA: Sparse PCA bertujuan untuk menghasilkan komponen utama yang lebih jarang (sparse), sehingga hanya beberapa variabel yang terlibat dalam setiap komponen utama. Ini berguna ketika ada banyak variabel dalam data yang mungkin tidak berkontribusi signifikan terhadap variansi total.
Incremental PCA: Incremental PCA digunakan untuk menghitung komponen utama dari dataset yang sangat besar dengan cara memproses bagian-bagian data secara bertahap.
Kernel PCA: Kernel PCA digunakan untuk mengurangi dimensi variabel pada data non-linear atau data yang tidak berdistribusi normal. Ini menciptakan fungsi kernel yang mentransformasikan data ke dalam ruang fitur baru yang mungkin non-linear.
Probabilistic PCA: Probabilistic PCA (pPCA) digunakan ketika data mengandung kebisingan atau data yang tidak berdistribusi normal. Ini mengasumsikan bahwa data dihasilkan dari distribusi normal multivariat dan mengoptimalkan likelihood model ini untuk mendapatkan komponen utama.
Robust PCA: Robust PCA digunakan ketika data mengandung outlier atau noise yang tinggi. Ini mencoba mengisolasi data asli dari noise dan outlier dengan mengoptimalkan fungsi kerugian yang sesuai.
Setiap jenis PCA memiliki kelebihan dan kekurangan tersendiri, dan pemilihan jenis PCA yang tepat tergantung pada sifat data yang dianalisis dan tujuan analisis data.
Terminologi pada PCA
Berikut adalah beberapa terminologi yang sering digunakan pada PCA:
Variabel: Variabel adalah nilai yang diamati atau diukur dalam dataset. Dalam PCA, variabel ini dapat berupa atribut, fitur, atau dimensi dari dataset.
Komponen Utama (Principal Component): Komponen utama merupakan hasil dari transformasi linier pada data yang menghasilkan sebuah vektor baru yang merepresentasikan kombinasi linier dari variabel-variabel asli. Setiap komponen utama ditempatkan secara berurutan dan menggambarkan sebagian besar variasi dalam data. Komponen utama biasanya diurutkan berdasarkan besarnya variansi yang dijelaskan oleh masing-masing komponen.
Variansi: Variansi menggambarkan seberapa jauh titik data tersebar dari nilai rata-rata dalam dataset. Variansi ini merupakan ukuran penting dalam PCA, karena setiap komponen utama menggambarkan sebagian dari total variansi dalam data.
Faktor Beban (Loadings): Faktor beban menggambarkan seberapa kuat variabel berkontribusi pada setiap komponen utama. Faktor beban ini sering digunakan untuk menginterpretasikan arti dari setiap komponen utama.
Skor: Skor adalah nilai numerik yang dihasilkan dari proyeksi data pada setiap komponen utama. Skor ini dapat digunakan untuk membandingkan dan memvisualisasikan data dalam ruang dimensi yang lebih rendah.
Proyeksi: Proyeksi menggambarkan representasi data dalam ruang baru yang dibentuk oleh komponen utama. Proyeksi ini sering digunakan untuk memvisualisasikan pola dalam data yang kompleks.
Eigenvalue: Eigenvalue merupakan besarnya variansi yang dijelaskan oleh masing-masing komponen utama. Semakin besar eigenvalue suatu komponen, maka semakin banyak variansi dalam data yang dijelaskan oleh komponen tersebut.
Variance explained atau varian yang dijelaskan: Persentase variasi data yang dapat dijelaskan oleh komponen utama.
Scree plot: Grafik yang menunjukkan varian yang dijelaskan oleh setiap komponen utama.
Algoritma PCA
Berikut adalah langkah-langkah algoritma PCA secara umum:
Matriks data: PCA dimulai dengan mempersiapkan matriks data yang terdiri dari n observasi (sampel) dan p variabel atau atribut yang diukur pada setiap observasi. Matriks data tersebut akan menjadi input dari PCA.
Standarisasi data: Lakukan normalisasi data untuk memastikan bahwa semua variabel memiliki skala yang sama dan memiliki kontribusi yang setara dalam PCA (mean 0 dan variance 1). Standarisasi data dilakukan dengan mengurangi nilai rata-rata dari setiap variabel dan membagi dengan standar deviasi dari setiap variabel.
Menghitung matriks kovarians: Setelah data telah distandarisasi, matriks kovarians atau matriks korelasi akan dihitung. Matriks kovarians digunakan jika variabel-variabel dalam data memiliki satuan yang sama, sedangkan matriks korelasi digunakan jika variabel-variabel memiliki satuan yang berbeda.
Menghitung eigenvalues dan eigenvectors: Hitung eigenvalues dan eigenvectors dari matriks kovarians. Eigenvectors merepresentasikan arah dari komponen utama dan eigenvalues merepresentasikan jumlah variansi yang dijelaskan oleh masing-masing komponen utama.
Mengurutkan eigenvalues: Urutkan eigenvalues dalam urutan menurun sehingga komponen utama dengan variansi terbesar muncul pertama.
Memilih komponen utama: Setelah eigenvalue dan eigenvector dihitung, komponen utama akan ditentukan dengan mengurutkan eigenvector berdasarkan nilai eigen yang tertinggi. Komponen utama pertama adalah eigenvector dengan nilai eigen tertinggi, komponen utama kedua adalah eigenvector dengan nilai eigen tertinggi kedua, dan seterusnya.
Menghitung faktor beban: Hitung faktor beban (loadings) untuk setiap variabel, yang merupakan koefisien linear yang menghubungkan variabel dengan setiap komponen utama.
Menghitung variansi yang dijelaskan: Setelah nilai muatan dihitung, proses selanjutnya adalah menghitung varian yang dijelaskan oleh setiap komponen utama. Variansi yang dijelaskan menunjukkan seberapa besar variasi data yang dapat dijelaskan oleh setiap komponen utama.
Scree Plot: Scree plot adalah grafik yang menunjukkan varian yang dijelaskan oleh setiap komponen utama. Grafik ini digunakan untuk menentukan jumlah komponen utama yang akan dipertahankan dalam analisis. Jumlah komponen utama yang dipertahankan biasanya didasarkan pada titik di mana penurunan signifikan dari varian yang dijelaskan terlihat pada scree plot.
Transformasi data: Setelah komponen utama dan varian yang dijelaskan telah ditentukan, data dapat diproyeksikan ke dalam ruang yang lebih rendah menggunakan komponen utama yang dipilih. Transformasi data ke dalam ruang dimensi yang lebih rendah dengan mengalikan data asli dengan matriks komponen utama.
Visualisasi data: Visualisasikan data dalam ruang dimensi yang lebih rendah untuk memahami pola dan hubungan yang terdapat dalam data.
Interpretasi hasil: Interpretasikan hasil untuk memahami makna komponen utama dan faktor beban yang terkait dengan data yang dianalisis.
Langkah-langkah di atas adalah langkah umum dalam algoritma PCA. Namun, dalam implementasi sebenarnya, terdapat variasi dalam cara menghitung eigenvalues dan eigenvectors dan dalam cara menginterpretasikan hasil PCA.
Ilustrasi
Tujuan utama dari proyek ini adalah untuk mempresentasikan dan menerapkan metode unsupervised learning untuk Principal Component Analysis (PCA) - metode statistik untuk mengurangi dimensi. PCA digunakan untuk mengekstrak informasi yang signifikan dari tabel data multivariat dan mengekspresikan informasi ini sebagai satu set variabel baru yang disebut komponen utama. Tujuan dari PCA adalah untuk mengidentifikasi arah yang dapat divisualisasikan secara grafis dengan kerugian informasi minimal.
Dalam analisis ini, akan digunakan dataset
decathlon2 dari package
factoextra. Metodologi proyek akan
difokuskan pada: statistik deskriptif dan explanatory data
analysis dari dataset; menghitung PCA dengan prcomp();
mengekstrak eigenvalue dari komponen utama; mengekstrak hasil untuk
individu dan variabel; k-means clustering berdasarkan hasil PCA.
Analisis akan didukung oleh visualisasi yang diperlukan. Hasil dari
proyek ini adalah untuk membedakan atlet dengan performa terbaik,
rata-rata, dan terburuk dalam disiplin olahraga yang disebutkan.
Library
library("ggplot2")
library("ggfortify")
## Warning: package 'ggfortify' was built under R version 4.2.3
library("gridExtra")
library("carData")
library("car")
library("factoextra")
## Welcome! Want to learn more? See two factoextra-related books at https://goo.gl/ve3WBa
library("corrplot")
## corrplot 0.92 loaded
Data
Data yang digunakan pada ilustrasi kali ini adalah dataset demo
decathlon2 dari package
factoextra. Data ini menjelaskan kinerja
atlet selama dua acara olahraga (Desctar dan OlympicG). Ini berisi 27
individu (atlet) yang dijelaskan oleh 13 variabel (cabang olahraga).
Untuk analisis lebih lanjut, akan dipilih individu aktif (baris 1:23)
dan variabel aktif (kolom 1:10) dari dataset decathlon2,
oleh karena itu akan dibuat dataset baru decathlon2.active
untuk melakukan analisis komponen utama. Dataset
decathlon2.active terdiri dari 23 observasi dan 10 variabel
(ditampilkan di bawah).
data(decathlon2)
decathlon2.active <- decathlon2[1:23, 1:10]
head(decathlon2.active)
Explanatory Data Analysis (EDA)
Untuk menyediakan model, diperlukan ringkasan data. Deskripsi variabel (cabang olahraga) adalah sebagai berikut:
X100m- hasil lomba 100 meter diukur dalam detikLong.jump- hasil lompat jauh diukur dalam meterShot.put- hasil lempar lembing diukur dalam meterHigh.jump- hasil lompat tinggi diukur dalam meterX400m- hasil lomba 400 meter diukur dalam detikX110m.hurdle- hasil lomba gawang 110 meter diukur dalam detikDiscus- hasil lempar cakram diukur dalam meterPole.vault- hasil lompat tongkat diukur dalam meterJaveline- hasil lempar lembing diukur dalam meterX1500m- hasil lomba 1500 meter diukur dalam detik
Statistik ringkasan dan histogram di bawah ini menunjukkan distribusi observasi dalam semua variabel numerik. Sumbu horizontal mewakili nilai observasi, sedangkan sumbu vertikal “count” menunjukkan jumlah observasi tertentu untuk setiap nilai.
summary(decathlon2.active)
## X100m Long.jump Shot.put High.jump
## Min. :10.44 Min. :6.800 Min. :12.68 Min. :1.860
## 1st Qu.:10.84 1st Qu.:7.165 1st Qu.:14.17 1st Qu.:1.940
## Median :10.97 Median :7.310 Median :14.65 Median :2.010
## Mean :11.00 Mean :7.350 Mean :14.62 Mean :2.007
## 3rd Qu.:11.23 3rd Qu.:7.525 3rd Qu.:15.14 3rd Qu.:2.095
## Max. :11.64 Max. :7.960 Max. :16.36 Max. :2.150
## X400m X110m.hurdle Discus Pole.vault
## Min. :46.81 Min. :13.97 Min. :37.92 Min. :4.400
## 1st Qu.:48.95 1st Qu.:14.17 1st Qu.:43.74 1st Qu.:4.610
## Median :49.40 Median :14.37 Median :44.75 Median :4.820
## Mean :49.43 Mean :14.53 Mean :45.16 Mean :4.797
## 3rd Qu.:50.02 3rd Qu.:14.94 3rd Qu.:46.93 3rd Qu.:5.000
## Max. :51.16 Max. :15.67 Max. :51.65 Max. :5.320
## Javeline X1500m
## Min. :52.33 Min. :262.1
## 1st Qu.:55.40 1st Qu.:268.8
## Median :57.44 Median :278.1
## Mean :59.11 Mean :277.9
## 3rd Qu.:62.98 3rd Qu.:283.6
## Max. :70.52 Max. :301.5
par(mfrow = c(2, 5))
hist1 <- hist(decathlon2.active$X100m, breaks=10, col = "gray", main = "100 metres",
xlab = "seconds", ylab = "count")
hist2 <- hist(decathlon2.active$Long.jump, breaks=10, col = "gray", main = "Long jump",
xlab = "metres", ylab = "count")
hist3 <- hist(decathlon2.active$Shot.put, breaks=10, col = "gray", main = "Shot put",
xlab = "metres", ylab = "count")
hist4 <- hist(decathlon2.active$High.jump, breaks=10, col = "gray", main = "High jump",
xlab = "metres", ylab = "count")
hist5 <- hist(decathlon2.active$X400m, breaks=10, col = "gray", main = "400 metres",
xlab = "seconds", ylab = "count")
hist6 <- hist(decathlon2.active$X110m.hurdle, breaks=10, col = "gray", main = "110m hurdle",
xlab = "seconds", ylab = "count")
hist7 <- hist(decathlon2.active$Discus, breaks=10, col = "gray", main = "Discus",
xlab = "metres", ylab = "count")
hist8 <- hist(decathlon2.active$Pole.vault, breaks=10, col = "gray", main = "Pole vault",
xlab = "metres", ylab = "count")
hist9 <- hist(decathlon2.active$Javeline, breaks=10, col = "gray", main = "Javeline",
xlab = "metres", ylab = "count")
hist10 <- hist(decathlon2.active$X1500m, breaks=10, col = "gray", main = "1500 metres",
xlab = "seconds", ylab = "count")
Histogram untuk hasil lomba 100 meter dan 400 meter menunjukkan skewness negatif. Ekor sebelah kiri menunjukkan bahwa sebagian besar observasi terkonsentrasi pada hasil waktu yang lebih tinggi. Histogram untuk hasil lomba gawang 110 meter, lempar lembing, dan 1500 meter menunjukkan skewness positif. Ekor sebelah kanan mengimplikasikan bahwa observasi terpusat di sekitar nilai yang lebih rendah (hasil waktu yang lebih pendek dalam hal lomba dan hasil jarak yang lebih pendek dalam lempar lembing). Variabel lain memiliki distribusi simetris (terpusat di sekitar median) atau observasi didistribusikan sepanjang sumbu x.
Metodologi PCA - Visualisasi dan Interpretasi
Langkah pertama dari analisis ini difokuskan pada perhitungan PCA
menggunakan fungsi prcomp(). Perintah ini memungkinkan
untuk: menyesuaikan data dengan pusat 0 dengan menggeser variabel;
menyesuaikan varian menjadi 1 unit; standarisasi data yang dibutuhkan
karena variabel diukur dalam skala yang berbeda. Selain itu, eigenvalues
diekstraksi dengan menggunakan fungsi get_eigenvalue().
Eigenvalues mengukur jumlah variasi yang dipegang oleh setiap komponen
utama (PC). Mereka dievaluasi untuk menentukan jumlah komponen utama
yang harus dipertimbangkan.
res.pca <- prcomp(decathlon2.active, scale = TRUE)
print(res.pca)
## Standard deviations (1, .., p=10):
## [1] 2.0308159 1.3559244 1.1131668 0.9052294 0.8375875 0.6502944 0.5500742
## [8] 0.5238988 0.3939758 0.3492435
##
## Rotation (n x k) = (10 x 10):
## PC1 PC2 PC3 PC4 PC5
## X100m -0.418859080 0.13230683 -0.27089959 0.03708806 -0.2321476
## Long.jump 0.391064807 -0.20713320 0.17117519 -0.12746997 0.2783669
## Shot.put 0.361388111 -0.06298590 -0.46497777 0.14191803 -0.2970589
## High.jump 0.300413236 0.34309742 -0.29652805 0.15968342 0.4807859
## X400m -0.345478567 -0.21400770 -0.25470839 0.47592968 0.1240569
## X110m.hurdle -0.376265119 0.01824645 -0.40325254 -0.01866477 0.2676975
## Discus 0.365965721 -0.03662510 -0.15857927 0.43636361 -0.4873988
## Pole.vault -0.106985591 -0.59549862 -0.08449563 -0.37447391 -0.2646712
## Javeline 0.210864329 -0.28475723 -0.54270782 -0.36646463 0.2361698
## X1500m 0.002106782 -0.57855748 0.19715884 0.49491281 0.3142987
## PC6 PC7 PC8 PC9 PC10
## X100m 0.054398099 -0.16604375 -0.19988005 -0.76924639 0.12718339
## Long.jump -0.051865558 -0.28056361 -0.75850657 -0.13094589 0.08509665
## Shot.put -0.368739186 -0.01797323 0.04649571 0.12129309 0.62263702
## High.jump -0.437716883 0.05118848 0.16111045 -0.28463225 -0.38244596
## X400m -0.075796432 0.52012255 -0.44579641 0.20854176 -0.09784197
## X110m.hurdle 0.004048005 -0.67276768 -0.01592804 0.41058421 -0.04475363
## Discus 0.305315353 -0.25946615 -0.07550934 0.03391600 -0.49418361
## Pole.vault -0.503563524 -0.01889413 0.06282691 -0.06540692 -0.39288155
## Javeline 0.556821016 0.24281145 0.10086127 -0.10268134 -0.01103627
## X1500m 0.064663250 -0.20245828 0.37119711 -0.25950868 0.17991689
summary(res.pca)
## Importance of components:
## PC1 PC2 PC3 PC4 PC5 PC6 PC7
## Standard deviation 2.0308 1.3559 1.1132 0.90523 0.83759 0.65029 0.55007
## Proportion of Variance 0.4124 0.1839 0.1239 0.08194 0.07016 0.04229 0.03026
## Cumulative Proportion 0.4124 0.5963 0.7202 0.80213 0.87229 0.91458 0.94483
## PC8 PC9 PC10
## Standard deviation 0.52390 0.39398 0.3492
## Proportion of Variance 0.02745 0.01552 0.0122
## Cumulative Proportion 0.97228 0.98780 1.0000
eig.val<-get_eigenvalue(res.pca)
eig.val
fviz_eig(res.pca, col.var="blue")
Berdasarkan tingkat pentingnya komponen, terlihat bahwa dua PC pertama memiliki nilai tertinggi untuk proporsi variasi. Pernyataan ini juga dibuktikan oleh pengukuran eigenvalues. Eigenvalues besar untuk PC pertama dan kecil untuk PC selanjutnya, yang berarti bahwa PC pertama sesuai dengan arah dengan jumlah variasi maksimum dalam kumpulan data. Jumlah dari semua eigenvalues memberikan varians total sebesar 10. Dalam hal plot pencar, eigenvalue pertama menjelaskan 41,24% variasi, sedangkan yang kedua 18,385%. Oleh karena itu, 59,627% variasi dijelaskan oleh kedua eigenvalues pertama bersama-sama, yang merupakan indikator yang tepat untuk analisis lebih lanjut.
PCA Results for Variables
Hasil PCA dapat dinilai dengan mempertimbangkan variabel (cabang
olahraga) dan individu (atlet). Pertama-tama, akan dilakukan ekstraksi
hasil untuk variabel. Untuk tujuan itu, get_pca_var()
digunakan untuk menyediakan daftar matriks yang berisi semua hasil untuk
variabel yang aktif (koordinat, korelasi antara variabel dan sumbu,
kosinus kuadrat, dan kontribusi).
var <- get_pca_var(res.pca)
var
## Principal Component Analysis Results for variables
## ===================================================
## Name Description
## 1 "$coord" "Coordinates for the variables"
## 2 "$cor" "Correlations between variables and dimensions"
## 3 "$cos2" "Cos2 for the variables"
## 4 "$contrib" "contributions of the variables"
Cos2 adalah cosine kuadrat (koordinat kuadrat) dan berkaitan dengan
kualitas representasi variabel. Cos2 dari variabel pada semua dimensi
menggunakan package corrplot ditampilkan di bawah ini,
serta diagram batang dari cos2 variabel menggunakan fungsi
fviz_cos2().
head(var$cos2)
## Dim.1 Dim.2 Dim.3 Dim.4 Dim.5
## X100m 0.7235641 0.0321836641 0.09093628 0.0011271597 0.03780845
## Long.jump 0.6307229 0.0788806285 0.03630798 0.0133147506 0.05436203
## Shot.put 0.5386279 0.0072938636 0.26790749 0.0165041211 0.06190783
## High.jump 0.3722025 0.2164242070 0.10895622 0.0208947375 0.16216747
## X400m 0.4922473 0.0842034209 0.08039091 0.1856106269 0.01079698
## X110m.hurdle 0.5838873 0.0006121077 0.20149984 0.0002854712 0.05027463
## Dim.6 Dim.7 Dim.8 Dim.9 Dim.10
## X100m 1.251375e-03 0.0083423353 1.096563e-02 0.091848077 0.0019729565
## Long.jump 1.137570e-03 0.0238179990 1.579114e-01 0.002661478 0.0008832459
## Shot.put 5.749878e-02 0.0000977451 5.933633e-04 0.002283554 0.0472853495
## High.jump 8.102269e-02 0.0007928428 7.124302e-03 0.012574981 0.0178400831
## X400m 2.429504e-03 0.0818566479 5.454664e-02 0.006750333 0.0011676349
## X110m.hurdle 6.929502e-06 0.1369534023 6.963371e-05 0.026166378 0.0002442942
library("corrplot")
corrplot(var$cos2, is.corr=FALSE)
fviz_cos2(res.pca, choice = "var", axes = 1:2)
Selain itu, kualitas representasi variabel dapat ditampilkan pada peta faktor, di mana nilai cos2 berbeda oleh warna gradien. Variabel dengan nilai cos2 rendah akan diwarnai “darkorchid4”, nilai cos2 sedang - “gold”, nilai cos2 tinggi - “darkorange”. Variabel yang berkolerasi positif dikelompokkan bersama-sama, sedangkan variabel yang berkolerasi negatif ditempatkan di sisi berlawanan dari asal plot. Jarak antara variabel dan asal mengukur kualitas variabel pada peta faktor. Variabel yang jauh dari asal direpresentasikan dengan baik pada peta faktor.
fviz_pca_var(res.pca,
col.var = "cos2", # Color by the quality of representation
gradient.cols = c("darkorchid4", "gold", "darkorange"),
repel = TRUE
)
X100m, Long.jump dan
Pole.vault memiliki nilai cos2 yang sangat tinggi, yang
menunjukkan representasi variabel yang baik pada komponen utama. Dalam
hal ini, variabel ditempatkan dekat dengan lingkaran pada lingkaran
korelasi. Javeline memiliki cos2 terendah, yang menunjukkan
bahwa variabel tersebut tidak sepenuhnya direpresentasikan oleh PC.
Dalam hal ini, variabel tersebut dekat dengan pusat lingkaran - variabel
tersebut kurang penting untuk komponen pertama.
Contrib adalah kontribusi variabel. Fungsi
fviz_contrib() digunakan untuk menggambar diagram batang
kontribusi variabel untuk dimensi paling signifikan, yaitu PC1 dan
PC2.
# Contributions of variables to PC1
a<-fviz_contrib(res.pca, choice = "var", axes = 1)
# Contributions of variables to PC2
b<-fviz_contrib(res.pca, choice = "var", axes = 2)
grid.arrange(a,b, ncol=2, top='Contribution of the variables to the first two PCs')
Garis putus-putus merah pada grafik di atas menunjukkan kontribusi
rata-rata yang diharapkan. Untuk suatu komponen tertentu, variabel
dengan kontribusi yang melebihi batas ini dianggap penting dalam
memberikan kontribusi pada komponen tersebut. Dapat dilihat bahwa
variabel X100m, Long.jump, dan
Pole.vault memberikan kontribusi paling banyak pada kedua
dimensi.
PCA Results for Individuals
Hasilnya, untuk individu (atlet) akan diekstraksi menggunakan fungsi
get_pca_ind(). Sama seperti variabel, ini memberikan daftar
matriks yang berisi semua hasil untuk individu (koordinat, korelasi
antara individu dan sumbu, kosinus persegi, dan kontribusi). Untuk
individu, analisis akan difokuskan pada cos2 dan kontribusi individu ke
dua komponen utama pertama (PC1 dan PC2).
ind <- get_pca_ind(res.pca)
ind
## Principal Component Analysis Results for individuals
## ===================================================
## Name Description
## 1 "$coord" "Coordinates for the individuals"
## 2 "$cos2" "Cos2 for the individuals"
## 3 "$contrib" "contributions of the individuals"
fviz_pca_ind(res.pca,
col.ind = "cos2", # Color by the quality of representation
gradient.cols = c("darkorchid4", "gold", "darkorange"),
repel = TRUE
)
BOURGUIGNON, Macey, Karpov dan Clay memiliki nilai cos2 yang sangat tinggi, yang mengimplikasikan representasi yang baik dari individu-individu tersebut pada komponen utama - mereka ditempatkan dekat dengan lingkaran korelasi. YURKOV, Pogorelov, Barras dan McMULLEN memiliki nilai cos2 yang paling rendah, yang menunjukkan bahwa mereka tidak direpresentasikan dengan baik oleh komponen utama - mereka dekat dengan pusat lingkaran.
# Total contribution on PC1 and PC2
fviz_contrib(res.pca, choice = "ind", axes = 1:2)
Berdasarkan posisi garis putus-putus merah (kontribusi rata-rata), individu BOURGUIGNON, Karpov, dan Clay memberikan kontribusi terbesar untuk kedua dimensi.
Ringkasan analisis PCA di atas untuk variabel (cabang olahraga) dan
individu (atlet) ditampilkan dalam plot korelasi (autoplot) dari package
ggfortify dengan referensi dimensi 1 dan 2.
autoplot(res.pca, loadings=TRUE, loadings.colour='darkorchid4', loadings.label=TRUE, loadings.label.size=3)
Final Results and Analysis
Tujuan dari proyek ini adalah untuk membedakan atlet-atlet mana yang
mendapatkan hasil terbaik di antara seluruh kelompok. Sejauh ini,
Principal Component Analysis (PCA) telah dilakukan untuk
variabel (cabang olahraga) dan individu (atlet) dengan menggunakan
perhitungan prcomp(), ekstraksi eigenvalue, cosinus
kuadrat, dan kontribusi. Mengingat PC yang dihitung, berikutnya akan
dirangkum ke dalam kelompok-kelompok melalui metode pengelompokan
k-means. Untuk tujuan itu, akan digunakan fungsi eclust()
dengan asumsi 4 kelompok dan autoplot() untuk observasi
2D.
kmeans<-eclust(decathlon2.active, k=4)
autoplot(res.pca, data=kmeans, colour="cluster")
Klaster yang terdekat dengan asal (biru) menunjukkan atlet dengan hasil terbaik dalam cabang olahraga. Klaster ungu menunjukkan atlet dengan hasil rata-rata, sedangkan klaster lainnya (hijau dan merah) sesuai dengan atlet terburuk.
Referensi
Szczęsna, K. (February 5, 2022). Principal Component Analysis (PCA). Retrieved from: https://rpubs.com/KarolinaSzczesna/862710