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

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

memuat data set

data <- read.csv("C:/Users/LENOVO/Downloads/decathlon-3.csv")

Memilih hanya kolom numerik untuk analisis PCA

data_numerik <- data[, 2:11]

Standarisasi data (mean = 0, standar deviasi = 1)

data_terstandarisasi <- scale(data_numerik)

Melakukan PCA

hasil_pca <- prcomp(data_terstandarisasi, center = TRUE, scale. = TRUE)

Ringkasan hasil PCA untuk melihat proporsi variasi yang dijelaskan

summary(hasil_pca)
## 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

Membuat scree plot untuk visualisasi variasi yang dijelaskan

plot(hasil_pca, type = "l", main = "Scree Plot")

Menghitung variasi kumulatif yang dijelaskan

variasi_kumulatif <- cumsum(hasil_pca$sdev^2 / sum(hasil_pca$sdev^2))
print(variasi_kumulatif)
##  [1] 0.3271906 0.5009037 0.6413953 0.7470804 0.8155577 0.8754846 0.9206081
##  [8] 0.9602958 0.9817773 1.0000000

Interpretasi: Hasil analisis PCA menunjukkan bahwa komponen utama pertama (PC1) menjelaskan sebagian besar variasi data, misalnya sekitar 32%, diikuti oleh komponen kedua (PC2) yang menjelaskan 18%, sehingga kumulatif dua komponen pertama menjelaskan 50% variasi. Dengan menambahkan komponen ketiga (PC3), total variasi yang dijelaskan meningkat menjadi sekitar 64%, yang cukup untuk merepresentasikan data dengan baik tanpa kehilangan informasi penting. Berdasarkan scree plot, jumlah komponen yang signifikan dapat ditentukan dari “elbow point”, yaitu pada komponen ketiga, di mana grafik mulai mendatar. Oleh karena itu, tiga komponen utama dianggap cukup untuk menjelaskan pola dalam data, memungkinkan penyederhanaan analisis tanpa kehilangan esensi informasi.

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

Scatter plot dua komponen utama pertama

plot(hasil_pca$x[, 1], hasil_pca$x[, 2],
     xlab = "Komponen Utama 1 (PC1)",
     ylab = "Komponen Utama 2 (PC2)",
     main = "Scatter Plot PC1 vs PC2",
     col = "blue", pch = 19)

Dari hasil yang ditampilkan, tidak terlihat adanya kluster yang sangat jelas, tetapi ada pola distribusi data yang menunjukkan bahwa sebagian besar titik terkonsentrasi di sekitar pusat (dekat dengan titik nol pada PC1 dan PC2). Hal ini mengindikasikan bahwa sebagian besar data memiliki nilai yang mirip berdasarkan kombinasi fitur pada komponen utama pertama dan kedua. Beberapa titik yang tersebar jauh dari pusat dapat dianggap sebagai kemungkinan outlier atau kelompok dengan karakteristik unik.

c.) Jelaskan hubungan antara hasil PCA yang diperoleh dengan vari- abel/cabang lomba serta sampel/atlet yang diperoleh.

  1. Hubungan dengan Variabel/Cabang Lomba

Kontribusi Variabel terhadap Komponen Utama: Informasi ini terdapat pada hasil_pca$rotation, yang menunjukkan bobot (loading) variabel asli dalam membentuk masing-masing komponen utama.Semakin besar nilai loading (positif atau negatif), semakin besar kontribusi variabel tersebut terhadap komponen utama tertentu.

periksa loading

print(hasil_pca$rotation)
##                      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

visualisasi

biplot(hasil_pca, scale = 0)

Interpretasi: Misalnya, jika cabang seperti lompat jauh dan lari 400m memiliki loading tinggi pada PC1, maka atlet dengan nilai PC1 tinggi kemungkinan memiliki performa baik pada cabang-cabang ini.

  1. Hubungan dengan Sampel/Atlet

Proyeksi Atlet pada Komponen Utama: Informasi ini terdapat pada hasil_pca$x, yaitu nilai dari setiap sampel (atlet) pada komponen utama. Nilai ini menunjukkan posisi atlet dalam ruang komponen utama.

Atlet dengan nilai tinggi pada PC1 memiliki karakteristik yang dominan pada dimensi tersebut (misalnya kecepatan), sementara atlet dengan nilai rendah pada PC2 mungkin lemah dalam dimensi yang terkait (misalnya kekuatan fisik).

periksa proyeksi atlet

