library

library(dplyr)
## 
## Attaching package: 'dplyr'
## The following objects are masked from 'package:stats':
## 
##     filter, lag
## The following objects are masked from 'package:base':
## 
##     intersect, setdiff, setequal, union
library(ggplot2)
library(readxl)
library(factoextra)
## Welcome! Want to learn more? See two factoextra-related books at https://goo.gl/ve3WBa
library(FactoMineR)
library(ggfortify)
library(ca)

input Data

library(readxl)
data_uas <- read_xlsx("C:/Users/gamal/OneDrive/Documents/Fathoni/TPG/DATA UAS 2025.xlsx")
## Warning: Coercing text to numeric in E6743 / R6743C5: '95'
## Warning: Coercing text to numeric in F6743 / R6743C6: '91'
## Warning: Coercing text to numeric in G6743 / R6743C7: '90'
## Warning: Coercing text to numeric in H6743 / R6743C8: '69'
## Warning: Coercing text to numeric in I6743 / R6743C9: '79'
## Warning: Coercing text to numeric in J6743 / R6743C10: '87'
## Warning: Coercing text to numeric in K6743 / R6743C11: '92'
## Warning: Coercing text to numeric in L6743 / R6743C12: '97'
head(data_uas)
## # A tibble: 6 × 13
##      No status `Kabupaten / Kota` jenjang standar_isi standar_proses
##   <dbl> <chr>  <chr>              <chr>         <dbl>          <dbl>
## 1     1 Swasta KABUPATEN BOGOR    SMA              95             94
## 2     2 Swasta KABUPATEN BOGOR    SMK              95             88
## 3     3 Swasta KABUPATEN BOGOR    SMK              97            100
## 4     4 Swasta KABUPATEN BOGOR    SMK              91             95
## 5     5 Swasta KABUPATEN BOGOR    SMK              95             97
## 6     6 Swasta KABUPATEN BOGOR    SMK              97             91
## # ℹ 7 more variables: standar_kompetensi_lulusan <dbl>, standar_ptk <dbl>,
## #   standar_sarpras <dbl>, standar_pengelolaan <dbl>, standar_pembiyaan <dbl>,
## #   standar_penilaian <dbl>, peringkat <chr>
data_uas
## # A tibble: 6,742 × 13
##       No status `Kabupaten / Kota` jenjang standar_isi standar_proses
##    <dbl> <chr>  <chr>              <chr>         <dbl>          <dbl>
##  1     1 Swasta KABUPATEN BOGOR    SMA              95             94
##  2     2 Swasta KABUPATEN BOGOR    SMK              95             88
##  3     3 Swasta KABUPATEN BOGOR    SMK              97            100
##  4     4 Swasta KABUPATEN BOGOR    SMK              91             95
##  5     5 Swasta KABUPATEN BOGOR    SMK              95             97
##  6     6 Swasta KABUPATEN BOGOR    SMK              97             91
##  7     7 Swasta KABUPATEN BOGOR    SMK              91             90
##  8     8 Swasta KABUPATEN BOGOR    SMK             100             95
##  9     9 Swasta KABUPATEN BOGOR    SMA              90             93
## 10    10 Swasta KABUPATEN SUKABUMI SMK              94             97
## # ℹ 6,732 more rows
## # ℹ 7 more variables: standar_kompetensi_lulusan <dbl>, standar_ptk <dbl>,
## #   standar_sarpras <dbl>, standar_pengelolaan <dbl>, standar_pembiyaan <dbl>,
## #   standar_penilaian <dbl>, peringkat <chr>

1. Analisis Gerombol - Metode Ward

Rata-rata tiap standar

data_sma <- data_uas %>%
  filter(jenjang == "SMA") %>%
  group_by(`Kabupaten / Kota`) %>%
  summarise(
    rata2_isi = mean(standar_isi, na.rm = TRUE),
    rata2_proses = mean(standar_proses, na.rm = TRUE),
    rata2_kompetensi = mean(standar_kompetensi_lulusan, na.rm = TRUE),
    rata2_ptk = mean(standar_ptk, na.rm = TRUE),
    rata2_sarpras = mean(standar_sarpras, na.rm = TRUE),
    rata2_pengelolaan = mean(standar_pengelolaan, na.rm = TRUE),
    rata2_pembiyaan = mean(standar_pembiyaan, na.rm = TRUE),
    rata2_penilaian = mean(standar_penilaian, na.rm = TRUE)
  )

row.names(data_sma) <- data_sma$`Kabupaten / Kota`
## Warning: Setting row names on a tibble is deprecated.
data_sma_num <- scale(data_sma[, -1])

K-Means

fviz_nbclust(data_sma_num, FUNcluster = kmeans, method = "silhouette")

Berdasarkan kriteria koefisien silhouette, maka k-means yang dpilih adalah 2

Dendogram

dist_sma <- dist(data_sma_num, method = "euclidean")
hc_sma <- hclust(dist_sma, method = "ward.D2")

fviz_dend(hc_sma, k = 2, rect = TRUE, cex = 0.7)
## Warning: `aes_string()` was deprecated in ggplot2 3.0.0.
## ℹ Please use tidy evaluation idioms with `aes()`.
## ℹ See also `vignette("ggplot2-in-packages")` for more information.
## ℹ The deprecated feature was likely used in the factoextra package.
##   Please report the issue at <https://github.com/kassambara/factoextra/issues>.
## This warning is displayed once every 8 hours.
## Call `lifecycle::last_lifecycle_warnings()` to see where this warning was
## generated.
## Warning: Using `size` aesthetic for lines was deprecated in ggplot2 3.4.0.
## ℹ Please use `linewidth` instead.
## ℹ The deprecated feature was likely used in the factoextra package.
##   Please report the issue at <https://github.com/kassambara/factoextra/issues>.
## This warning is displayed once every 8 hours.
## Call `lifecycle::last_lifecycle_warnings()` to see where this warning was
## generated.
## Warning: The `<scale>` argument of `guides()` cannot be `FALSE`. Use "none" instead as
## of ggplot2 3.3.4.
## ℹ The deprecated feature was likely used in the factoextra package.
##   Please report the issue at <https://github.com/kassambara/factoextra/issues>.
## This warning is displayed once every 8 hours.
## Call `lifecycle::last_lifecycle_warnings()` to see where this warning was
## generated.

