Penerapan PCA

Analisis Data Decathlon

Memuat Dataset

library(FactoMineR)
## Warning: package 'FactoMineR' was built under R version 4.4.2
library(factoextra)
## Warning: package 'factoextra' was built under R version 4.4.2
## Loading required package: ggplot2
## Welcome! Want to learn more? See two factoextra-related books at https://goo.gl/ve3WBa
library(dplyr)
## 
## 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(ggplot2)

# Path ke file lokal
file_path <- "C:/Users/LENOVO/Downloads/decathlon-3.csv"

# Membaca file CSV
decathlon <- read.csv(file_path)

# Melihat beberapa baris pertama dari data
head(decathlon)
##   Athlets X100m Long.jump Shot.put High.jump X400m X110m.hurdle Discus
## 1  SEBRLE 11.04      7.58    14.83      2.07 49.81        14.69  43.75
## 2    CLAY 10.76      7.40    14.26      1.86 49.37        14.05  50.72
## 3  KARPOV 11.02      7.30    14.77      2.04 48.37        14.09  48.95
## 4 BERNARD 11.02      7.23    14.25      1.92 48.93        14.99  40.87
## 5  YURKOV 11.34      7.09    15.19      2.10 50.42        15.31  46.26
## 6 WARNERS 11.11      7.60    14.31      1.98 48.68        14.23  41.10
##   Pole.vault Javeline X1500m Rank Points Competition
## 1       5.02    63.19  291.7    1   8217    Decastar
## 2       4.92    60.15  301.5    2   8122    Decastar
## 3       4.92    50.31  300.2    3   8099    Decastar
## 4       5.32    62.77  280.1    4   8067    Decastar
## 5       4.72    63.44  276.4    5   8036    Decastar
## 6       4.92    51.77  278.1    6   8030    Decastar

1. Menentukan berapa banyak komponen utama yang dihasilkan untuk menjelaskan variasi data

# Memastikan hanya kolom numerik yang digunakan dalam PCA (menghapus kolom ID atau non-numerik)
decathlon_numeric <- decathlon %>% select(where(is.numeric))

# Melakukan PCA pada data numerik
pca_result <- prcomp(decathlon_numeric, scale. = TRUE)

# Melihat ringkasan dari hasil PCA untuk mengetahui variansi yang dijelaskan oleh setiap komponen utama
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

Interpretasi:

  1. Komponen Utama (PC):

    • Ada 12 komponen utama (PC1 sampai PC12), yang masing-masing menjelaskan proporsi variasi yang berbeda dalam data.
  2. Standard Deviation:

    • Ini mengukur variasi atau penyebaran data untuk setiap komponen utama. Komponen dengan deviasi standar yang lebih tinggi menunjukkan bahwa komponen tersebut menjelaskan variasi yang lebih besar dalam data.
  3. Proportion of Variance:

    • Menunjukkan proporsi dari total variansi data yang dijelaskan oleh setiap komponen utama. Komponen pertama (PC1) menjelaskan 39.66% dari variasi, komponen kedua (PC2) menjelaskan 14.50%, dan seterusnya.

    • Dalam hal ini, PC1 dan PC2 bersama-sama menjelaskan 54.16% dari variasi data.

  4. Cumulative Proportion:

    • Ini menunjukkan proporsi kumulatif dari variasi yang dijelaskan oleh kombinasi komponen utama sampai titik tertentu. Misalnya, setelah PC2, proporsi kumulatif menjadi 54.16%, setelah PC3 menjadi 65.95%, dan seterusnya.

    • Jika kita ingin menjelaskan sebagian besar variasi data, bisa memilih komponen utama sampai nilai kumulatif mencapai ambang batas tertentu, misalnya 90% atau lebih.

Berdasarkan hasil tersebut, untuk menjelaskan variasi data:

  • Komponen pertama hingga keempat (PC1, PC2, PC3, PC4) sudah menjelaskan sekitar 75.38% dari variasi total. Ini sudah memberikan pemahaman yang baik tentang data.

  • Jika kita ingin menjelaskan 90% atau lebih dari variasi, maka kita perlu mempertimbangkan hingga komponen ke-9 (PC9), yang sudah menjelaskan 92.63% dari variasi data.

2. Buat scatter plot data dalam ruang dua dimensi menggunakan komponen utama pertama dan kedua

pca_data <- data.frame(pca_result$x)  # Mendapatkan skor komponen utama (nilai koordinat untuk setiap atlet)
ggplot(pca_data, aes(x = PC1, y = PC2)) +
  geom_point() +
  labs(title = "Scatter Plot PCA: Komponen Utama 1 vs 2", x = "PC1", y = "PC2")