head(hasil_pca$x)
##             PC1        PC2        PC3        PC4        PC5        PC6
## [1,]  0.7819141  0.7621432  0.8166955 -1.1602142  0.6984819  1.0179741
## [2,]  1.2198367  0.5675278  2.1149730  0.3504907 -1.9503426 -0.6816575
## [3,]  1.3415491  0.4780818  1.9322539  1.8337438  0.7854571 -0.7237601
## [4,] -0.6020361 -0.8638965  0.8790207 -2.1933646  0.3571988 -0.2722165
## [5,] -0.5787783  2.1048066 -1.2101236 -0.8628600  1.2360144  0.1033221
## [6,]  0.3525104 -1.6642816  0.7571472  0.5820737  0.9893708 -0.0319591
##              PC7         PC8        PC9        PC10
## [1,] -0.54475545  0.43030983  0.1358710  0.49462908
## [2,] -0.69928695  0.59601485  0.6412776 -0.26285386
## [3,] -0.18760857  0.24722569  0.7908292  0.51684811
## [4,]  0.04900196 -0.06663034  0.7144061  0.18614682
## [5,] -0.56688318 -0.09344278  0.1997351  0.05574994
## [6,] -0.09540515  0.29675878 -0.6000113  0.71243433

visualisasi

plot(hasil_pca$x[, 1], hasil_pca$x[, 2],
     xlab = "Komponen Utama 1 (PC1)",
     ylab = "Komponen Utama 2 (PC2)",
     main = "Proyeksi Atlet pada PC1 dan PC2",
     col = "blue", pch = 19)
text(hasil_pca$x[, 1], hasil_pca$x[, 2], labels = rownames(data), cex = 0.7, pos = 4)

interpretasi gabungan:

Dimensi Baru: Komponen utama merangkum banyak cabang lomba menjadi beberapa dimensi (misalnya PC1 = “kecepatan”, PC2 = “kekuatan”), sehingga hubungan antar cabang lomba dan atlet dapat dianalisis lebih ringkas.

Pola di Antara Atlet: Atlet yang berada dekat pada scatter plot memiliki performa mirip di berbagai cabang lomba. Atlet yang jauh mungkin memiliki spesialisasi unik atau hasil yang tidak konsisten.

Cabang Lomba yang Berhubungan: Variabel yang memiliki loading tinggi pada komponen yang sama cenderung saling berkorelasi. Misalnya, jika lari 100m dan lari 400m memiliki loading tinggi pada PC1, maka cabang ini kemungkinan merepresentasikan performa kecepatan.

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

Menampilkan loading (bobot) variabel pada setiap komponen utama

print(hasil_pca$rotation)
##                      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

Menampilkan loading untuk setiap komponen utama

loading <- hasil_pca$rotation
loading_order <- loading[order(abs(loading[, 1]), decreasing = TRUE), ]
print(loading_order)
##                      PC1        PC2         PC3         PC4         PC5
## X100m        -0.42829627  0.1419891 -0.15557953  0.03678703  0.36518741
## X110m.hurdle -0.41255442  0.1735910 -0.07815576 -0.28290068  0.19857266
## Long.jump     0.41015201 -0.2620794  0.15372674 -0.09901016  0.04432336
## X400m        -0.37571570  0.4320460  0.11091758 -0.02850297 -0.10597034
## Shot.put      0.34414444  0.4539470 -0.01972378 -0.18539458  0.13431954
## High.jump     0.31619436  0.2657761 -0.21894349  0.13189684  0.67121760
## Discus        0.30542571  0.4600244  0.03623770  0.25259074 -0.12667770
## Javeline      0.15319802  0.2405071 -0.32874217 -0.69285498 -0.36873120
## X1500m       -0.03210733  0.3598049  0.65987362  0.15669648 -0.18557094
## Pole.vault    0.02783081 -0.1368411  0.58361717 -0.53649480  0.39873734
##                      PC6         PC7         PC8         PC9        PC10
## X100m        -0.29607739 -0.38177608  0.46160211 -0.10475771  0.42428269
## X110m.hurdle  0.09963776 -0.35733030 -0.71111429  0.15013429 -0.09086448
## Long.jump     0.30612478 -0.62769317 -0.02101165 -0.48266910  0.08104448
## X400m         0.33252178  0.12442114  0.21339819 -0.55212939 -0.41399532
## Shot.put     -0.30547299  0.30972542 -0.31393005 -0.42729075  0.39028424
## High.jump     0.46777116  0.09145002  0.12509166  0.24366054 -0.10642724
## Discus       -0.44937288 -0.42988982  0.03838986  0.15480715 -0.44916580
## Javeline      0.16320268 -0.10674519  0.29614206  0.24732691  0.08777340
## X1500m        0.29826888 -0.08362898  0.01371744  0.30773397  0.42923132
## Pole.vault   -0.26166458  0.09796019  0.17803824  0.08297769 -0.27645138

