Library:
> # install.packages("knitr")
> # install.packages("rmarkdown")
> # install.packages("prettydoc")
> # install.packages("equatiomatic")Olahraga Voli merupakan salah satu olahraga yang memerlukan kerja sama tim yang tinggi serta ketepatan strategi yang akurat. Dalam olahraga ini, Usia, tinggi serta berat badan sangat berpengaruh terutama dalam penentuan posisi dan peran masing-masing pemain seperti blocker, spiker, setter, serta libero. Posisi dalam Voly sangat memperhatikan tinggi badan agar dapat memaksimalkan peran dalam permainan, sehingga penempatan pemain dalam olahraga Voly berdasarkan usia, tinggi dan berat badan sangat berpengaruh dalam menentukan performa tim secara keseluruhan.
Setiap pemain memiliki karakteristik fisik yang unik, yang secara langsung berpengaruh pada kemampuannya dalam menjalankan peran tertentu dalam sebuah permainan di lapangan. Pemain dengan tinggi yang lebih daripada pemain lain cenderung memiliki efektifitas serangan yang bagus, oleh karena itu, pemain tinggi akan lebih optimal ditempatkan pada posisi spiker. Sedangkan libero memerlukan kegesitan dalam permainan, sehingga pemain dengan tubuh lincah dan gesit sangat mumpuni dalam posisi ini. Dengan memanfaatkan data tinggi badan dan berat badan, pelatih dapat mengolompokkan atlit sesuai karakteristik fisik mereka, sehingga dapat memaksimalkan potensi dan dapat meraih kemenangan dalam sebuah tim.
Namun, proses pengelompokan ini sering kali dilakukan secara subjektif berdasarkan pengamatan. Hal ini tidak hanya memerlukan waktu yang lebih lama tetapi juga beresiko terjadi kesalahan dalam penentuan peran pemain. Oleh karena itu, penggunaan metode analisis cluster sebagai pendekatan berbasis data dapan menjadi solusi yang lebih objektif dan akurat dalam menentukan peran atlit.
Analisis Cluster adalah teknik dalam Analisis Multivariat yang bertujuan untuk mengolompokkan objek-objek yang memiliki kesamaan karakteristik serupa kedalam suatu kelompok yang sama. Dalam konteks ini, analisis cluster digunakan untuk mengelompokkan atlit berdasarkan tinggi dan berat badan mereka. Dengan demikian, diharapkan pengelompokan yang dihasilkan akan membantu pelatih dalam merancang program latihan yang sesuai kebutuhan fisik masing-masing kelompok serta memaksimalkan potensi pemain dalam menjalankan perannya di lapangan.
Penelitian ini bertujuan untuk menerapkan metode analisis cluster dalam mengelompokkan atlit voly berdasarkan data tinggi dan berat badan. Hasil pengelompokan ini diharapkan dapat memberikan rekomendasi posisi serta program latihan yang lebih spesifik, efektif, dan efisien bagi tiap kelompok, sehingga dapat meningkatkan performa tim secara keseluruhan.
Analisis cluster adalah metode statistika yang bertujuan untuk mengelompokkan data ke dalam beberapa kelompok (cluster) berdasarkan kemiripan karakteristik. Objek-objek yang memiliki karakteristik yang mirip akan ditempatkan kedalam satu kelompok yang sama, sedangkan objek-objek yang berbeda akan ditempatkan dikelompok yang berbeda. Teknik ini membantu dalam menemukan pola atau struktur tersembunyi di dalam data yang kompleks.
Analisis cluster yang baik memiliki homogenitas (kesamaan) dalam satu cluster dan heterogenitas (perbedaan) antar cluster. Cara menentukan cluster yang baik dengan ukuran jarak :
Jarak euclidean adalah jarak Lurus antara dua titik dalam ruang dimensi. Jarak ini dihitung menggunakan rumus Pythagoras dan sering dianggap sebagai jarak terpendek antara dua titik. Sederhananya, ini seperti mengukur jarak dalam garis lurus dari satu titik ke titik lain.
Jarak yang paling sering digunakan adalah jarak euclidean karena jarak ini mudah dipahami dan menggunakan prinsip pythaforas. Jarak euclidean adalah perhitungan jarak dua objek dalam euclidean space untuk mempelajari hubungan antara sudut dan jarak dengan syarat :
Jarak Mahalanobis mengukur jarak antara dua titik dengan mempertimbangkan kerolasi antar variabel. Ini berguna saat data memiliki variabilitas atau skala yang berbeda, karena memperhitungkan distribusi dan hubungan antar variabel, sehingga jarak ini lebih akurat pada data multidimensi. Jarak Mahalanobis juga bersifat unitless dan scale invariant. Jarak mahalanobis dapat digunakan ketika terdapat korelasi, karena memperhitungkan adanya korelasi dalam data. Jarak lain berbasis korelasi:
\[ d = \sqrt{(x-y')S^{-1}(x-y)} \]
Jarak Manhattan, juga dikenal sebagai jarak blok kota, menghitung jarak antara dua titik dengan menjumlahkan perbedaan absolut setiap dimensi. Ini seperti menghitung jarak dengan cara bergerak secara vertikal dan horizontal, mirip dengan berjalan mengikuti jalan-jalan di kota
\[ d(x,y) = \sum_{}^{}\left| x_{i} - y_{i}\right| \]
Pada metode single lankage, jarak antar dua cluster Ci dan Cj dihitung berdasarkan jarak minimum antara setiap pasangan titik dari kedua cluster tersebut
\[ d_{ij} = min ( d_{pj}; d_{qj}) \]
Di sini, d(x,y) adalah jarak antara titik x di cluster Ci, dan titik y di cluster Cj.
Complete linkage menghitung jarak antar cluster dengan jarak maksimum antara dua titik dari masing-masing cluster
\[ d_{ij} = max ( d_{pj}; d_{qj}) \] Jarak ini mempertimbangkan duat titik terjauh di masing-masing cluster, sehingga hasilnya cenderung membentuk cluster kompak
Pada average linkage, jarak antar dua cluster Ci dan Cj dihitung sebagai rata- rata jarak antara semua pasangan titik dari kedua cluster tersebut
\[ d_{ij} = \frac{1}{n_{i}.n_{j}}\sum_{i=1}^{n_{i}}\sum_{j=1}^{n_{j}}\sqrt{\sum_{k=1}^{p}(x_{ik}-y_{jk})^2} \]
Jarak antara dua kluster yang terbentuk merupakan jumlah kuadrat diantara dua kluster tersebut
\[ ESS =\sum_{k=1}^{K}\left[ \sum_{i=1}^{nk}\sum_{j=1}^{p} X^2_{ijk} - \frac{1}{nk}\sum_{j=1}^{0}(\sum_{i=1}^{nk}X_{ijk})^2 \right] \]
Jarak antara dua cluster merupakan jarak di antara dua Centroid kluster-kluster tersebut
\[ C_{i} = \frac{1}{M}\sum_{j=1}^{M}X_{j} \]
Permasalahan utama dalam Analisis Cluster adalah jumlah kelompok yang harus ditentukan oleh peneliti karena belum ada dasar yang kuat mengenai jumlah kelompok terbaik yang harus di pilih oleh peneliti. Langkah selanjutnya yaitu melakukan uji validitas cluster untuk mengevaluasi hasil dari Analisis Cluster secara kuantitatif sehingga dihasilkan kelompok yang optimum
Indeks Dunn mengevaluasi kualitas kluster dengan membandingkan jarak minimum antar cluster (separation) dan jarak maksimum dalam satu cluster (compactness). Indeks ini cenderung lebih tinggi jika cluster lebih terpisah dan kompak, sehingga semakin besar nilai Dunn, semakin baik kualitas cluster.
Indeks Davies-Bouldin mengevaluasi kualitas clustering berdasarkan rasio rata-rata jarak antara tiap pasangan cluster terhadap jarak pusat cluster. Indeks ini mengukur seberapa baik cluster dipisahkan; semakin rendah nilai Davies-Bouldin , semakin baik kualitas clustering.
\[ DB = \frac{1}{n}\sum_{i=1}^{n}max\left[ \frac{d'(C_{i})+ d' C_{j}}{d(C_{i},C_{j})} \right] \]
Indeks C mengukur kualitas clustering dengan menghitung rasio jumlah jarak antara pasangan titik dalam cluster terhadap jarak titik terdekat di luar cluster. Nilai ini digunakan untuk menilai separability dan compactness cluster, di mana nilai lebih rendah menunjukkan hasil cluster yang lebih baik.
\[ C= \frac{S-S_{min}}{S_{max}-S_{min}} \]
Indeks Silhouette mengevaluasi seberapa mirip objek dalam cluster mereka dibandingkan dengan objek di cluster lain. Nilai Silhouette berkisar dari -1 hingga 1; nilai mendekati 1 menunjukkan bahwa titik-titik berada di cluster yang benar, nilai mendekati 0 menunjukkan overlap antar cluster, dan nilai negatif menunjukkan bahwa titik lebih mirip ke cluster lain.
\[ GS_{u}= \frac{1}{c}\sum_{i=1}^{c}S(i) \]
Indeks Goodman-Kruskal mengukur kekuatan asosiasi antara dua variabel dengan mempertimbangkan urutan. Dalam konteks clustering, indeks ini dapat digunakan untuk menilai kesesuaian pengelompokan dengan atribut tambahan yang diukur, seperti urutan hierarki atau kategori tambahan. Nilainya berkisar antara -1 (berlawanan) hingga 1 (sangat sesuai); nilai lebih tinggi menunjukkan hubungan yang lebih baik antara hasil cluster dan variabel tambahan tersebut.
\[ GK = \frac{S_{c}- S_{d}}{S_{c}+S_{d}} \]
Data yang digunakan adalah data berat, tinggi, dan usia pemain timnas Voly Indonesia yang akan berlaga di Sea Grand Prix dapat diakses melalui link berikut : https://www.tribunnews.com/sport/2023/06/24/seava-grand-prix-daftar-18-pemain-timnas-voli-putra-indonesia-lengkap-umur-hingga-tinggi-badan
Tujuan penelitian ini adalah untuk mengelompokkan atlet voli berdasarkan tinggi dan berat badan menggunakan analisis cluster guna menentukan program latihan yang optimal sesuai karakteristik fisik tiap kelompok, sehingga dapat meningkatkan performa dan efektivitas tim.
> # Library
> library(psych)
> library(GPArotation)
Error in library(GPArotation): there is no package called 'GPArotation'
> library(clValid)
Error in library(clValid): there is no package called 'clValid'
> library(ggplot2)
> library(cluster)
> library(factoextra)
Error in library(factoextra): there is no package called 'factoextra'
> library(tidyverse)
Error in library(tidyverse): there is no package called 'tidyverse'
> library(car)
> library(readxl)> #input data
> data <- read_excel("D:/KULIII AH/Semester 5/ANMUL/dataproject.xlsx")
Error: `path` does not exist: 'D:/KULIII AH/Semester 5/ANMUL/dataproject.xlsx'
> data<-data.frame(data)
Error in as.data.frame.default(x[[i]], optional = TRUE): cannot coerce class '"function"' to a data.frame
> View(data)
Error in as.data.frame.default(x): cannot coerce class '"function"' to a data.frame> statdes <- summary(data)
Error in object[[i]]: object of type 'closure' is not subsettable
> statdes
Error in eval(expr, envir, enclos): object 'statdes' not found> # Uji Sampel Representatif
> kmo <- KMO(data[,2:4])
Error in data[, 2:4]: object of type 'closure' is not subsettable
> kmo
Error in eval(expr, envir, enclos): object 'kmo' not found> korelasi <- cor(data[,2:4], method = 'pearson')
Error in data[, 2:4]: object of type 'closure' is not subsettable
> korelasi
Error in eval(expr, envir, enclos): object 'korelasi' not found> datastand <- scale(data[,2:4])
Error in data[, 2:4]: object of type 'closure' is not subsettable
> datastand
Error in eval(expr, envir, enclos): object 'datastand' not found
> rownames(datastand) <- 1:nrow(datastand)
Error in nrow(datastand): object 'datastand' not found> jarak <- dist(datastand, method = "euclidean")
Error in as.matrix(x): object 'datastand' not found
> jarak
Error in eval(expr, envir, enclos): object 'jarak' not found> d1 <- dist(data[,2:4])
Error in data[, 2:4]: object of type 'closure' is not subsettable> hiers <- hclust(dist(data[,2:4]), method = "single")
Error in data[, 2:4]: object of type 'closure' is not subsettable
> #korelasi cophenetic
> hc1 <- hclust(d1, "single")
Error in hclust(d1, "single"): object 'd1' not found
> d2 <- cophenetic(hc1)
Error in cophenetic(hc1): object 'hc1' not found
> cors <- cor(d1,d2)
Error in is.data.frame(y): object 'd2' not found
> cors
Error in eval(expr, envir, enclos): object 'cors' not found> hierave <- hclust(dist(data[,2:4]), method = "ave")
Error in data[, 2:4]: object of type 'closure' is not subsettable
> #korelasi cophenetic
> hc2 <- hclust(d1, "ave")
Error in hclust(d1, "ave"): object 'd1' not found
> d3 <- cophenetic(hc2)
Error in cophenetic(hc2): object 'hc2' not found
> corave <- cor(d1,d3)
Error in is.data.frame(y): object 'd3' not found
> corave
Error in eval(expr, envir, enclos): object 'corave' not found> hiercomp <- hclust(dist(data[,2:4]), method = "complete")
Error in data[, 2:4]: object of type 'closure' is not subsettable
> #korelasi cophenetic
> hc3 <- hclust(d1, "complete")
Error in hclust(d1, "complete"): object 'd1' not found
> d4 <- cophenetic(hc3)
Error in cophenetic(hc3): object 'hc3' not found
> corcomp <- cor(d1,d4)
Error in is.data.frame(y): object 'd4' not found
> corcomp
Error in eval(expr, envir, enclos): object 'corcomp' not found> hiercen <- hclust(dist(data[,2:4]), method = "centroid")
Error in data[, 2:4]: object of type 'closure' is not subsettable
> #korelasi cophenetic
> hc4 <- hclust(d1, "centroid")
Error in hclust(d1, "centroid"): object 'd1' not found
> d5 <- cophenetic(hc4)
Error in cophenetic(hc4): object 'hc4' not found
> corcen <- cor(d1,d5)
Error in is.data.frame(y): object 'd5' not found
> corcen
Error in eval(expr, envir, enclos): object 'corcen' not found> hierward <- hclust(dist(data[,2:4]), method = "ward.D")
Error in data[, 2:4]: object of type 'closure' is not subsettable
> #korelasi cophenetic
> hc5 <- hclust(d1,"ward.D")
Error in hclust(d1, "ward.D"): object 'd1' not found
> d6 <- cophenetic(hc5)
Error in cophenetic(hc5): object 'hc5' not found
> corward <- cor(d1,d6)
Error in is.data.frame(y): object 'd6' not found
> corward
Error in eval(expr, envir, enclos): object 'corward' not found
>
> KorCop<-data.frame(cors,corave,corcomp,corcen,corward)
Error in data.frame(cors, corave, corcomp, corcen, corward): object 'cors' not found
> KorCop
Error in eval(expr, envir, enclos): object 'KorCop' not found> inval <- clValid(datastand, 2:4, clMethods = "hierarchical", validation = "internal", metric = "euclidean", method = "average")
Error in clValid(datastand, 2:4, clMethods = "hierarchical", validation = "internal", : could not find function "clValid"
> summary(inval)
Error in summary(inval): object 'inval' not found
> optimalScores(inval)
Error in optimalScores(inval): could not find function "optimalScores"
> plot(inval)
Error in plot(inval): object 'inval' not found> hirave <- hclust(dist(scale(data[,2:4])), method = "average")
Error in data[, 2:4]: object of type 'closure' is not subsettable
> hirave
Error in eval(expr, envir, enclos): object 'hirave' not found
> hirave <- hclust(dist(datastand), method = "average")
Error in as.matrix(x): object 'datastand' not found
> plot(hirave, labels = data$ATLET, hang = 1, col = "red", main = "Cluster Dendrogram", sub = " ", xlab = "ATLET", ylab = "Jarak")
Error in plot(hirave, labels = data$ATLET, hang = 1, col = "red", main = "Cluster Dendrogram", : object 'hirave' not found
>
> atlet <- data.frame(id = datastand, cutree(hirave, k = 2))
Error in data.frame(id = datastand, cutree(hirave, k = 2)): object 'datastand' not found
> atlet
Error in eval(expr, envir, enclos): object 'atlet' not found
>
> d <- dist(datastand)
Error in as.matrix(x): object 'datastand' not found
> hirave <- hclust(d, method = "average")
Error in hclust(d, method = "average"): object 'd' not found
> clusters <- cutree(hirave, k = 2)
Error in nrow(tree$merge): object 'hirave' not found
> plot(hirave, main = "Cluster Dendrogram", xlab = "ATLET", ylab = "Jarak")
Error in plot(hirave, main = "Cluster Dendrogram", xlab = "ATLET", ylab = "Jarak"): object 'hirave' not found
> rect.hclust(hirave, k = 2, border = "red")
Error in rect.hclust(hirave, k = 2, border = "red"): object 'hirave' not found> d <- dist(datastand) # Menghitung matriks jarak
Error in as.matrix(x): object 'datastand' not found
> hirave <- hclust(d, method = "average")
Error in hclust(d, method = "average"): object 'd' not found
> idclus <- cutree(hirave, k = 2)
Error in nrow(tree$merge): object 'hirave' not found
> clus_hier <- data.frame(id = data$ATLET, cluster = idclus)
Error in data$ATLET: object of type 'closure' is not subsettable
> plot(hirave, main = "Cluster Dendrogram", xlab = "ATLET", ylab = "Jarak")
Error in plot(hirave, main = "Cluster Dendrogram", xlab = "ATLET", ylab = "Jarak"): object 'hirave' not found
> rect.hclust(hirave, k = 2, border = "red") # Menampilkan kotak di sekitar cluster
Error in rect.hclust(hirave, k = 2, border = "red"): object 'hirave' not found
> idclus
Error in eval(expr, envir, enclos): object 'idclus' not found
> aggregate(data,list(idclus),mean)
Error in as.data.frame.default(x): cannot coerce class '"function"' to a data.frame> statdes <- summary(data)
Error in object[[i]]: object of type 'closure' is not subsettable
> statdes
Error in eval(expr, envir, enclos): object 'statdes' not foundPemain:
Usia:
Tinggi:
Berat:
> # Uji Sampel Representatif
> kmo <- KMO(data[,2:4])
Error in data[, 2:4]: object of type 'closure' is not subsettable
> kmo
Error in eval(expr, envir, enclos): object 'kmo' not foundMSA keseluruhan adalah 0.612, yang
berada di kisaran yang dapat diterima tetapi tidak ideal (biasanya nilai
di atas 0,7 dianggap baik untuk analisis faktor).0.612 menunjukkan bahwa data ini
“cukup” untuk analisis faktor, tetapi tidak kuat. Anda mungkin ingin
mengumpulkan lebih banyak data atau mempertimbangkan ukuran sampel yang
lebih besar.0.592 — nilai ini mendekati 0,6,
menunjukkan kecukupan yang cukup untuk analisis faktor.0.634 — nilai ini di atas 0,6,
yang lebih baik, menunjukkan variabel ini lebih sesuai untuk analisis
faktor.0.617 — nilai ini sedikit di
atas 0,6, menunjukkan variabel ini juga cukup memadai.Usia,
Tinggi, dan Berat setelah mempertimbangkan
pengaruh variabel lainnya.KMO diterapkan pada kolom Usia,
Tinggi, dan Berat dari data.Secara keseluruhan, KMO sebesar 0,612 menunjukkan bahwa analisis faktor dapat dilakukan tetapi mungkin tidak memberikan hasil yang sangat kuat karena nilai kecukupan yang agak rendah. Anda bisa mempertimbangkan untuk mengumpulkan lebih banyak data atau menggunakan metode lain jika analisis faktor ini tidak terlalu signifikan.
> korelasi <- cor(data[,2:4], method = 'pearson')
Error in data[, 2:4]: object of type 'closure' is not subsettable
> korelasi
Error in eval(expr, envir, enclos): object 'korelasi' not found1.000, yang menunjukkan korelasi
sempurna variabel dengan dirinya sendiri (misalnya, Usia
dengan Usia).0.288 menunjukkan korelasi positif yang sangat lemah antara
usia dan tinggi pemain.0.311
menunjukkan korelasi positif yang juga sangat lemah antara usia dan
berat.0.231 menunjukkan hubungan positif yang sangat lemah antara
tinggi dan berat.Secara umum, nilai korelasi antar variabel sangat rendah (kurang dari 0,5), yang menunjukkan bahwa tidak ada hubungan yang kuat di antara usia, tinggi, dan berat dalam dataset ini. Ini bisa berarti bahwa ketiga variabel tersebut tidak terlalu berkaitan satu sama lain dalam konteks ini.
Jika korelasi ini adalah dasar untuk analisis lebih lanjut (seperti analisis faktor atau analisis regresi), mungkin hasilnya tidak akan terlalu kuat, mengingat hubungan antar variabel yang lemah.
> jarak <- dist(datastand, method = "euclidean")
Error in as.matrix(x): object 'datastand' not found
> jarak
Error in eval(expr, envir, enclos): object 'jarak' not found0.6725311,
yang menunjukkan kemiripan relatif di antara kedua titik ini.6.0814315,
menunjukkan bahwa titik-titik ini memiliki karakteristik yang sangat
berbeda.1.0183602 atau titik 10 dan 11 dengan jarak
0.7465736) mungkin mengindikasikan adanya kelompok
(cluster) dalam dataset.Secara umum, analisis jarak ini membantu untuk menentukan kemiripan antara titik data dan dapat menjadi dasar untuk klasterisasi atau pemetaan hubungan dalam analisis lanjutan.
> hiers <- hclust(dist(data[,2:4]), method = "single")
Error in data[, 2:4]: object of type 'closure' is not subsettable
> #korelasi cophenetic
> hc1 <- hclust(d1, "single")
Error in hclust(d1, "single"): object 'd1' not found
> d2 <- cophenetic(hc1)
Error in cophenetic(hc1): object 'hc1' not found
> cors <- cor(d1,d2)
Error in is.data.frame(y): object 'd2' not found
> cors
Error in eval(expr, envir, enclos): object 'cors' not foundNilai koefisien korelasi cophenetic sebesar
0.9610518 menunjukkan korelasi yang sangat tinggi antara
matriks jarak asli (d1) dan matriks jarak cophenetic
(d2) yang dihasilkan dari dendrogram hasil klasterisasi
dengan metode single linkage.
>0.9)
mengindikasikan bahwa struktur dendrogram yang dihasilkan sangat baik
dalam merepresentasikan hubungan atau jarak antar data asli.Secara praktis, ini berarti metode single linkage yang digunakan dalam klasterisasi memberikan representasi yang akurat terhadap data asli.
> hiercomp <- hclust(dist(data[,2:4]), method = "complete")
Error in data[, 2:4]: object of type 'closure' is not subsettable
> #korelasi cophenetic
> hc3 <- hclust(d1, "complete")
Error in hclust(d1, "complete"): object 'd1' not found
> d4 <- cophenetic(hc3)
Error in cophenetic(hc3): object 'hc3' not found
> corcomp <- cor(d1,d4)
Error in is.data.frame(y): object 'd4' not found
> corcomp
Error in eval(expr, envir, enclos): object 'corcomp' not foundNilai koefisien korelasi cophenetic sebesar
0.9185552 pada metode complete linkage
menunjukkan korelasi yang tinggi antara matriks jarak asli
(d1) dan matriks jarak cophenetic (d4) yang
dihasilkan dari dendrogram dengan metode klasterisasi complete
linkage.
0.9610518).Kesimpulannya, complete linkage masih memberikan representasi yang cukup baik, namun jika tujuan utama adalah akurasi struktur jarak dalam dendrogram, single linkage mungkin memberikan hasil yang sedikit lebih baik untuk dataset ini.
> hiercen <- hclust(dist(data[,2:4]), method = "centroid")
Error in data[, 2:4]: object of type 'closure' is not subsettable
> #korelasi cophenetic
> hc4 <- hclust(d1, "centroid")
Error in hclust(d1, "centroid"): object 'd1' not found
> d5 <- cophenetic(hc4)
Error in cophenetic(hc4): object 'hc4' not found
> corcen <- cor(d1,d5)
Error in is.data.frame(y): object 'd5' not found
> corcen
Error in eval(expr, envir, enclos): object 'corcen' not foundNilai koefisien korelasi cophenetic sebesar
0.9735477 untuk metode centroid linkage
menunjukkan korelasi yang sangat tinggi antara matriks jarak asli
(d1) dan matriks jarak cophenetic (d5) yang
dihasilkan dari dendrogram dengan metode centroid linkage.
0.9610518) dan complete linkage (0.9185552),
sehingga centroid linkage adalah metode yang paling akurat dalam
merepresentasikan struktur jarak dalam dataset ini.Secara keseluruhan, hasil ini menunjukkan bahwa centroid linkage mungkin menjadi pilihan terbaik untuk klasterisasi data ini jika tujuan utamanya adalah memaksimalkan akurasi dalam representasi jarak asli.
> hierward <- hclust(dist(data[,2:4]), method = "ward.D")
Error in data[, 2:4]: object of type 'closure' is not subsettable
> #korelasi cophenetic
> hc5 <- hclust(d1,"ward.D")
Error in hclust(d1, "ward.D"): object 'd1' not found
> d6 <- cophenetic(hc5)
Error in cophenetic(hc5): object 'hc5' not found
> corward <- cor(d1,d6)
Error in is.data.frame(y): object 'd6' not found
> corward
Error in eval(expr, envir, enclos): object 'corward' not foundNilai koefisien korelasi cophenetic sebesar
0.8060853 untuk metode Ward’s linkage
menunjukkan korelasi yang cukup tinggi antara matriks jarak asli
(d1) dan matriks jarak cophenetic (d6) yang
dihasilkan dari dendrogram dengan metode Ward.
0.9735477), single linkage
(0.9610518), dan complete linkage
(0.9185552).Namun, perlu dicatat bahwa Ward’s linkage biasanya dioptimalkan untuk meminimalkan variabilitas dalam kluster, sehingga meskipun korelasinya lebih rendah, metode ini sering menghasilkan kluster yang lebih kompak dan terpisah dengan baik.
> KorCop<-data.frame(cors,corave,corcomp,corcen,corward)
Error in data.frame(cors, corave, corcomp, corcen, corward): object 'cors' not found
> KorCop
Error in eval(expr, envir, enclos): object 'KorCop' not foundSecara keseluruhan, Average Linkage memberikan hasil terbaik dalam menjaga struktur jarak asli, diikuti oleh Centroid Linkage dan Single Linkage
> inval <- clValid(datastand, 2:4, clMethods = "hierarchical", validation = "internal", metric = "euclidean", method = "average")
Error in clValid(datastand, 2:4, clMethods = "hierarchical", validation = "internal", : could not find function "clValid"
> summary(inval)
Error in summary(inval): object 'inval' not found
> optimalScores(inval)
Error in optimalScores(inval): could not find function "optimalScores"
> plot(inval)
Error in plot(inval): object 'inval' not foundInterpretasi Matriks Validasi
Kesimpulan Metode hierarkis dengan 2 klaster adalah pilihan yang optimal untuk dataset ini, berdasarkan metrik validasi yang menunjukkan klaster dengan kualitas terbaik
> hirave <- hclust(dist(scale(data[,2:4])), method = "average")
Error in data[, 2:4]: object of type 'closure' is not subsettable
> hirave
Error in eval(expr, envir, enclos): object 'hirave' not found
> hirave <- hclust(dist(datastand), method = "average")
Error in as.matrix(x): object 'datastand' not found
> plot(hirave, labels = data$ATLET, hang = 1, col = "red", main = "Cluster Dendrogram", sub = " ", xlab = "ATLET", ylab = "Jarak")
Error in plot(hirave, labels = data$ATLET, hang = 1, col = "red", main = "Cluster Dendrogram", : object 'hirave' not foundOutput ini menunjukkan detail dari model klasterisasi hierarkis yang diterapkan pada dataset menggunakan metode average linkage dengan jarak Euclidean pada data yang telah di-scale (distanstandarisasi).
Penggunaan data yang telah di-scale memastikan bahwa setiap variabel memiliki kontribusi yang seimbang dalam perhitungan jarak, tanpa dipengaruhi oleh perbedaan skala.
Penjelasan Plot
Secara keseluruhan, dendrogram ini membantu untuk melihat pola pengelompokan atlet berdasarkan karakteristik yang digunakan dalam analisis
> atlet <- data.frame(id = datastand, cutree(hirave, k = 2))
Error in data.frame(id = datastand, cutree(hirave, k = 2)): object 'datastand' not found
> atlet
Error in eval(expr, envir, enclos): object 'atlet' not foundDalam hasil klasterisasi ini, terdapat dua klaster yang terbentuk berdasarkan data usia, tinggi badan, dan berat badan yang telah distandarisasi. Sebagian besar data (16 dari 18 baris) dikelompokkan ke dalam klaster 1, sementara hanya satu data (baris ke-17) yang dikelompokkan ke dalam klaster 2. Ini menunjukkan bahwa sebagian besar observasi memiliki karakteristik yang serupa, sementara observasi di baris ke-17 memiliki perbedaan yang signifikan, sehingga dikelompokkan secara terpisah.
Secara keseluruhan, klaster 1 berisi mayoritas data, sedangkan klaster 2 hanya berisi satu data yang berbeda dari yang lainnya.
> d <- dist(datastand)
Error in as.matrix(x): object 'datastand' not found
> hirave <- hclust(d, method = "average")
Error in hclust(d, method = "average"): object 'd' not found
> clusters <- cutree(hirave, k = 2)
Error in nrow(tree$merge): object 'hirave' not found
> plot(hirave, main = "Cluster Dendrogram", xlab = "ATLET", ylab = "Jarak")
Error in plot(hirave, main = "Cluster Dendrogram", xlab = "ATLET", ylab = "Jarak"): object 'hirave' not found
> rect.hclust(hirave, k = 2, border = "red")
Error in rect.hclust(hirave, k = 2, border = "red"): object 'hirave' not foundDendrogram ini menunjukkan hasil dari hierarchical clustering pada data atlet dengan metode “average linkage.” Di sumbu vertikal, jarak antar kelompok ditunjukkan, di mana semakin tinggi garis penghubung antara dua kelompok, semakin besar perbedaan atau jarak antara kelompok tersebut.
Pada dendrogram ini, terdapat beberapa kelompok yang bergabung pada jarak rendah, seperti atlet nomor 15, 18, 5, dan 8, yang berarti mereka memiliki karakteristik yang mirip satu sama lain dibandingkan dengan kelompok lain. Kelompok yang baru bergabung pada jarak yang lebih tinggi, seperti 17 dan 4, memiliki perbedaan yang lebih besar dari kelompok lainnya.
Jika kita ingin menentukan jumlah kelompok, kita bisa melihat di tingkat jarak tertentu, misalnya pada jarak sekitar 2 atau 3, untuk mengidentifikasi berapa banyak kelompok utama yang terbentuk.
> d <- dist(datastand) # Menghitung matriks jarak
Error in as.matrix(x): object 'datastand' not found
> hirave <- hclust(d, method = "average")
Error in hclust(d, method = "average"): object 'd' not found
> idclus <- cutree(hirave, k = 2)
Error in nrow(tree$merge): object 'hirave' not found
> clus_hier <- data.frame(id = data$ATLET, cluster = idclus)
Error in data$ATLET: object of type 'closure' is not subsettable
> plot(hirave, main = "Cluster Dendrogram", xlab = "ATLET", ylab = "Jarak")
Error in plot(hirave, main = "Cluster Dendrogram", xlab = "ATLET", ylab = "Jarak"): object 'hirave' not found
> rect.hclust(hirave, k = 2, border = "red") # Menampilkan kotak di sekitar cluster
Error in rect.hclust(hirave, k = 2, border = "red"): object 'hirave' not foundDendrogram yang telah diberi kotak merah ini menunjukkan bahwa terdapat dua kelompok utama yang terbentuk, dengan pemisahan pada jarak sekitar 3. Kelompok pertama terdiri dari atlet 17 dan 4, yang bergabung di bagian paling awal (kiri atas), menunjukkan bahwa mereka memiliki perbedaan yang cukup signifikan dibandingkan dengan kelompok lainnya.
Kelompok kedua mencakup sisa atlet lainnya, yang memiliki lebih banyak subkelompok yang bergabung di jarak lebih rendah. Dalam kelompok ini, kita dapat melihat bahwa beberapa atlet bergabung pada jarak yang lebih kecil, seperti atlet 15, 18, 5, dan 8, yang menunjukkan kemiripan lebih dekat di antara mereka.
Secara keseluruhan, garis merah menegaskan dua kelompok utama dalam data ini, dengan atlet 17 dan 4 membentuk satu kelompok terpisah dari atlet lainnya.
> idclus
Error in eval(expr, envir, enclos): object 'idclus' not foundBerdasarkan hasil idclus ini, tampak bahwa atlet nomor
17 berada di kluster 2, sedangkan semua atlet lainnya berada di kluster
1. Ini konsisten dengan interpretasi dendrogram yang menunjukkan dua
kelompok utama: satu kelompok terpisah untuk atlet 17 (kluster 2) dan
satu kelompok besar untuk sisanya (kluster 1).
Dengan demikian, analisis kluster ini menunjukkan bahwa atlet nomor 17 memiliki karakteristik yang cukup berbeda dari atlet lainnya, sehingga dia dipisahkan menjadi kluster tersendiri.
> aggregate(data,list(idclus),mean)
Error in as.data.frame.default(x): cannot coerce class '"function"' to a data.frameHasil perhitungan agregat menunjukkan perbedaan karakteristik antara kedua kluster:
Dari data ini, terlihat bahwa atlet di Kluster 2 (yaitu atlet 17) berbeda secara signifikan dalam hal usia, tinggi, dan berat dibandingkan dengan atlet lainnya di Kluster 1. Atlet di Kluster 1 rata-rata jauh lebih muda, sedikit lebih pendek, dan lebih ringan daripada atlet di Kluster 2.
Perbedaan usia yang ekstrem pada atlet di Kluster 2 menjelaskan mengapa ia dipisahkan menjadi kluster tersendiri dalam analisis klustering ini.
Analisis klustering menunjukkan dua kelompok utama pada data atlet. Kluster 1 terdiri dari 17 atlet dengan usia rata-rata 23,4 tahun, tinggi 188,6 cm, dan berat 77,5 kg. Kluster 2 hanya terdiri dari atlet nomor 17, yang memiliki karakteristik berbeda dengan usia 86 tahun, tinggi 196 cm, dan berat 86 kg. Perbedaan signifikan, terutama pada usia, membuat atlet 17 terpisah dalam kluster tersendiri.