Interpretasi Pola dan Kluster

Berdasarkan scatter plot yang, kita dapat mengamati beberapa hal:

  • Kemungkinan Adanya Beberapa Kluster: Data tampaknya terkelompok menjadi beberapa gugusan atau kluster. Ada beberapa titik yang cenderung berkumpul di beberapa area tertentu pada plot. Ini mengindikasikan bahwa data mungkin terdiri dari beberapa kelompok yang berbeda.

  • Variasi dalam Data: Terdapat variasi yang cukup besar pada sumbu PC1. Ini menunjukkan bahwa komponen utama pertama menjelaskan sebagian besar variabilitas dalam data. Variasi pada sumbu PC2 juga terlihat, meskipun tidak sebesar pada PC1.

  • Hubungan Antara Komponen Utama: Bentuk dari kelompok-kelompok data pada plot dapat memberikan petunjuk tentang hubungan antara komponen utama pertama dan kedua. Jika kelompok-kelompok data membentuk pola tertentu (misalnya, elips atau garis), maka ada kemungkinan terdapat korelasi antara kedua komponen utama tersebut.

Kesimpulan

Dari pengamatan visual, dapat menyimpulkan bahwa kemungkinan terdiri dari beberapa kelompok yang berbeda. Komponen utama pertama dan kedua berhasil menangkap sebagian besar variabilitas dalam data.

3. Hubungan antara hasil PCA yang diperoleh dengan variabel/cabang lomba serta sampel/atlet yang diperoleh

# Menampilkan faktor loading untuk komponen pertama dan kedua untuk melihat kontribusi setiap variabel
loading <- pca_result$rotation
loading[, 1:2]  # Menampilkan faktor loading untuk komponen utama pertama dan kedua
##                      PC1          PC2
## X100m        -0.32462717  0.119492960
## Long.jump     0.34651451 -0.252373927
## Shot.put      0.28038448  0.464134267
## High.jump     0.26949298  0.272694627
## X400m        -0.31872084  0.420421416
## X110m.hurdle -0.32245880  0.155406459
## Discus        0.24267251  0.468984856
## Pole.vault    0.06639577 -0.152842199
## Javeline      0.14621541  0.244033088
## X1500m       -0.04809361  0.355628523
## Rank         -0.35809724  0.044808449
## Points        0.45001821  0.001182155

Hasil PCA pada Komponen Utama (PC1 dan PC2)

  1. PC1 (Komponen Utama 1):

    • Negatif: Cabang lomba yang memiliki loading negatif di PC1 menunjukkan bahwa mereka berhubungan secara terbalik (negatif) dengan komponen ini. Misalnya, X100m, X400m, X110m.hurdle, dan Rank memiliki nilai negatif di PC1, yang berarti atlet yang lebih baik di cabang lomba ini cenderung berada pada nilai rendah di PC1.

    • Positif: Cabang lomba seperti Long.jump, Shot.put, Discus, dan Points memiliki loading positif di PC1. Ini menunjukkan bahwa atlet yang lebih baik di cabang-cabang ini cenderung memiliki nilai positif pada PC1.

  2. PC2 (Komponen Utama 2):

    • Positif: Cabang lomba seperti Shot.put, X400m, X110m.hurdle, Discus, dan X1500m memiliki loading positif di PC2, yang berarti atlet yang lebih baik di cabang-cabang ini cenderung memiliki nilai positif pada PC2.

    • Negatif: Sebaliknya, cabang lomba seperti Long.jump, High.jump, Pole.vault, dan Rank memiliki loading negatif di PC2, menunjukkan hubungan terbalik dengan komponen utama ini.

Interpretasi Hubungan dengan Atlet (Sampel)

  • Atlet yang memiliki nilai tinggi di PC1 mungkin memiliki performa lebih baik dalam cabang lomba seperti Long.jump, Shot.put, Discus, dan Points. Mereka cenderung lebih unggul dalam cabang-cabang yang memiliki loading positif pada PC1.

  • Atlet yang memiliki nilai negatif di PC1 mungkin lebih berfokus pada cabang lomba seperti X100m, X400m, dan X110m.hurdle, yang memiliki loading negatif di PC1.

  • PC2 menunjukkan pola berbeda, dengan atlet yang memiliki nilai tinggi di PC2 lebih unggul dalam cabang lomba Shot.put, X400m, dan Discus, sementara atlet dengan nilai rendah di PC2 lebih unggul dalam Long.jump, High.jump, dan Pole.vault.

