Nama : Neo Saffana Farhalik

NIM : 4112322008

Prodi : Statistika Terapan dan Komputasi

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

(a) Tentukan berapa banyak komponen utama yang dihasilkan untuk menjelaskan variasi data. Jelaskan interpretasinya.

Jawab :

(b) Buat scatter plot data dalam ruang dua dimensi menggunakan komponen utama pertama dan kedua. Apa pola atau kluster yang terlihat?

Jawab :

(c) Jelaskan hubungan antara hasil PCA yang diperoleh dengan variabel/cabang lomba serta sampel/atlet yang diperoleh.

Jawab :

(d) Komponen utama mana yang paling berkaitan dengan performa atlet di cabang tertentu.

Jawab :

(e) Jelaskan berdasarkan analisis, urutan atlet yang memiliki performa terbaik.

Jawab :

Berdasarkan nilai Dim.1 (PC1), yang mencerminkan performa keseluruhan atlet :

  1. Atlet dengan ID 16 memiliki skor tertinggi (5.09), menunjukkan performa terbaik.

  2. Atlet dengan ID 15 (skor 4.80) berada di posisi kedua.

  3. 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.