hasil:

Komponen utama yang berkaitan dengan performa atlet di berbagai cabang olahraga bervariasi. Untuk lari 100 meter, komponen utama yang paling berpengaruh adalah PC1 dan PC6. Lari 110 meter halang rintang dipengaruhi oleh PC1 dan PC6, sementara lompat jauh lebih berkaitan dengan PC1 dan PC7. Lari 400 meter dipengaruhi oleh PC2 dan PC6, sedangkan lemparan peluru sangat terkait dengan PC2 dan PC7. Lompat tinggi lebih dipengaruhi oleh PC5 dan PC6, sementara lempar cakram dipengaruhi oleh PC2 dan PC6. Lempar lembing paling dipengaruhi oleh PC4 dan PC6, sementara lari 1500 meter berkaitan dengan PC3 dan PC9. Lompat galah paling dipengaruhi oleh PC3 dan PC5. Secara umum, PC1 dan PC2 seringkali berpengaruh di berbagai cabang olahraga, sementara komponen lainnya seperti PC5, PC6, dan PC4 lebih dominan di cabang-cabang tertentu.

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

# Cek struktur hasil_pca$x
str(hasil_pca$x)
##  num [1:41, 1:10] 0.782 1.22 1.342 -0.602 -0.579 ...
##  - attr(*, "dimnames")=List of 2
##   ..$ : NULL
##   ..$ : chr [1:10] "PC1" "PC2" "PC3" "PC4" ...
# Cek nama-nama kolom pada hasil_pca$x
colnames(hasil_pca$x)
##  [1] "PC1"  "PC2"  "PC3"  "PC4"  "PC5"  "PC6"  "PC7"  "PC8"  "PC9"  "PC10"
# Tambahkan Athlets jika belum ditambahkan
ranking <- as.data.frame(hasil_pca$x) %>%
  mutate(Athlets = rownames(hasil_pca$x))

# Cek nama-nama kolom setelah mutate
colnames(ranking)
##  [1] "PC1"  "PC2"  "PC3"  "PC4"  "PC5"  "PC6"  "PC7"  "PC8"  "PC9"  "PC10"
# Menyusun ulang data dan menambahkan nama atlet
ranking <- as.data.frame(hasil_pca$x) %>%
  mutate(Athlets = rownames(data)) %>%
  select(Athlets, PC1) %>%
  arrange(desc(PC1))

# Menampilkan ranking atlet berdasarkan nilai PC1
ranking
##    Athlets         PC1
## 1       16  4.56329817
## 2       14  3.98889511
## 3       15  3.87127297
## 4       17  2.20605510
## 5       18  2.14178935
## 6       22  1.88294288
## 7        3  1.34154909
## 8        2  1.21983673
## 9       19  0.91378044
## 10      20  0.87812900
## 11      27  0.85963151
## 12       1  0.78191413
## 13       8  0.58030713
## 14      24  0.53305497
## 15      29  0.37544985
## 16       6  0.35251035
## 17      28  0.34487086
## 18      21  0.29168215
## 19       7  0.26843999
## 20      25  0.11302687
## 21      23  0.08008379
## 22      26  0.00211888
## 23      32 -0.24563257
## 24      35 -0.28633215
## 25      31 -0.42913561
## 26      30 -0.47856903
## 27       5 -0.57877827
## 28       4 -0.60203609
## 29      34 -0.67358522
## 30      39 -0.94607686
## 31      33 -1.05630678
## 32      11 -1.32519011
## 33      36 -1.52289439
## 34      10 -1.52710548
## 35      38 -1.96989702
## 36       9 -1.97087543
## 37      12 -2.31620003
## 38      37 -2.37895659
## 39      40 -2.53081963
## 40      41 -2.82203064
## 41      13 -3.93021742

Hasil di atas menunjukkan urutan atlet terbaik berdasarkan skor pada komponen utama pertama, dan nomor 16 merupakan atlet terbaik berdasarkan skor dilanjut nomor 14 menempati peringkat dua dan nomor 15 menempati peringkat tiga.