Memuat library dan membaca dataset
if (!requireNamespace("FactoMineR", quietly = TRUE)) install.packages("FactoMineR")
if (!requireNamespace("factoextra", quietly = TRUE)) install.packages("factoextra")
library(FactoMineR)
library(factoextra)
## Loading required package: ggplot2
## Welcome! Want to learn more? See two factoextra-related books at https://goo.gl/ve3WBa
data <- read.csv("decathlon-3.csv")
Mengecek struktur dataset
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 variabel kualitatif (“Athlets” dan “Competition”)
data_pca <- data[, sapply(data, is.numeric)]
Menampilkan data yang akan digunakan untuk PCA
head(data_pca)
## X100m Long.jump Shot.put High.jump X400m X110m.hurdle Discus Pole.vault
## 1 11.04 7.58 14.83 2.07 49.81 14.69 43.75 5.02
## 2 10.76 7.40 14.26 1.86 49.37 14.05 50.72 4.92
## 3 11.02 7.30 14.77 2.04 48.37 14.09 48.95 4.92
## 4 11.02 7.23 14.25 1.92 48.93 14.99 40.87 5.32
## 5 11.34 7.09 15.19 2.10 50.42 15.31 46.26 4.72
## 6 11.11 7.60 14.31 1.98 48.68 14.23 41.10 4.92
## Javeline X1500m Rank Points
## 1 63.19 291.7 1 8217
## 2 60.15 301.5 2 8122
## 3 50.31 300.2 3 8099
## 4 62.77 280.1 4 8067
## 5 63.44 276.4 5 8036
## 6 51.77 278.1 6 8030
Melakukan PCA
pca_result <- PCA(data_pca, scale.unit = TRUE, graph = FALSE)
Scree plot dengan Variansi yang dijelaskan oleh setiap komponen utama
fviz_eig(pca_result, addlabels = TRUE, ylim = c(0, 50))
Scatter plot individu pada PC1 dan PC2
fviz_pca_ind(pca_result,
axes = c(1, 2),
geom.ind = "point",
col.ind = "cos2",
gradient.cols = c("#00AFBB", "#E7B800", "#FC4E07"),
repel = TRUE)
Visualisasi hubungan antara variabel dan PCA
fviz_pca_var(pca_result,
col.var = "contrib", # Warna berdasarkan kontribusi
gradient.cols = c("#00AFBB", "#E7B800", "#FC4E07"),
repel = TRUE)
Menampilkan loading variabel (kontribusi terhadap PC)
loading_matrix <- pca_result$var$coord
print(loading_matrix)
## Dim.1 Dim.2 Dim.3 Dim.4 Dim.5
## X100m -0.7081629 0.157628660 -0.15438506 0.206049535 0.51408310
## Long.jump 0.7559094 -0.332918055 0.18223996 0.007219957 -0.04747772
## Shot.put 0.6116490 0.612260860 -0.01992738 0.109366452 -0.07290452
## High.jump 0.5878896 0.359724025 -0.23912699 -0.086588690 0.40300390
## X400m -0.6952784 0.554597227 0.13149615 0.088700388 -0.07454568
## X110m.hurdle -0.7034326 0.205003808 -0.08105074 0.408825698 0.11155787
## Discus 0.5293816 0.618659495 0.05463633 -0.273182369 0.09736164
## Pole.vault 0.1448401 -0.201621175 0.70422166 0.589034999 0.10174190
## Javeline 0.3189638 0.321915272 -0.39047902 0.598666913 -0.43146375
## X1500m -0.1049145 0.469125942 0.78180574 -0.190591229 -0.11467915
## Rank -0.7811767 0.059108886 -0.09924172 -0.247619639 -0.43403586
## Points 0.9816991 0.001559434 -0.06293370 0.131038955 -0.04633760
Urutkan individu berdasarkan PC1 (dimensi pertama)
scores <- as.data.frame(pca_result$ind$coord) # Koordinat individu pada komponen utama
scores <- scores[order(-scores$Dim.1), ] # Urutkan berdasarkan PC1
print(head(scores)) # Individu dengan skor PC1 tertinggi
## Dim.1 Dim.2 Dim.3 Dim.4 Dim.5
## 16 5.091997 0.15841088 -0.07537079 -1.6817381 0.1861736
## 14 5.089241 1.41201332 -0.28030530 1.6771395 -0.3728924
## 15 4.774791 0.90563995 0.18621966 0.9222275 -1.4793117
## 17 2.724081 1.08717519 -1.80997691 -0.5843041 1.0422642
## 18 2.537142 -1.76705523 0.82460002 -0.5487409 -0.2482036
## 22 1.913163 -0.01113968 -0.77759641 -1.6197687 0.2544669
Jawab :
Berdasarkan scree plot, terdapat 10 komponen utama yang dihasilkan (karena dataset memiliki 10 variabel numerik).
Komponen utama pertama (PC1) menjelaskan 39,7% dari variasi data, sedangkan PC2 menjelaskan 14,5%. Dengan demikian, dua komponen utama pertama menjelaskan total 54,2% dari variasi data. Artinya, sebagian besar informasi dalam dataset dapat direpresentasikan dengan dua dimensi (PC1 dan PC2).
Jawab :
Scatter plot menunjukkan distribusi individu (atlet) dalam ruang dua dimensi berdasarkan PC1 dan PC2.
Beberapa individu terpisah secara jelas pada sumbu Dim.1, menunjukkan bahwa mereka memiliki karakteristik yang berbeda secara signifikan dibandingkan individu lainnya.
Sebagian besar individu berkumpul di sekitar pusat (origin), yang berarti mereka lebih mirip dalam kontribusi variabel pada Dim.1 dan Dim.2. Tidak ada kluster yang sangat jelas, tetapi atlet dengan nilai PC1 tertinggi (seperti individu nomor 16) berada jauh dari yang lain, menunjukkan performa unik mereka.
Warna menunjukkan nilai cos2, yaitu seberapa baik individu direpresentasikan oleh PC1 dan PC2. Warna merah menunjukkan representasi lebih baik.
Jawab :
Dimensi 1 (Dim.1) dipengaruhi kuat oleh variabel “Points” (kontribusi positif), sedangkan “Rank” memiliki kontribusi negatif yang besar. Artinya, Dim.1 mencerminkan performa keseluruhan atlet, dengan nilai lebih tinggi menunjukkan performa lebih baik.
Dimensi 2 (Dim.2) dipengaruhi oleh variabel “X1500m” (positif) dan “X400m” (negatif). Dim.2 mencerminkan perbedaan performa pada jarak pendek versus jarak jauh. Atlet dengan skor tinggi pada Dim.1 kemungkinan besar memiliki skor keseluruhan (Points) yang tinggi, sementara atlet dengan skor tinggi pada Dim.2 lebih unggul dalam event tertentu seperti jarak jauh.
Jawab :
Points (skor total) memiliki loading tertinggi pada Dim.1 (0.982), menunjukkan bahwa Dim.1 paling mencerminkan performa keseluruhan atlet.
Untuk cabang spesifik :
X1500m memiliki loading tinggi pada Dim.2 (0.469), mencerminkan kontribusi besar pada Dim.2.
Pole vault memiliki loading tinggi pada Dim.3 (0.390), mencerminkan kontribusi signifikan pada Dim.3.
Cabang seperti “Shot put” dan “Discus” memiliki kontribusi positif kuat pada Dim.1 dan Dim.2.
Jawab :
Berdasarkan nilai Dim.1 (PC1), yang mencerminkan performa keseluruhan atlet :
Atlet dengan ID 16 memiliki skor tertinggi (5.09), menunjukkan performa terbaik.
Atlet dengan ID 15 (skor 4.80) berada di posisi kedua.
Atlet dengan ID 14 (skor 4.08) berada di posisi ketiga. Atlet dengan skor tinggi pada PC1 memiliki nilai “Points” yang tinggi, yang merupakan indikator utama performa mereka.