4. Komponen utama mana yang paling berkaitan dengan performa atlet di cabang tertentu

# Faktor loading menunjukkan hubungan antara variabel dan komponen utama
# Komponen utama yang paling tinggi loadingnya berkaitan dengan cabang lomba tertentu
loading[, 1]  # Faktor loading untuk komponen utama pertama
##        X100m    Long.jump     Shot.put    High.jump        X400m X110m.hurdle 
##  -0.32462717   0.34651451   0.28038448   0.26949298  -0.31872084  -0.32245880 
##       Discus   Pole.vault     Javeline       X1500m         Rank       Points 
##   0.24267251   0.06639577   0.14621541  -0.04809361  -0.35809724   0.45001821
loading[, 2]  # Faktor loading untuk komponen utama kedua
##        X100m    Long.jump     Shot.put    High.jump        X400m X110m.hurdle 
##  0.119492960 -0.252373927  0.464134267  0.272694627  0.420421416  0.155406459 
##       Discus   Pole.vault     Javeline       X1500m         Rank       Points 
##  0.468984856 -0.152842199  0.244033088  0.355628523  0.044808449  0.001182155

Untuk menentukan komponen utama mana yang paling berkaitan dengan performa atlet di cabang tertentu, perlu melihat nilai loading (koefisien) pada kedua komponen utama (PC1 dan PC2) untuk masing-masing cabang lomba. Nilai yang lebih tinggi menunjukkan kontribusi yang lebih besar dari komponen tersebut terhadap cabang lomba tersebut.

Hubungan antara komponen utama (PC1 dan PC2) dengan performa atlet di cabang-cabang tertentu:

PC1 (Komponen Utama 1):

  • X100m: Loading negatif (-0.3246), menunjukkan hubungan terbalik dengan PC1. Atlet yang lebih baik di X100m kemungkinan memiliki nilai rendah di PC1.

  • Long.jump: Loading positif (0.3465), menunjukkan hubungan positif dengan PC1. Atlet yang lebih baik di Long.jump kemungkinan memiliki nilai tinggi di PC1.

  • Shot.put: Loading positif (0.2804), menunjukkan hubungan positif dengan PC1. Atlet yang lebih baik di Shot.put kemungkinan memiliki nilai tinggi di PC1.

  • High.jump: Loading positif (0.2695), menunjukkan hubungan positif dengan PC1.

  • X400m: Loading negatif (-0.3187), menunjukkan hubungan terbalik dengan PC1.

  • X110m.hurdle: Loading negatif (-0.3225), menunjukkan hubungan terbalik dengan PC1.

  • Discus: Loading positif (0.2427), menunjukkan hubungan positif dengan PC1.

  • Pole.vault: Loading positif (0.0664), menunjukkan hubungan positif dengan PC1.

  • Javeline: Loading positif (0.1462), menunjukkan hubungan positif dengan PC1.

  • X1500m: Loading negatif (-0.0481), menunjukkan hubungan terbalik dengan PC1.

  • Rank: Loading negatif (-0.3581), menunjukkan hubungan terbalik dengan PC1.

  • Points: Loading positif (0.4500), menunjukkan hubungan positif dengan PC1. Atlet dengan poin tinggi cenderung memiliki nilai tinggi di PC1.

PC2 (Komponen Utama 2):

  • X100m: Loading positif (0.1195), menunjukkan hubungan positif dengan PC2.

  • Long.jump: Loading negatif (-0.2524), menunjukkan hubungan terbalik dengan PC2.

  • Shot.put: Loading positif (0.4641), menunjukkan hubungan positif yang cukup kuat dengan PC2. Atlet yang lebih baik di Shot.put cenderung memiliki nilai tinggi di PC2.

  • High.jump: Loading positif (0.2727), menunjukkan hubungan positif dengan PC2.

  • X400m: Loading positif (0.4204), menunjukkan hubungan positif dengan PC2. Atlet yang lebih baik di X400m cenderung memiliki nilai tinggi di PC2.

  • X110m.hurdle: Loading positif (0.1554), menunjukkan hubungan positif dengan PC2.

  • Discus: Loading positif (0.4690), menunjukkan hubungan positif yang cukup kuat dengan PC2. Atlet yang lebih baik di Discus cenderung memiliki nilai tinggi di PC2.

  • Pole.vault: Loading negatif (-0.1528), menunjukkan hubungan terbalik dengan PC2.

  • Javeline: Loading positif (0.2440), menunjukkan hubungan positif dengan PC2.

  • X1500m: Loading positif (0.3556), menunjukkan hubungan positif dengan PC2.

  • Rank: Loading positif (0.0448), menunjukkan hubungan positif yang sangat lemah dengan PC2.

  • Points: Loading positif (0.0012), menunjukkan hubungan yang sangat lemah dengan PC2.

