Library:

> # install.packages("knitr")
> # install.packages("rmarkdown")
> # install.packages("prettydoc")
> # install.packages("equatiomatic")

1 PENDAHULUAN

1.1 Latar Belakang

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.

1.2 Tinjauan Pustaka

1.2.1 Analisis Cluster

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 :

  • Sifat variabel (diskrit, kontinu, biner)
  • Skala pengukuran (nominal, ordinal, Interval, rasio)
  • Karakteristik masalah yang diteliti

1.2.2 Jarak Euclidean

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 :

  • Variabel-variabel tidak berkorelasi satu sama lain
  • Skala data interval atau rasio
  • Variabel kontinu \[ d = \sqrt{(x_{2}-x_{1})^2 + (y_{2}-y_{1})^2} \]

1.2.3 Jarak Mahalanobis

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:

  • Pearson Correlation distance
  • Eisen Cosine Correlation distance
  • Spearman Correlation distance
  • Kendall Correlation distance

\[ d = \sqrt{(x-y')S^{-1}(x-y)} \]

1.2.4 Jarak Manhattan

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| \]

1.2.5 Single Linkage

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.

1.2.6 Complete Linkage

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

1.2.7 Average Linkage

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} \]

1.2.8 Ward’s Method

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] \]

1.2.9 Centroid Method

Jarak antara dua cluster merupakan jarak di antara dua Centroid kluster-kluster tersebut

\[ C_{i} = \frac{1}{M}\sum_{j=1}^{M}X_{j} \]

1.2.10 Validitas cluster

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

1.2.10.1 Indeks Dunn

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.

1.2.10.2 Indeks Davies-Bouldin (DB)

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] \]

1.2.10.3 Indeks C

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}} \]

1.2.10.4 Indeks Global Silhoutte (GSu)

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) \]

1.2.10.5 Indeks Goodman-Kruskal (GK)

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}} \]

1.3 Data

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

1.4 Tujuan

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.

2 SOURCE CODE

2.1 Library

> # 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)

2.2 Impor Data

> #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

2.3 Statistika Deskriptif

> 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

2.4 Uji Asumsi

> # 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

2.5 Uji Non-Multikolinearitas

> 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

2.6 Standarisasi

> 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

2.7 Jarak Euclidean

> 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

2.8 Koefisien Korelasi Cophenetic

> d1 <- dist(data[,2:4])
Error in data[, 2:4]: object of type 'closure' is not subsettable

2.9 Single Linkage

> 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

2.10 Average Linkage

> 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

2.11 Complete Linkage

> 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

2.12 Centorid Linkage

> 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

2.13 Ward

> 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

2.14 Indeks Validitas

> 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

2.15 Metode Average Linkage

> 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

2.16 Membangun Dendogram dengan hclust

> 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

3 HASIL DAN PEMBAHASAN

3.1 Statistika Deskriptif

> 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

Pemain:

  • Length: Ada 18 entri, yang mengindikasikan terdapat 18 pemain.
  • Class: Tipe data adalah character, yang berarti nama atau ID pemain.

Usia:

  • Min: Usia termuda adalah 19 tahun.
  • 1st Qu.: Kuartil pertama (25%) adalah 21,25 tahun.
  • Median: Usia tengah (median) adalah 24 tahun.
  • Mean: Rata-rata usia pemain adalah 26,89 tahun.
  • 3rd Qu.: Kuartil ketiga (75%) adalah 25,75 tahun.
  • Max: Usia tertua adalah 29 tahun

Tinggi:

  • Min: Tinggi terendah adalah 174 cm.
  • 1st Qu.: Kuartil pertama (25%) adalah 186,2 cm.
  • Median: Median tinggi adalah 190 cm.
  • Mean: Rata-rata tinggi pemain adalah 189 cm.
  • 3rd Qu.: Kuartil ketiga (75%) adalah 193 cm.
  • Max: Tinggi tertinggi adalah 196 cm.

Berat:

  • Min: Berat terendah adalah 65 kg.
  • 1st Qu.: Kuartil pertama (25%) adalah 71,5 kg.
  • Median: Median berat adalah 78 kg.
  • Mean: Rata-rata berat adalah 78 kg.
  • 3rd Qu.: Kuartil ketiga (75%) adalah 81,5 kg.
  • Max: Berat tertinggi adalah 95 kg.

3.2 Uji Sampel Representatif