Hierarchical Clustering

hc_sma <- eclust(data_sma_num,stand = TRUE,FUNcluster = "hclust", k=2, hc_method = "ward.D2", hc_metric = "euclidean")
hc_sma$cluster
##  [1] 1 1 2 2 2 2 2 1 1 2 2 2 2 2 1 2 2 1 2 2 2 1 2 2 1 1

Interpretasi gerombol yang terbentuk

aggregate(data_sma_num,by =list(gerombol=hc_sma$cluster), FUN = mean)
##   gerombol  rata2_isi rata2_proses rata2_kompetensi  rata2_ptk rata2_sarpras
## 1        1 -0.8984578   -1.0837038       -0.8751457 -0.8585306    -1.0621854
## 2        2  0.4756541    0.5737256        0.4633125  0.4545162     0.5623335
##   rata2_pengelolaan rata2_pembiyaan rata2_penilaian
## 1        -1.0660022      -0.7006402      -0.8092117
## 2         0.5643541       0.3709272       0.4284062
fviz_cluster(hc_sma)

pca_sma <- prcomp(data_sma_num)
pca_sma$rotation
##                         PC1         PC2         PC3         PC4        PC5
## rata2_isi         0.3664070  0.30535691  0.23549816 -0.20498546  0.6664767
## rata2_proses      0.3942345  0.22773432 -0.11982057 -0.22477326 -0.3429716
## rata2_kompetensi  0.3672687  0.11281312 -0.29784139  0.75828387 -0.1321272
## rata2_ptk         0.2660299 -0.70927631  0.20996149  0.04769952 -0.1552069
## rata2_sarpras     0.3517402 -0.49354829  0.06708462 -0.18576402  0.1477664
## rata2_pengelolaan 0.4120520  0.01545753 -0.04694348  0.26010607  0.3419497
## rata2_pembiyaan   0.3459525  0.06173264 -0.56832194 -0.47732054 -0.2079148
## rata2_penilaian   0.3024495  0.30241493  0.68388337 -0.01378165 -0.4632919
##                           PC6         PC7          PC8
## rata2_isi          0.41154515  0.09833015 -0.227585696
## rata2_proses      -0.15138816  0.76311587  0.070302728
## rata2_kompetensi   0.14901802 -0.04127811 -0.383816553
## rata2_ptk          0.53548547  0.13709008  0.223983439
## rata2_sarpras     -0.56957175 -0.07995892 -0.490958243
## rata2_pengelolaan -0.35293786 -0.12983087  0.708353399
## rata2_pembiyaan    0.21577706 -0.48262744  0.054439837
## rata2_penilaian   -0.05678296 -0.36236591 -0.003212464

Pengelompokkan dengan menggunakan koefisien k-means sebesar 2, menghasilkan 2 gerombol utama yang terpisah cukup jelas. Di mana gerombol 1 memiliki nilai negatif di seluruh rata-rata standarnya, sedangkan gerombol 2 memiliki nilai positif di seluruh rata-rata standarnya. Yang mengartikan, SMA terpisah menjadi 2 gerombol berdasarkan rata-rata seluruh standarnya.

2. Analisis Biplot

data_smp <- data_uas %>%
  filter(jenjang == "SMP") %>%
  group_by(`Kabupaten / Kota`) %>%
  summarise(
    isi = mean(standar_isi, na.rm = TRUE),
    proses = mean(standar_proses, na.rm = TRUE),
    kl = mean(standar_kompetensi_lulusan, na.rm = TRUE),
    ptk = mean(standar_ptk, na.rm = TRUE),
    sarpras = mean(standar_sarpras, na.rm = TRUE),
    pengelolaan = mean(standar_pengelolaan, na.rm = TRUE),
    pembiyaan = mean(standar_pembiyaan, na.rm = TRUE),
    penilaian = mean(standar_penilaian, na.rm = TRUE)
  )
row.names(data_smp) <- data_smp$`Kabupaten / Kota`
## Warning: Setting row names on a tibble is deprecated.
pca_smp <- prcomp(data_smp[, -1], scale. = TRUE)

fviz_pca_biplot(pca_smp, repel = TRUE)

) Kab/kota 20, 22, 19, 13 berada jauh di kanan yang berarti memiliki standar tinggi, terutama pembiayaan, pengelolaan, penilaian, dan kompetensi lulusan ) Titik di sisi kiri (misalnya 6, 2, 4, 16, 18, 8) memiliki nilai standar lebih rendah dan konsisten di hampir semua standar. *) Variabel pembiayaan, kompetensi lulusan, pengelolaan, dan penilaian memiliki panah paling panjang yang berarti berkontribusi paling kuat terhadap perbedaan antar daerah

3. Analisis Korespondensi

tab_ca <- table(data_uas$jenjang, data_uas$peringkat)

ca_res <- CA(tab_ca, graph = FALSE)
fviz_ca_biplot(ca_res, repel = TRUE) 

) SMA dan SMP cenderung memiliki akreditasi A ) SD cenderung memiliki akredtasi B *) Sementara SMK memilki akreditasi C