5. Jelaskan berdasarkan analisis, urutan atlet yang memiliki performa terbaik

# Berdasarkan skor PC1 (atau bisa PC2 atau kombinasi keduanya)
decathlon$performance_rank <- rank(-pca_data$PC1)  # Atlet dengan nilai PC1 tertinggi dianggap terbaik

# Menyusun berdasarkan peringkat performa
decathlon <- decathlon %>%
  arrange(performance_rank)  # Menyusun berdasarkan peringkat performa

head(decathlon)  # Menampilkan urutan atlet berdasarkan performa terbaik
##   Athlets X100m Long.jump Shot.put High.jump X400m X110m.hurdle Discus
## 1  Karpov 10.50      7.81    15.93      2.09 46.81        13.97  51.65
## 2  Sebrle 10.85      7.84    16.36      2.12 48.36        14.05  48.72
## 3    Clay 10.44      7.96    15.23      2.06 49.19        14.13  50.11
## 4   Macey 10.89      7.47    15.73      2.15 48.97        14.56  48.34
## 5 Warners 10.62      7.74    14.48      1.97 47.97        14.01  43.73
## 6 Bernard 10.69      7.48    14.80      2.12 49.13        14.17  44.75
##   Pole.vault Javeline X1500m Rank Points Competition performance_rank
## 1        4.6    55.54 278.11    3   8725    OlympicG                1
## 2        5.0    70.52 280.01    1   8893    OlympicG                2
## 3        4.9    69.71 282.00    2   8820    OlympicG                3
## 4        4.4    58.46 265.42    4   8414    OlympicG                4
## 5        4.9    55.39 278.05    5   8343    OlympicG                5
## 6        4.4    55.27 276.31    9   8225    OlympicG                6

Untuk menentukan urutan atlet dengan performa terbaik berdasarkan analisis PCA, perlu mempertimbangkan kontribusi cabang lomba yang relevan terhadap komponen utama yang telah dihitung sebelumnya (PC1 dan PC2). Atlet yang memiliki performa terbaik cenderung akan memiliki nilai tinggi pada komponen utama yang berhubungan dengan cabang lomba di mana mereka unggul.

Langkah 1: Menghitung Skor untuk Masing-masing Atlet

Skor untuk masing-masing atlet dapat dihitung berdasarkan loading yang sudah diperoleh dari hasil PCA untuk PC1 dan PC2. Dalam hal ini, kita hanya memiliki dua cabang lomba (X100m dan Long.jump), jadi kita akan menghitung skor dengan mengalikan nilai cabang lomba dengan loading komponen utama yang sesuai.

Loading untuk PC1 dan PC2

  • PC1: X100m (-0.3246), Long.jump (0.3465)

  • PC2: X100m (0.1195), Long.jump (-0.2524)

Langkah 2: Menghitung Skor untuk Setiap Atlet

Skor untuk setiap atlet di PC1 dan PC2 dapat dihitung dengan rumus berikut:

Skor PC1=(X100m)×(−0.3246)+(Long.jump)×(0.3465)

Skor PC2=(X100m)×(0.1195)+(Long.jump)×(−0.2524)

Sekarang hitung skor untuk atlet-atlet tersebut.

Langkah 3: Urutan Performa Atlet

Lakukan perhitungan untuk skor masing-masing atlet dan menentukan urutannya.

Berdasarkan perhitungan skor untuk PC1 dan PC2, serta total skor gabungan, berikut adalah urutan atlet yang memiliki performa terbaik:

  1. Clay: Total skor = -1.3922

  2. Karpov: Total skor = -1.4187

  3. Warners: Total skor = -1.4499

  4. Sebrle: Total skor = -1.4876

  5. Bernard: Total skor = -1.4887

  6. Macey: Total skor = -1.5307

  • Clay memiliki skor total terbaik (-1.3922) berdasarkan performa di X100m dan Long.jump.

  • Macey berada di urutan terakhir dengan skor total terendah (-1.5307), menunjukkan performa yang kurang baik dibandingkan atlet lainnya dalam cabang yang dianalisis. ​