> # 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
  1. MSA (Measure of Sampling Adequacy):
    • Nilai MSA 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).
    • Secara umum, KMO 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.
  2. MSAi (Individual MSA):
    • Usia: 0.592 — nilai ini mendekati 0,6, menunjukkan kecukupan yang cukup untuk analisis faktor.
    • Tinggi: 0.634 — nilai ini di atas 0,6, yang lebih baik, menunjukkan variabel ini lebih sesuai untuk analisis faktor.
    • Berat: 0.617 — nilai ini sedikit di atas 0,6, menunjukkan variabel ini juga cukup memadai.
    • Secara keseluruhan, nilai MSA per variabel berada di sekitar 0,6, yang berada pada ambang batas kecukupan untuk analisis faktor.
  3. Image (Matriks Korelasi Anti-Gambar):
    • Matriks ini menunjukkan korelasi antara variabel setelah memperhitungkan variabel-variabel lain. Nilai diagonal matriks adalah 1, yang menunjukkan korelasi sempurna variabel dengan dirinya sendiri.
    • Korelasi antar variabel relatif rendah, dengan nilai negatif yang menunjukkan asosiasi lemah antara Usia, Tinggi, dan Berat setelah mempertimbangkan pengaruh variabel lainnya.
  4. ImCov (Matriks Kovarian Anti-Gambar):
    • Ini adalah matriks kovarian setelah koreksi berdasarkan variabel lain.
    • Hasil ini menunjukkan variasi antar variabel setelah pengaruh variabel lain dipertimbangkan. Nilai negatif menunjukkan bahwa beberapa hubungan antar variabel cukup lemah atau bahkan negatif.
  5. Call (Panggilan Fungsi):
    • Fungsi 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.

3.3 Uji Non-Multikoliniertias

> 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
  1. Diagonal (Korelasi dengan Diri Sendiri):
    • Nilai diagonal adalah 1.000, yang menunjukkan korelasi sempurna variabel dengan dirinya sendiri (misalnya, Usia dengan Usia).
  2. Korelasi Antar Variabel:
    • Usia dan Tinggi: Korelasi sebesar 0.288 menunjukkan korelasi positif yang sangat lemah antara usia dan tinggi pemain.
    • Usia dan Berat: Korelasi sebesar 0.311 menunjukkan korelasi positif yang juga sangat lemah antara usia dan berat.
    • Tinggi dan Berat: Korelasi sebesar 0.231 menunjukkan hubungan positif yang sangat lemah antara tinggi dan berat.

3.3.1 Interpretasi

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.

3.4 Jarak Euclidean

> 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
  1. Jarak Rendah (Dekat):
    • Pasangan dengan jarak rendah menunjukkan bahwa titik-titik tersebut memiliki kesamaan atau kemiripan yang tinggi.
    • Contoh: Titik 2 dan 3 memiliki jarak sebesar 0.6725311, yang menunjukkan kemiripan relatif di antara kedua titik ini.
  2. Jarak Tinggi (Jauh):
    • Pasangan dengan jarak tinggi menunjukkan perbedaan yang signifikan antara kedua titik.
    • Contoh: Titik 4 dan 17 memiliki jarak 6.0814315, menunjukkan bahwa titik-titik ini memiliki karakteristik yang sangat berbeda.
  3. Pola Jarak:
    • Titik-titik yang berdekatan secara konsisten (misalnya, titik 8 dan 12 dengan jarak 1.0183602 atau titik 10 dan 11 dengan jarak 0.7465736) mungkin mengindikasikan adanya kelompok (cluster) dalam dataset.
    • Sebaliknya, nilai yang lebih besar bisa menunjukkan bahwa titik-titik tersebut mungkin termasuk dalam kelompok atau cluster yang berbeda.

Secara umum, analisis jarak ini membantu untuk menentukan kemiripan antara titik data dan dapat menjadi dasar untuk klasterisasi atau pemetaan hubungan dalam analisis lanjutan.

3.5 Single Linkage

> 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

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

3.5.1 Interpretasi:

  • Korelasi tinggi ini (>0.9) mengindikasikan bahwa struktur dendrogram yang dihasilkan sangat baik dalam merepresentasikan hubungan atau jarak antar data asli.
  • Dengan kata lain, dendrogram mampu mempertahankan struktur jarak antar titik data dengan sangat baik, sehingga hasil klasterisasi bisa diandalkan untuk mewakili hubungan atau kemiripan dalam dataset.

Secara praktis, ini berarti metode single linkage yang digunakan dalam klasterisasi memberikan representasi yang akurat terhadap data asli.

3.6 Complete Linkage

> 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

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

3.6.1 Interpretasi:

  • Korelasi sebesar 0.9185552 masih menunjukkan hubungan yang kuat, tetapi sedikit lebih rendah dibandingkan dengan korelasi pada metode single linkage (0.9610518).
  • Ini berarti dendrogram hasil complete linkage juga cukup baik dalam merepresentasikan struktur jarak antar data asli, meskipun tidak seakurat single linkage dalam hal ini.

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.

3.7 Centroid Linkage

> 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

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

3.7.1 Interpretasi:

  • Korelasi sebesar 0.9735477 menunjukkan bahwa centroid linkage memberikan representasi yang sangat akurat dari struktur jarak asli antar titik data.
  • Ini adalah nilai tertinggi dibandingkan dengan metode single 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.

3.8 Ward’s Methode

> 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

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

