data <- read.csv("decathlon-3.csv")
# Periksa Tipe Data Kolom
str(data)
## 'data.frame': 41 obs. of 14 variables:
## $ Athlets : chr "SEBRLE" "CLAY" "KARPOV" "BERNARD" ...
## $ X100m : num 11 10.8 11 11 11.3 ...
## $ Long.jump : num 7.58 7.4 7.3 7.23 7.09 7.6 7.3 7.31 6.81 7.56 ...
## $ Shot.put : num 14.8 14.3 14.8 14.2 15.2 ...
## $ High.jump : num 2.07 1.86 2.04 1.92 2.1 1.98 2.01 2.13 1.95 1.86 ...
## $ X400m : num 49.8 49.4 48.4 48.9 50.4 ...
## $ X110m.hurdle: num 14.7 14.1 14.1 15 15.3 ...
## $ Discus : num 43.8 50.7 49 40.9 46.3 ...
## $ Pole.vault : num 5.02 4.92 4.92 5.32 4.72 4.92 4.42 4.42 4.92 4.82 ...
## $ Javeline : num 63.2 60.1 50.3 62.8 63.4 ...
## $ X1500m : num 292 302 300 280 276 ...
## $ Rank : int 1 2 3 4 5 6 7 8 9 10 ...
## $ Points : int 8217 8122 8099 8067 8036 8030 8004 7995 7802 7733 ...
## $ Competition : chr "Decastar" "Decastar" "Decastar" "Decastar" ...
# Menghapus Kolom Non-Numerik
data_numeric <- data[, sapply(data, is.numeric)]
# Menjalankan PCA Setelah Membersihkan Data
# Standarisasi data
data_scaled <- scale(data_numeric)
# Menjalankan PCA
pca_result <- prcomp(data_scaled)
# Melihat ringkasan hasil PCA
summary(pca_result)
## Importance of components:
## PC1 PC2 PC3 PC4 PC5 PC6 PC7
## Standard deviation 2.1815 1.3191 1.1895 1.06385 0.92841 0.77931 0.71446
## Proportion of Variance 0.3966 0.1450 0.1179 0.09431 0.07183 0.05061 0.04254
## Cumulative Proportion 0.3966 0.5416 0.6595 0.75380 0.82563 0.87624 0.91878
## PC8 PC9 PC10 PC11 PC12
## Standard deviation 0.64116 0.4850 0.43286 0.37545 0.00735
## Proportion of Variance 0.03426 0.0196 0.01561 0.01175 0.00000
## Cumulative Proportion 0.95303 0.9726 0.98825 1.00000 1.00000
# Memuat paket factoextra
library(factoextra)
## Warning: package 'factoextra' was built under R version 4.3.3
## Loading required package: ggplot2
## Warning: package 'ggplot2' was built under R version 4.3.3
## Welcome! Want to learn more? See two factoextra-related books at https://goo.gl/ve3WBa
# Visualisasi eigenvalues dengan angka proporsi variasi
fviz_eig(pca_result, addlabels = TRUE)
Berdasarkan hasil PCA yang diperoleh, dapat disimpulkan sebagai berikut:
Dari hasil ini, dapat dilihat bahwa empat komponen utama pertama cukup efektif dalam menjelaskan sebagian besar variasi dalam data, dengan 75.4% variasi terjelaskan.
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 = "orange", size = 3) +
geom_text(vjust = 1.5, size = 3) +
labs(title = "Scatter Plot PC1 dan PC2", x = "PC1", y = "PC2") +
theme_minimal()
Berdasarkan plot PCA (PC1 vs PC2), berikut adalah pola atau klaster yang dapat diidentifikasi:
Distribusi Data:
Titik-titik data tersebar luas di ruang PC1 dan PC2, menunjukkan adanya variasi signifikan dalam dataset.
Beberapa titik terlihat sebagai outlier, seperti Casarsa di bagian atas, Karpov di kanan bawah, dan Drews di kiri bawah.
Kelompok Terpusat:
Sebagian besar titik terletak dekat dengan pusat (nilai PC1 dan PC2 mendekati nol), menunjukkan kesamaan karakteristik di kedua komponen utama.
Nama-nama seperti Bernard, Hernu, dan Warners berada di sekitar pusat distribusi.
Potensi Klaster:
Kelompok 1: Titik di kiri bawah (PC1 negatif, PC2 negatif), seperti Lorenzo, Nool, dan Drews, membentuk klaster terpisah.
Kelompok 2: Titik di kanan atas (PC1 positif, PC2 positif), seperti Sebrie, Clay, dan Macey, menunjukkan karakteristik yang mirip satu sama lain.
Kelompok 3: Titik-titik di tengah (PC1 dan PC2 sekitar nol), seperti McMullen, Pogorelov, dan Zsivoczky, kemungkinan merupakan kelompok campuran dengan variasi moderat.
Outliers:
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):
Variabel yang memiliki arah yang sama (vektor yang berdekatan) menunjukkan korelasi positif yang kuat. Misalnya, Shot put dan Discus saling terkait erat, kemungkinan karena kedua cabang lomba ini mengandalkan kekuatan fisik yang serupa. X100m, X110m hurdle, dan X400m juga terlihat berdekatan, yang mengindikasikan bahwa ketiganya mungkin melibatkan elemen kecepatan atau daya tahan yang serupa.
Variabel yang memiliki sudut 90° atau hampir tegak lurus satu sama lain menunjukkan ketidakhadiran korelasi. Sebagai contoh, Pole vault (lompat galah) yang hampir tegak lurus dengan Shot put menunjukkan bahwa kedua cabang lomba ini tidak saling berhubungan langsung dalam hal atribut atlet.
Variabel yang berlawanan arah (vektor yang berseberangan) menunjukkan korelasi negatif.
var_contributions <- as.data.frame(pca_result$rotation)
var_contributions
## PC1 PC2 PC3 PC4 PC5
## X100m -0.32462717 0.119492960 -0.12979024 0.193682783 -0.55372513
## Long.jump 0.34651451 -0.252373927 0.15320763 0.006786627 0.05113882
## Shot.put 0.28038448 0.464134267 -0.01675278 0.102802458 0.07852634
## High.jump 0.26949298 0.272694627 -0.20103208 -0.081391780 -0.43408038
## X400m -0.31872084 0.420421416 0.11054773 0.083376737 0.08029405
## X110m.hurdle -0.32245880 0.155406459 -0.06813869 0.384288656 -0.12016034
## Discus 0.24267251 0.468984856 0.04593231 -0.256786415 -0.10486940
## Pole.vault 0.06639577 -0.152842199 0.59203331 0.553682094 -0.10958743
## Javeline 0.14621541 0.244033088 -0.32827248 0.562735916 0.46473483
## X1500m -0.04809361 0.355628523 0.65725761 -0.179152259 0.12352230
## Rank -0.35809724 0.044808449 -0.08343169 -0.232757919 0.46750528
## Points 0.45001821 0.001182155 -0.05290784 0.123174214 0.04991079
## PC6 PC7 PC8 PC9 PC10
## X100m -0.240803882 0.23056831 0.20958724 -0.29129933 0.37165622
## Long.jump 0.274332403 0.46820138 -0.31831629 -0.57709767 0.15096211
## Shot.put -0.182612747 -0.50365024 -0.20802988 -0.26031758 0.48848564
## High.jump 0.651112942 -0.19616347 0.09813379 0.09951607 -0.13960185
## X400m 0.273142102 0.08639320 0.27521164 -0.45919946 -0.32284775
## X110m.hurdle 0.146268836 0.05358679 -0.78289620 0.17799890 -0.12784110
## Discus -0.501502634 0.28052445 -0.16157768 -0.03046762 -0.47136008
## Pole.vault -0.101974007 -0.30693150 0.12253332 -0.09138528 -0.28523734
## Javeline 0.038822555 0.33705941 0.24720861 0.18973840 0.07014143
## X1500m 0.208527418 0.23886451 0.02545397 0.32736168 0.35138431
## Rank 0.080953679 -0.27612748 -0.10068613 -0.31311802 -0.08499686
## Points -0.003256008 -0.07303511 0.01240536 -0.10676031 -0.14575766
## PC11 PC12
## X100m 0.34559199 -0.147905524
## Long.jump 0.05237125 0.189026962
## Shot.put -0.19160980 0.124753141
## High.jump 0.27727654 0.198025401
## X400m -0.45287687 -0.134309796
## X110m.hurdle -0.02130576 -0.139414960
## Discus 0.17724887 0.176874693
## Pole.vault 0.22822944 0.204288564
## Javeline 0.17210267 0.178571481
## X1500m 0.17004902 -0.176446579
## Rank 0.62598240 0.001173757
## Points 0.15741548 -0.845043599
Berdasarkan tabel yang menunjukkan kontribusi setiap variabel pada komponen utama (loading), kita dapat mengidentifikasi komponen utama yang paling berkaitan dengan performa atlet di cabang tertentu dengan melihat nilai absolut terbesar dalam setiap kolom PC:
PC1: Komponen ini paling relevan dengan cabang yang melibatkan kecepatan, seperti X100m, Long jump, dan X110m hurdle.
PC2: Komponen ini paling relevan dengan cabang yang mengandalkan kekuatan, seperti Shot put, Discus, dan X400m.
PC3: Komponen ini paling relevan dengan cabang yang membutuhkan stamina atau daya tahan, seperti Javelin dan X1500m.
PC4: Komponen ini paling relevan dengan cabang yang memerlukan keterampilan teknis tinggi, seperti High jump dan Pole vault.
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
ranking <- pca_scores %>%
select(Athlets, PC1) %>%
arrange(desc(PC1))
ranking
## Athlets PC1
## 1 Karpov 5.02951615
## 2 Sebrle 5.02679351
## 3 Clay 4.71620245
## 4 Macey 2.69065591
## 5 Warners 2.50601048
## 6 Bernard 1.88968799
## 7 KARPOV 1.58033597
## 8 CLAY 1.53830698
## 9 SEBRLE 1.48663090
## 10 Zsivoczky 1.43851681
## 11 Hernu 1.28296373
## 12 Nool 0.84244555
## 13 WARNERS 0.62319983
## 14 Pogorelov 0.57181807
## 15 McMULLEN 0.56862950
## 16 Smith 0.51395868
## 17 ZSIVOCZKY 0.41633620
## 18 Schwarzl 0.33669577
## 19 Schoenbeck 0.20514510
## 20 Averyanov 0.13296192
## 21 Ojaniemi 0.11565483
## 22 BERNARD 0.08140940
## 23 Barras 0.05971819
## 24 YURKOV -0.03875393
## 25 Smirnov -0.60431714
## 26 Drews -0.61669294
## 27 Qi -0.71638343
## 28 Gomez -0.89119582
## 29 Terek -1.08031441
## 30 Parkhomenko -1.29882031
## 31 BARRAS -1.42728186
## 32 HERNU -1.48735822
## 33 MARTINEAU -1.66592660
## 34 Korkizoglou -2.10609055
## 35 Turi -2.15694999
## 36 NOOL -2.28270399
## 37 Karlivans -2.77464623
## 38 Lorenzo -3.01332470
## 39 Uldal -3.44856326
## 40 Casarsa -3.91388666
## 41 BOURGUIGNON -4.13038386
Tabel di atas menunjukkan peringkat semua atlet dalam dataset, di mana atlet dengan performa terbaik dapat diidentifikasi berdasarkan nilai PC1 yang lebih tinggi, yaitu Karpov dengan skor 5,03. Hal ini kemungkinan mencerminkan atribut utama seperti kecepatan atau kekuatan.