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
data <- read.csv("C:/Users/LENOVO/Downloads/decathlon-3.csv")
data_numerik <- data[, 2:11]
data_terstandarisasi <- scale(data_numerik)
hasil_pca <- prcomp(data_terstandarisasi, center = TRUE, scale. = TRUE)
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
plot(hasil_pca, type = "l", main = "Scree Plot")
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.
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.
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.
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
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.
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).
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
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.
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
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.
# 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.