Pertama import library yang digunakan untuk analisis ini.
library(ggplot2)
## Warning: package 'ggplot2' was built under R version 4.3.3
library(dplyr)
## Warning: package 'dplyr' was built under R version 4.3.3
##
## Attaching package: 'dplyr'
## The following objects are masked from 'package:stats':
##
## filter, lag
## The following objects are masked from 'package:base':
##
## intersect, setdiff, setequal, union
library(factoextra)
## Warning: package 'factoextra' was built under R version 4.3.3
## Welcome! Want to learn more? See two factoextra-related books at https://goo.gl/ve3WBa
Kemudian import data dan menyiapkan data untuk PCA yang mengecualikan data non numerical
data <- read.csv("decathlon-3.csv")
pca_data <- data %>%
select(-c(Athlets, Rank, Points, Competition))
Melakukan analisis PCA
pca_result <- prcomp(pca_data, scale. = TRUE)
Melihat komponen data yang dihasilkan
summary(pca_result)
## Importance of components:
## PC1 PC2 PC3 PC4 PC5 PC6 PC7
## Standard deviation 1.8088 1.3180 1.1853 1.0280 0.82751 0.77412 0.67174
## Proportion of Variance 0.3272 0.1737 0.1405 0.1057 0.06848 0.05993 0.04512
## Cumulative Proportion 0.3272 0.5009 0.6414 0.7471 0.81556 0.87548 0.92061
## PC8 PC9 PC10
## Standard deviation 0.62998 0.46348 0.42688
## Proportion of Variance 0.03969 0.02148 0.01822
## Cumulative Proportion 0.96030 0.98178 1.00000
visualisasi dari variasi
fviz_eig(pca_result)
Berdasarkan tabel hasil PCA diatas dapat ditarik kesimpulan sebagai berikut.
Penentuan Jumlah Komponen Utama
Interpretasi
Biasanya, kita memilih jumlah komponen utama berdasarkan aturan
kumulatif proporsi variansi yang cukup besar, misalnya di atas 70-80%.
Dalam kasus ini, empat komponen utama cukup untuk menjelaskan sekitar
74.71% dari variasi data.
Membuat scatter plot antara komponen pertama dan kedua
pca_scores <- as.data.frame(pca_result$x)
pca_scores$Athlets <- data$Athlets
ggplot(pca_scores, aes(x = PC1, y = PC2, label = Athlets)) +
geom_point(color = "blue", size = 3) +
geom_text(vjust = 1.5, size = 3) +
labs(title = "PCA Scatter Plot (PC1 vs PC2)", x = "PC1", y = "PC2") +
theme_minimal()
Dari plot PCA tersebut (PC1 vs PC2), berikut adalah pola atau klaster yang dapat diidentifikasi.
Distribusi Data
Titik-titik tersebar di seluruh ruang PC1 dan PC2, menunjukkan variasi
yang signifikan dalam data. Ada beberapa titik yang tampak keluar dari
kelompok utama (outliers), seperti Casarsa di bagian atas, Karpov di
kanan bawah, dan Drews di kiri bawah.
Kelompok Terpusat
Sebagian besar titik terletak di sekitar pusat (PC1 dan PC2 mendekati
nol), menunjukkan bahwa kelompok ini memiliki kesamaan karakteristik di
kedua dimensi utama. Nama-nama seperti Bernard, Hernu, dan Warners
berada di pusat distribusi.
Potensi Klaster
Outliers
Beberapa individu, seperti Casarsa (PC2 tinggi), dan Karpov (PC1
tinggi), tampak terpisah jauh dari klaster lainnya. Ini menunjukkan
bahwa mereka memiliki karakteristik unik yang berbeda secara signifikan
dari individu lain.
hubungan antara hasil PCA yang diperoleh dengan variabel/ cabang lomba serta sampel/ atlet yang diperoleh
fviz_pca_var(pca_result, col.var = "cos2", gradient.cols = c("#00AFBB", "#E7B800", "#FC4E07"),
repel = TRUE)
Plot lingkaran korelasi dari PCA ini memberikan wawasan tentang hubungan antar variabel (cabang lomba) dan kontribusinya terhadap dimensi utama (Dim1 dan Dim2):
fviz_pca_biplot(pca_result,
repel = TRUE, # Avoid overlapping text
col.var = "red", # Color for variables
col.ind = "blue", # Color for individuals
title = "PCA Biplot: Athletes and Variables")
Variabel/Cabang Lomba:
Atlet:
berikut komponen utama yang paling berkaitan dengan performa atlet di cabang tertentu
var_contributions <- as.data.frame(pca_result$rotation)
var_contributions
## PC1 PC2 PC3 PC4 PC5
## X100m -0.42829627 0.1419891 -0.15557953 0.03678703 0.36518741
## Long.jump 0.41015201 -0.2620794 0.15372674 -0.09901016 0.04432336
## Shot.put 0.34414444 0.4539470 -0.01972378 -0.18539458 0.13431954
## High.jump 0.31619436 0.2657761 -0.21894349 0.13189684 0.67121760
## X400m -0.37571570 0.4320460 0.11091758 -0.02850297 -0.10597034
## X110m.hurdle -0.41255442 0.1735910 -0.07815576 -0.28290068 0.19857266
## Discus 0.30542571 0.4600244 0.03623770 0.25259074 -0.12667770
## Pole.vault 0.02783081 -0.1368411 0.58361717 -0.53649480 0.39873734
## Javeline 0.15319802 0.2405071 -0.32874217 -0.69285498 -0.36873120
## X1500m -0.03210733 0.3598049 0.65987362 0.15669648 -0.18557094
## PC6 PC7 PC8 PC9 PC10
## X100m -0.29607739 -0.38177608 0.46160211 -0.10475771 0.42428269
## Long.jump 0.30612478 -0.62769317 -0.02101165 -0.48266910 0.08104448
## Shot.put -0.30547299 0.30972542 -0.31393005 -0.42729075 0.39028424
## High.jump 0.46777116 0.09145002 0.12509166 0.24366054 -0.10642724
## X400m 0.33252178 0.12442114 0.21339819 -0.55212939 -0.41399532
## X110m.hurdle 0.09963776 -0.35733030 -0.71111429 0.15013429 -0.09086448
## Discus -0.44937288 -0.42988982 0.03838986 0.15480715 -0.44916580
## Pole.vault -0.26166458 0.09796019 0.17803824 0.08297769 -0.27645138
## Javeline 0.16320268 -0.10674519 0.29614206 0.24732691 0.08777340
## X1500m 0.29826888 -0.08362898 0.01371744 0.30773397 0.42923132
Berdasarkan tabel yang menunjukkan loading dari setiap variabel pada komponen utama (PC), kita dapat menentukan komponen utama yang paling berkaitan dengan performa pada cabang tertentu dengan melihat nilai absolut terbesar dalam setiap kolom PC
urutan atlet yang memiliki performa terbaik
ranking <- pca_scores %>%
select(Athlets, PC1) %>%
arrange(desc(PC1))
ranking
## Athlets PC1
## 1 Karpov 4.56329817
## 2 Sebrle 3.98889511
## 3 Clay 3.87127297
## 4 Macey 2.20605510
## 5 Warners 2.14178935
## 6 Bernard 1.88294288
## 7 KARPOV 1.34154909
## 8 CLAY 1.21983673
## 9 Zsivoczky 0.91378044
## 10 Hernu 0.87812900
## 11 Smith 0.85963151
## 12 SEBRLE 0.78191413
## 13 McMULLEN 0.58030713
## 14 Pogorelov 0.53305497
## 15 Ojaniemi 0.37544985
## 16 WARNERS 0.35251035
## 17 Averyanov 0.34487086
## 18 Nool 0.29168215
## 19 ZSIVOCZKY 0.26843999
## 20 Schoenbeck 0.11302687
## 21 Schwarzl 0.08008379
## 22 Barras 0.00211888
## 23 Drews -0.24563257
## 24 Gomez -0.28633215
## 25 Qi -0.42913561
## 26 Smirnov -0.47856903
## 27 YURKOV -0.57877827
## 28 BERNARD -0.60203609
## 29 Terek -0.67358522
## 30 Korkizoglou -0.94607686
## 31 Parkhomenko -1.05630678
## 32 BARRAS -1.32519011
## 33 Turi -1.52289439
## 34 HERNU -1.52710548
## 35 Karlivans -1.96989702
## 36 MARTINEAU -1.97087543
## 37 NOOL -2.31620003
## 38 Lorenzo -2.37895659
## 39 Uldal -2.53081963
## 40 Casarsa -2.82203064
## 41 BOURGUIGNON -3.93021742
Tabel diatas menunjukkan ranking dari semua atlet dalam dataset, atlet dengan performa terbaik dapat diidentifikasi berdasarkan nilai PC1 yang lebih tinggi yaitu Karpov dengan skor 4.56. yang kemungkinan mencerminkan atribut utama seperti kecepatan atau kekuatan.