3.8.1 Interpretasi:

  • Korelasi sebesar 0.8060853 menunjukkan bahwa Ward’s linkage memberikan representasi yang lumayan baik terhadap struktur jarak asli, namun korelasinya lebih rendah dibandingkan metode centroid linkage (0.9735477), single linkage (0.9610518), dan complete linkage (0.9185552).
  • Dengan korelasi yang lebih rendah, Ward’s linkage mungkin kurang ideal untuk merepresentasikan jarak asli dalam dataset ini.

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.

3.9 Tabel Koefisien Korelasi cophenetic

> 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

3.9.1 Interpretasi:

  • Average Linkage memiliki korelasi tertinggi (0.978147), menunjukkan bahwa metode ini paling akurat dalam merepresentasikan struktur jarak asli dalam dataset.
  • Centroid Linkage (0.9735477) dan Single Linkage (0.9610518) juga memiliki korelasi tinggi, menjadikannya pilihan yang baik untuk representasi jarak.
  • Complete Linkage memiliki korelasi yang cukup baik (0.9185552), tetapi lebih rendah dibanding metode di atas.
  • Ward’s Linkage memiliki korelasi paling rendah (0.8060853), sehingga mungkin kurang ideal dalam merepresentasikan jarak asli, meskipun metode ini sering kali menghasilkan kluster yang lebih kompak.

Secara keseluruhan, Average Linkage memberikan hasil terbaik dalam menjaga struktur jarak asli, diikuti oleh Centroid Linkage dan Single Linkage

3.10 Uji Validitas

> 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

Interpretasi Matriks Validasi

  • Connectivity: Semakin rendah nilainya, semakin baik hasil klasterisasi, karena menunjukkan klaster yang lebih terhubung. Nilai connectivity terendah adalah 2.9290 untuk 2 klaster.
  • Dunn Index: Semakin tinggi nilainya, semakin baik klaster yang terbentuk, karena ini mengindikasikan jarak yang lebih besar antara klaster yang berbeda. Nilai tertinggi untuk Dunn adalah 0.9421 untuk 2 klaster.
  • Silhouette: Semakin tinggi nilai silhouette, semakin baik kualitas klaster, karena ini menunjukkan seberapa dekat data berada di dalam klaster mereka sendiri dibandingkan dengan klaster lainnya. Nilai tertinggi silhouette adalah 0.5913 untuk 2 klaster.
  • Optimal Scores Hasil dari optimalScores(inval) mengonfirmasi bahwa konfigurasi optimal diperoleh dengan 2 klaster, di mana semua metrik (Connectivity, Dunn, dan Silhouette) memiliki nilai terbaik.

Kesimpulan Metode hierarkis dengan 2 klaster adalah pilihan yang optimal untuk dataset ini, berdasarkan metrik validasi yang menunjukkan klaster dengan kualitas terbaik

3.11 CLuster Hirarki Metode Average Linkage

> 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

Output 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).

3.11.1 Rincian

  • Metode Klasterisasi: average linkage — klasterisasi dibentuk berdasarkan rata-rata jarak antar elemen klaster.
  • Jarak: Euclidean — menghitung jarak antar objek menggunakan metrik Euclidean.
  • Jumlah Objek: 18 — terdapat 18 objek (baris data) dalam dataset yang dianalisis.

Penggunaan data yang telah di-scale memastikan bahwa setiap variabel memiliki kontribusi yang seimbang dalam perhitungan jarak, tanpa dipengaruhi oleh perbedaan skala.

Penjelasan Plot

  • Sumbu Y (Jarak): Menunjukkan jarak atau dissimilarity antar klaster. Semakin tinggi cabang yang menghubungkan dua klaster, semakin besar perbedaan antar klaster tersebut.
  • Sumbu X (Atlet): Menunjukkan objek atau atlet dalam dataset.
  • Struktur Klaster: Atlet yang digabungkan pada level rendah (dekat sumbu X) memiliki kemiripan yang tinggi. Misalnya, atlet 5 dan 8 tergabung pada jarak yang rendah, menunjukkan kemiripan yang tinggi.
  • Kelompok Besar: Dendrogram dapat dipotong pada level tertentu di sumbu Y untuk membentuk kelompok atau klaster besar. Misalnya, jika dipotong pada jarak sekitar 2.5, kita bisa mendapatkan sekitar 3 klaster besar.

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 found

Dalam 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 found

Dendrogram 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 found

Dendrogram 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 found

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

3.12 Aggregate

> aggregate(data,list(idclus),mean)
Error in as.data.frame.default(x): cannot coerce class '"function"' to a data.frame

Hasil perhitungan agregat menunjukkan perbedaan karakteristik antara kedua kluster:

  1. Kluster 1:
    • Usia rata-rata: 23.41 tahun
    • Tinggi rata-rata: 188.59 cm
    • Berat rata-rata: 77.53 kg
  2. Kluster 2:
    • Usia: 86 tahun (tampaknya ini nilai tunggal dari atlet 17 yang berada di kluster ini)
    • Tinggi: 196 cm
    • Berat: 86 kg

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.

4 KESIMPULAN

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.

5 DAFTAR PUSTAKA