Penyaji : Rupmana Br Butar Butar, Zulhijrah dan Mahda Al Maida
Deskripsi Tugas
Pada project ini akan melakukan penggerombolan provinsi berdasarkan rata-rata mutu SMA yang diukur menurut skor peubah Mutu Lulusan, Proses pembelajaran, Mutu Guru dan Manajemen menggunakan algoritma Fuzzy C-Means Clustering.
Dataset yang digunakan merepresentasikan mutu SMA di Indonesia dengan empat indikator utama yaitu Mutu Lulusan, Proses Pembelajaran, Mutu Guru, dan Manajemen S/M, juga terdapat informasi akreditasi serta status sekolah. Data ini akan digunakan untuk analisis mutu pendidikan antar provinsi dengan melakukan pengelompokan provinsi dengan metode clustering.
Fuzzy C-Means
Fuzzy C-Means (FCM) adalah metode tak berhirarki yang mana keberadaan tiap-tiap titik data dalam suatu gerombol ditentukan oleh derajat keanggotaan.
Algoritma FCM
1. Inisiasi
Tentukan:
- \(N\)$ : jumlah data - \(C\) : Jumlah cluster - \(m > 1\) : fuzziness parameter (umumnya \(m = 2\)) - \(\varepsilon\) : Toleransi error untuk konvergensi
Bangkitkan matriks keanggotaan awal \(U = [u_{ij}]\) secara acak dengan syarat
\[ \sum_{j=1}^{C} u_{ij} = 1, \quad \forall i = 1, \ldots, N \]
dimana \(u_{ij}\) = derajat keanggotaan data \(i\) ke cluster \(j\).
3. Update matriks keanggotaan Update \(u_{ij}\) dengan formula: \[ u_{ij} = \frac{1}{\sum_{k=1}^{C} \left( \frac{\lVert x_i - v_j \rVert}{\lVert x_i - v_k \rVert} \right)^{\tfrac{2}{m-1}}} \] dimana \(\lVert x_i - v_j \rVert\) adalah jarak (biasanya menggunakan Euclidean) antara data \(x_{i}\) dan centroid \(v_{j}\).
4. Cek fungsi objektif Fungsi objektif FCM sebagai berikut: \[ J_m = \sum_{i=1}^{N} \sum_{j=1}^{C} (u_{ij})^m \, \lVert x_i - v_j \rVert^2 \] - Hitung \(J_{m}\) pada iterasi ke-\(t\). - Jika \(\lvert J_m^{(t)} - J_m^{(t-1)} \rvert < \varepsilon\) (atau perbedaan matriks keanggotaan sangat kecil), maka berhenti. - Jika tidak, kembali ke langkah 2.
5. Hasil Akhir - Matriks keanggotaan U : menunjukkan proporsi keanggotaan tiap data di tiap cluster. - Centroid \(v_{j}\) : pusat tiap cluster. - Cluster label keras diperoleh dengan aturan maximum membership sebagai berikut \[ \text{Cluster}(x_i) = \arg \max_{j} \; u_{ij} \]
Packages
# Library yang digunakanlibrary(tidyverse)
Warning: package 'dplyr' was built under R version 4.4.3
── Attaching core tidyverse packages ──────────────────────── tidyverse 2.0.0 ──
✔ dplyr 1.1.4 ✔ readr 2.1.5
✔ forcats 1.0.0 ✔ stringr 1.5.1
✔ ggplot2 3.5.1 ✔ tibble 3.2.1
✔ lubridate 1.9.3 ✔ tidyr 1.3.1
✔ purrr 1.0.2
── Conflicts ────────────────────────────────────────── tidyverse_conflicts() ──
✖ dplyr::filter() masks stats::filter()
✖ dplyr::lag() masks stats::lag()
ℹ Use the conflicted package (<http://conflicted.r-lib.org/>) to force all conflicts to become errors
library(readxl)
Warning: package 'readxl' was built under R version 4.4.3
library(factoextra)
Warning: package 'factoextra' was built under R version 4.4.3
Welcome! Want to learn more? See two factoextra-related books at https://goo.gl/ve3WBa
Warning: package 'umap' was built under R version 4.4.3
library(ggpubr)
Attaching package: 'ggpubr'
The following objects are masked from 'package:datawizard':
mean_sd, median_mad
library(forcats)library(e1071) # cmeans (FCM)
Warning: package 'e1071' was built under R version 4.4.3
Attaching package: 'e1071'
The following objects are masked from 'package:parameters':
kurtosis, skewness
The following objects are masked from 'package:datawizard':
kurtosis, skewness
Attaching package: 'rlang'
The following objects are masked from 'package:purrr':
%@%, flatten, flatten_chr, flatten_dbl, flatten_int, flatten_lgl,
flatten_raw, invoke, splice
library(corrplot)
corrplot 0.95 loaded
library(ggrepel)library(sf)
Linking to GEOS 3.12.1, GDAL 3.8.4, PROJ 9.3.1; sf_use_s2() is TRUE
# A tibble: 34 × 5
Provinsi Mutu_Lulusan Proses_Pembelajaran Mutu_Guru Manajemen_SM
<chr> <dbl> <dbl> <dbl> <dbl>
1 ACEH 85.0 84.5 82.1 85.4
2 BALI 93.4 91.9 91.9 95.5
3 BANTEN 91.3 90.4 88.3 92.1
4 BENGKULU 93.4 88.5 87.0 91.2
5 DI YOGYAKARTA 91.8 92.0 87.1 93.7
6 DKI JAKARTA 94.5 91.1 88.8 92.7
7 GORONTALO 87.4 85.8 83.9 89.2
8 JAMBI 91.9 89.2 88.8 93.1
9 JAWA BARAT 91.6 90.1 88.3 93.1
10 JAWA TENGAH 92.5 91.0 88.5 93.3
# ℹ 24 more rows
Penjelasan Data:
1. Struktur Data
Dataset ini berisi 1.144 baris yang merepresentasikan sekolah-sekolah di Indonesia dan 11 kolom yang berisi berbagai informasi terkait identitas sekolah, status, lokasi, mutu, dan akreditasi. Setiap baris menggambarkan satu sekolah, sedangkan setiap kolom berfungsi sebagai variabel yang mendeskripsikan karakteristik atau penilaian sekolah tersebut.
2. Informasi Identitas Sekolah
Kolom NPSN menjadi pengenal unik untuk setiap sekolah, sedangkan kolom TAHUN menunjukkan periode data yang digunakan, yaitu tahun 2020. Kolom Status.Sekolah membedakan sekolah menjadi dua kategori, yaitu Negeri dan Swasta, sehingga analisis perbandingan mutu berdasarkan status sekolah dapat dilakukan.
3. Informasi Lokasi
Kolom Provinsi dan Kab.Kota menunjukkan lokasi geografis sekolah. Informasi ini berguna untuk analisis distribusi mutu dan akreditasi berdasarkan wilayah administratif, sehingga dapat mengidentifikasi pola atau disparitas mutu antar daerah.
4. Nilai Mutu Sekolah
Empat kolom numerik Mutu Lulusan, Proses Pembelajaran, Mutu Guru, dan Manajemen S/M merepresentasikan penilaian mutu sekolah dalam bentuk skor, umumnya pada skala 0–100. Nilai ini menggambarkan kualitas lulusan, proses pembelajaran, kualitas tenaga pengajar, serta kualitas manajemen sekolah.
5. Peringkat Akreditasi
Kolom Peringkat.Akreditasi menunjukkan peringkat akreditasi sekolah yang dikategorikan menjadi A, B, C, atau TT (tidak terakreditasi).
# Menyiapkan matrix numerik level provinsi dan scalingnum_vars <-c("Mutu_Lulusan", "Proses_Pembelajaran", "Mutu_Guru", "Manajemen_SM")# pastikan data.prov sudah adaX <- data.prov %>% dplyr::select(all_of(num_vars)) %>%as.data.frame()# versi dengan rownames utk FCMdf.prov <- Xrownames(df.prov) <- data.prov$Provinsi# scaling utk PCA/UMAP/fviz_nbclustX_scaled <-scale(X)xc <-attr(X_scaled, "scaled:center")xs <-attr(X_scaled, "scaled:scale")
Eksplorasi Data
# Ringkasan Awal Dataplot_intro(data = data.prov,ggtheme =theme_minimal())
Plot di atas menunjukkan bahwa 20% kolom dalam dataset bertipe diskret, yang mencakup variabel kategorik seperti status sekolah, provinsi, kabupaten/kota, dan peringkat akreditasi. Sementara itu, 80% kolom lainnya merupakan kolom kontinu, yang berisi data numerik seperti mutu lulusan, mutu proses pembelajaran, mutu guru, dan mutu manajemen sekolah. Selain itu, data ini tergolong bersih dan lengkap karena tidak ada kolom yang sepenuhnya kosong, tidak ada observasi yang hilang, dan seluruh baris data terisi penuh. Kondisi ini menunjukkan bahwa dataset siap digunakan untuk analisis lebih lanjut tanpa perlu proses imputasi atau pembersihan data tambahan.
`stat_bin()` using `bins = 30`. Pick better value with `binwidth`.
Histogram pada plot ini menggambarkan distribusi empat variabel numerik, yaitu Manajemen S/M, Mutu Guru, Mutu Lulusan, dan Proses Pembelajaran. Secara umum, keempat variabel menunjukkan sebaran nilai yang relatif terkonsentrasi pada rentang 80 hingga 95, mengindikasikan kualitas sekolah yang cukup baik secara keseluruhan.
Pada variabel Manajemen S/M, distribusi nilai banyak berkumpul di sekitar rentang 88–92, menunjukkan bahwa mayoritas sekolah memiliki skor manajemen yang tinggi dan cukup merata. Variabel Mutu Guru juga memperlihatkan kecenderungan serupa, dengan konsentrasi nilai pada rentang 85–90, menandakan bahwa kualitas tenaga pengajar di sebagian besar sekolah berada pada tingkat baik hingga sangat baik.
Untuk variabel Mutu Lulusan, sebagian besar nilai terkonsentrasi di sekitar angka 88–92, yang menunjukkan kualitas lulusan yang konsisten dan cenderung homogen antar sekolah. Sementara itu, variabel Proses Pembelajaran menampilkan distribusi yang lebih bervariasi, meskipun puncak frekuensinya berada di sekitar rentang 86–88. Hal ini mengindikasikan adanya sedikit perbedaan antar sekolah dalam aspek proses pembelajaran, meskipun sebagian besar masih berada pada kategori yang cukup baik.
Matriks korelasi pada plot ini menunjukkan hubungan antara keempat variabel numerik, yaitu Mutu Lulusan, Proses Pembelajaran, Mutu Guru, dan Manajemen S/M. Secara umum, semua variabel memiliki korelasi positif yang cukup kuat satu sama lain, menandakan bahwa peningkatan pada satu aspek mutu sekolah cenderung diikuti oleh peningkatan pada aspek lainnya.
Korelasi tertinggi terlihat antara Mutu Lulusan dan Proses Pembelajaran dengan nilai 0,92, menunjukkan bahwa kualitas proses pembelajaran memiliki pengaruh yang sangat besar terhadap mutu lulusan sekolah. Korelasi yang juga cukup kuat terlihat antara Mutu Lulusan dan Mutu Guru (0,89) serta antara Mutu Lulusan dan Manajemen S/M (0,88), yang mengindikasikan bahwa kualitas guru dan manajemen sekolah juga berkontribusi signifikan terhadap hasil lulusan.
Sementara itu, korelasi terendah terdapat antara Mutu Guru dan Manajemen S/M dengan nilai 0,74. Meskipun korelasi ini masih tergolong kuat, nilainya yang lebih rendah dibandingkan pasangan variabel lain menunjukkan bahwa hubungan antara kualitas guru dan manajemen sekolah tidak sekuat hubungan variabel lainnya.
# Long formatdata.prov_long <- data.prov %>%pivot_longer(cols =c(Mutu_Lulusan, Proses_Pembelajaran, Mutu_Guru, Manajemen_SM),names_to ="Peubah", values_to ="Skor")# Flag outlier per peubah (rule 1.5*IQR)data.flag <- data.prov_long %>%group_by(Peubah) %>%mutate(q1 =quantile(Skor, 0.25, na.rm =TRUE),q3 =quantile(Skor, 0.75, na.rm =TRUE),iqr = q3 - q1,low = q1 -1.5* iqr,high = q3 +1.5* iqr,is_out = Skor < low | Skor > high ) %>%ungroup()# Plot: box berwarna berbeda, titik hanya untuk outlierggplot(data.flag, aes(x = Peubah, y = Skor, fill = Peubah)) +geom_boxplot(width =0.6, outlier.shape =NA, alpha =0.9, color ="#444444") +geom_point(data =~ dplyr::filter(.x, is_out),aes(x = Peubah, y = Skor),inherit.aes =FALSE,shape =21, size =3,color ="black", fill ="firebrick2", stroke =0.3 ) +scale_fill_brewer(palette ="Set2", guide ="none") +labs(title ="Sebaran skor per peubah (level provinsi)",x =NULL, y ="Skor (rata-rata per provinsi)" ) +theme_minimal(base_size =12) +theme(axis.text.x =element_text(angle =15, hjust =1),panel.grid.minor =element_blank() ) +scale_y_continuous(expand =expansion(mult =c(0.05, 0.08)))
Boxplot tersebut menunjukkan sebaran skor rata-rata per provinsi untuk empat aspek mutu, yaitu Manajemen Sekolah, Mutu Guru, Mutu Lulusan, dan Proses Pembelajaran. Secara umum, skor ketiga aspek Manajemen Sekolah, Mutu Lulusan, dan Proses Pembelajaran berada pada kisaran yang relatif tinggi, yakni sekitar 88–92. Namun, Mutu Guru memiliki median yang lebih rendah dibanding aspek lainnya, sekitar 86, serta rentang sebaran yang lebih lebar, menunjukkan variasi antarprovinsi yang lebih besar. Terdapat pula beberapa outlier, seperti provinsi dengan skor rendah pada Manajemen Sekolah dan Proses Pembelajaran, yang ditandai dengan titik merah di bawah boxplot. Hal ini mengindikasikan bahwa kualitas manajemen, lulusan, dan proses pembelajaran relatif merata dan tinggi, sementara mutu guru cenderung lebih bervariasi.
# Outlier per provinsi untuk satu variabelflag_outlier <-function(df, prov_col, value_col) { df %>%group_by({{prov_col}}) %>%mutate(q1 =quantile({{value_col}}, 0.25, na.rm =TRUE),q3 =quantile({{value_col}}, 0.75, na.rm =TRUE),iqr = q3 - q1,low = q1 -1.5* iqr,high = q3 +1.5* iqr,is_out = {{value_col}} < low | {{value_col}} > high ) %>%ungroup()}# Box plot per provinsi utk satu variabelplot_by_prov <-function(df, prov_col, value_col, title_txt, xlab_txt, fill_color) {## urutkan provinsi berdasarkan median variabel yg dipilih prov_order <- df %>%group_by({{prov_col}}) %>%summarize(med =median({{value_col}}, na.rm =TRUE), .groups ="drop") %>%arrange(med) %>%pull({{prov_col}}) df2 <- df %>%mutate({{prov_col}} :=factor({{prov_col}}, levels = prov_order)) %>%flag_outlier({{prov_col}}, {{value_col}})ggplot(df2, aes(x = {{value_col}}, y = {{prov_col}})) +geom_boxplot(outlier.shape =NA, # sembunyikan titik defaultwidth =0.6,fill = fill_color,color ="#444444",alpha =0.95 ) +geom_point( # tampilkan HANYA outlierdata = dplyr::filter(df2, is_out),aes(x = {{value_col}}, y = {{prov_col}}),inherit.aes =FALSE,shape =21, size =1.5,fill ="goldenrod1", color ="black", stroke =0.25 ) +labs(title = title_txt, x = xlab_txt, y ="Provinsi") +theme_minimal(base_size =12) +theme(axis.text.x =element_text(size =10),panel.grid.minor =element_blank() )}# Box plot Mutu Lulusanp1 <-plot_by_prov( data, Provinsi, `Mutu Lulusan`,"Sebaran Mutu Lulusan Antar Provinsi", "Mutu Lulusan","#1E90FF"# DodgerBlue)p1
# Box plot Proses Pembelajaranp2 <-plot_by_prov( data, Provinsi, `Proses Pembelajaran`,"Sebaran Proses Pembelajaran Antar Provinsi", "Proses Pembelajaran","#FF1493"# DarkOrange)p2
1. Sebaran Mutu Lulusan Antar Provinsi
Plot ini menunjukkan variasi mutu lulusan antar provinsi. Sebagian besar provinsi memiliki mutu lulusan yang tinggi, berada di kisaran 85–95. Namun, ada beberapa outlier dengan mutu jauh lebih rendah (sekitar 60–70), menunjukkan adanya ketimpangan kualitas lulusan antar sekolah di beberapa daerah. Provinsi seperti Kalimantan Barat, Nusa Tenggara Timur, dan Sulawesi Barat tampak lebih beragam dengan sebaran lebar, sedangkan provinsi seperti DKI Jakarta dan Bali lebih homogen.
2. Sebaran Proses Pembelajaran Antar Provinsi
Sebagian besar provinsi menunjukkan proses pembelajaran yang cukup baik, dengan nilai terkonsentrasi di atas 85. Meskipun demikian, terdapat beberapa provinsi dengan outlier yang rendah (di bawah 60), menandakan adanya perbedaan kualitas proses pembelajaran antar sekolah dalam provinsi tersebut. Distribusi cenderung lebih rapat dibanding mutu lulusan, yang berarti kualitas proses pembelajaran relatif lebih seragam antar provinsi, walaupun masih ada sedikit perbedaan yang cukup mencolok.
3. Sebaran Mutu Guru Antar Provinsi
Mutu guru antar provinsi memperlihatkan variasi yang lebih lebar dibanding mutu lulusan dan proses pembelajaran. Ada provinsi dengan sebaran sangat tinggi (mencapai 100), namun juga ditemukan outlier rendah (bahkan di bawah 50). Hal ini menandakan masih adanya kesenjangan kompetensi guru antar sekolah dalam satu provinsi maupun antar provinsi. Provinsi seperti Papua, NTT, dan Sulawesi Barat memperlihatkan variasi besar, sementara provinsi seperti DKI Jakarta dan Bali relatif lebih stabil.
4. Sebaran Manajemen Sekolah/Madrasah Antar Provinsi
Sebaran manajemen sekolah/madrasah cenderung cukup baik dengan mayoritas provinsi memiliki skor di atas 80. Namun, terlihat cukup banyak outlier dengan nilai rendah (bahkan sekitar 40–50), menunjukkan adanya sekolah yang masih jauh tertinggal dari standar manajemen yang baik. Secara umum, perbedaan antar provinsi cukup besar, dengan beberapa daerah menonjol di kategori tinggi (seperti Bali dan Jawa), sementara daerah lain masih memiliki tantangan besar dalam tata kelola sekolah.
Visualisasi di atas memperlihatkan pemetaan provinsi berdasarkan kesamaan karakteristik (misalnya dari hasil analisis multivariat atau embedding). Terlihat adanya pola pemisahan: provinsi seperti DKI Jakarta, Jawa Tengah, DI Yogyakarta, Bali, dan Jawa Barat mengelompok di sisi kiri atas, menunjukkan kinerja atau kualitas yang relatif lebih baik. Sementara provinsi di kanan bawah seperti Aceh, Nusa Tenggara Timur, Sulawesi Utara, dan Kalimantan Selatan cenderung berada di kelompok dengan kondisi relatif lebih rendah. Provinsi lainnya tersebar di antara kedua kutub ini, membentuk gradasi dari kategori tinggi ke rendah.
## UMAPset.seed(123)umap0 <-umap(d = X_scaled)data_umap <-data.frame(x = umap0$layout[,1], y = umap0$layout[,2])ggscatter( data_umap, x ="x", y ="y",label = data.prov$Provinsi, repel =TRUE,font.label =c(9, "plain", "grey50"))
Algoritma UMAP, melibatkan elemen random initialization, sehingga mungkin menghasilkan hasil yang berbeda. Kalau random seed tidak diset sama, hasil bisa sedikit berbeda tiap kali dijalankan, apalagi di komputer berbeda.
Pada plot ini, provinsi juga tersebar membentuk pola gradasi. Tampak ada kelompok di kiri atas (provinsi dengan capaian tinggi, seperti DKI Jakarta, DI Yogyakarta, Bali), kelompok di kanan bawah (provinsi dengan capaian relatif rendah, seperti Aceh, NTT, Sulawesi Utara, Kalimantan Selatan), serta kelompok transisi di tengah (seperti Sumatera Barat, Riau, Jawa Timur). Dari pola ini, jumlah klaster yang mungkin berkisar antara 2 sampai 3 klaster, dengan satu klaster unggul, satu tertinggal, dan satu menengah.
# Menentukan k (Silhouette hard dari FCM)fcm_fun <-function(x, k, m =2, iter.max =200){ fit <- e1071::cmeans(x, centers = k, m = m, iter.max = iter.max,verbose =FALSE, method ="cmeans") hard_labels <-apply(fit$membership, 1, which.max)structure(list(cluster = hard_labels), class ="fcm_fit")}set.seed(123)nb <-fviz_nbclust(x = X_scaled,FUNcluster = fcm_fun,method ="silhouette",k.max =10)print(nb)
Plot ini menunjukkan hasil perhitungan silhouette method untuk menentukan jumlah klaster optimal. Terlihat bahwa nilai average silhouette width tertinggi dicapai pada k = 2, sekitar 0,52, yang berarti pemisahan klaster paling baik terjadi jika data dibagi menjadi dua kelompok. Setelah k = 2, nilai silhouette terus menurun, menandakan kualitas pemisahan klaster semakin berkurang. Dengan demikian, jumlah klaster yang optimal untuk data ini adalah 2 klaster.
Penerapan Fuzzy C-Means (FCM)
set.seed(123)# Ambil hanya kolom numerikdata.prov1 <- data.prov %>%select(-Provinsi) %>%select(where(is.numeric))# Ubah ke data.frame biasa dan set rownames = Provinsidf.prov <-as.data.frame(data.prov1)rownames(df.prov) <- data.prov$Provinsi# Jalankan FCMfit_fcm <-cmeans(df.prov, centers =2, m =2, iter.max =100) # banyak klaster (centers) = 2fit_fcm
Fuzzy c-means clustering with 2 clusters
Cluster centers:
Mutu_Lulusan Proses_Pembelajaran Mutu_Guru Manajemen_SM
1 85.04329 83.75096 80.87780 85.20111
2 90.67665 89.02655 87.44265 91.59086
Memberships:
1 2
ACEH 0.983476521 0.01652348
BALI 0.122295554 0.87770445
BANTEN 0.016973502 0.98302650
BENGKULU 0.045575201 0.95442480
DI YOGYAKARTA 0.060564505 0.93943550
DKI JAKARTA 0.077264555 0.92273544
GORONTALO 0.532389870 0.46761013
JAMBI 0.027741782 0.97225822
JAWA BARAT 0.024248626 0.97575137
JAWA TENGAH 0.046238623 0.95376138
JAWA TIMUR 0.066539451 0.93346055
KALIMANTAN BARAT 0.871354757 0.12864524
KALIMANTAN SELATAN 0.644028679 0.35597132
KALIMANTAN TENGAH 0.038810302 0.96118970
KALIMANTAN TIMUR 0.039589524 0.96041048
KALIMANTAN UTARA 0.020787961 0.97921204
KEPULAUAN BANGKA BELITUNG 0.063130245 0.93686976
KEPULAUAN RIAU 0.132681823 0.86731818
LAMPUNG 0.244858192 0.75514181
MALUKU 0.629820143 0.37017986
MALUKU UTARA 0.015035875 0.98496412
NUSA TENGGARA BARAT 0.925670195 0.07432980
NUSA TENGGARA TIMUR 0.924230711 0.07576929
PAPUA 0.107688446 0.89231155
PAPUA BARAT 0.971194003 0.02880600
RIAU 0.005605432 0.99439457
SULAWESI BARAT 0.902631589 0.09736841
SULAWESI SELATAN 0.308173775 0.69182622
SULAWESI TENGAH 0.343615241 0.65638476
SULAWESI TENGGARA 0.214522126 0.78547787
SULAWESI UTARA 0.959193239 0.04080676
SUMATERA BARAT 0.022540553 0.97745945
SUMATERA SELATAN 0.270127215 0.72987278
SUMATERA UTARA 0.069988894 0.93001111
Closest hard clustering:
ACEH BALI BANTEN
1 2 2
BENGKULU DI YOGYAKARTA DKI JAKARTA
2 2 2
GORONTALO JAMBI JAWA BARAT
1 2 2
JAWA TENGAH JAWA TIMUR KALIMANTAN BARAT
2 2 1
KALIMANTAN SELATAN KALIMANTAN TENGAH KALIMANTAN TIMUR
1 2 2
KALIMANTAN UTARA KEPULAUAN BANGKA BELITUNG KEPULAUAN RIAU
2 2 2
LAMPUNG MALUKU MALUKU UTARA
2 1 2
NUSA TENGGARA BARAT NUSA TENGGARA TIMUR PAPUA
1 1 2
PAPUA BARAT RIAU SULAWESI BARAT
1 2 1
SULAWESI SELATAN SULAWESI TENGAH SULAWESI TENGGARA
2 2 2
SULAWESI UTARA SUMATERA BARAT SUMATERA SELATAN
1 2 2
SUMATERA UTARA
2
Available components:
[1] "centers" "size" "cluster" "membership" "iter"
[6] "withinerror" "call"
Hasil Fuzzy C-Means clustering dengan 2 klaster menunjukkan bahwa provinsi di Indonesia dapat dikelompokkan menjadi dua kelompok berdasarkan mutu lulusan, proses pembelajaran, mutu guru, dan manajemen sekolah. Klaster pertama memiliki rata-rata indikator lebih rendah (mutu lulusan ~85, proses pembelajaran ~83, mutu guru ~81, manajemen sekolah ~85), sedangkan klaster kedua memiliki nilai lebih tinggi (mutu lulusan ~91, proses pembelajaran ~89, mutu guru ~87, manajemen sekolah ~92).
Dari hasil di atas:
Provinsi dengan membership sangat tinggi (≥0.9), misalnya Riau (0.99 ke Klaster 2), Kalimantan Utara (0.98 ke Klaster 2), dan Maluku Utara (0.98 ke Klaster 2), bisa dianggap jelas termasuk ke klaster tersebut.
Provinsi dengan membership menengah (0.6–0.8), seperti Lampung (0.75 ke Klaster 2), Sulawesi Selatan (0.69 ke Klaster 2), atau Sulawesi Tengah (0.66 ke Klaster 2), sebenarnya masih lebih condong ke klaster 2, tetapi kedekatannya tidak sekuat provinsi yang membership-nya >0.9.
Provinsi borderline (~0.5), seperti Gorontalo (0.53 vs 0.47) dan Maluku (0.63 vs 0.37), bisa ditentukan penempatannya secara fleksibel sesuai konteks: apakah ingin lebih ketat (ikut klaster dominan) atau ingin menandai bahwa provinsi tersebut “berada di antara dua klaster”.
Namun, disini kami mengidentifikasi bahwa cluster yang nilai peluang yang lebih besar, maka provinsi tersebut masuk di cluster tersebut.
# Visualize dengan corrplotcolnames(fit_fcm$membership) <-c(1, 2)corrplot(fit_fcm$membership,is.corr =FALSE,tl.cex =0.6, # kecilkan teks label provinsitl.col ="black", # warna labeltl.srt =45, # tegak lurus biar rapi cl.cex =0.6, # kecilkan angka legend (0.01–0.99)cl.ratio =0.2, # tipiskan legendcl.align.text ="l"# geser angka legend ke kiri agar tidak menabrak kotak)
Plot ini memperlihatkan nilai keanggotaan (membership) Fuzzy C-Means tiap provinsi terhadap klaster dominannya. Nilai berada pada rentang 0 – 1, di mana:
Mendekati 1 → provinsi sangat jelas masuk ke klaster tertentu (keanggotaan kuat).
0,6 – 0,79 → provinsi condong ke suatu klaster, tapi masih ada ketidakpastian.
≤ 0,5 → provinsi relatif ambigu, tidak jelas masuk klaster mana.
Dari plot ini terlihat:
Provinsi dengan nilai ~0,9 – 0,99: Aceh, Bali, Banten, dll → keanggotaan sangat kuat.
Provinsi dengan nilai ~0,7 – 0,8: Jambi, Jawa Barat, Jawa Tengah, dll → masih condong tapi tidak sekuat kelompok pertama.
Provinsi dengan nilai ~0,5: Maluku → ambigu.
Provinsi dengan nilai rendah (< 0,4): terlihat sangat tidak pasti, misalnya Sulawesi Selatan, Sulawesi Tengah, dll → provinsi ini sulit dipastikan cluster mana karna keanggotaanya rendah.
Lebih jelasnya:
Provinsi dengan nilai ~0,9 – 0,99 (Aceh, Bali, Banten, dll): Nilai yang sangat tinggi ini menunjukkan bahwa provinsi-provinsi ini memiliki karakteristik yang sangat mirip dengan “pusat” dari cluster tersebut. Mereka adalah anggota yang paling pasti dan dominan dalam kelompok itu.
Provinsi dengan nilai ~0,7 – 0,8 (Jambi, Jawa Barat, Jawa Tengah): Nilai ini menunjukkan kecenderungan yang kuat untuk menjadi bagian dari kelompok tersebut, tetapi tidak sekuat provinsi dengan nilai di atas 0,9. Ini berarti ada sedikit karakteristik mereka yang mirip dengan cluster lain, namun dominansi satu cluster tetap jelas.
Provinsi dengan nilai ~0,5 (Maluku): Nilai ini adalah contoh terbaik dari hasil Fuzzy C-Means. Angka 0,5 (atau mendekati 0,5) menunjukkan ambiguitas. Provinsi ini “sama-sama” mirip dengan dua atau lebih cluster. Tidak ada satu pun kelompok yang menjadi pilihan utama baginya.
Provinsi dengan nilai rendah (<0,4) (Sulawesi Selatan, Sulawesi Tengah, dll): Penjelasan Anda sangat bagus. Nilai rendah ini menandakan bahwa provinsi-provinsi ini tidak memiliki keanggotaan yang kuat dalam cluster tersebut. Itu sebabnya mereka “sulit dipastikan” masuk ke mana, karena mereka mungkin memiliki nilai keanggotaan yang lebih tinggi di cluster lain (bukan cluster 1 maupun 2).
## PCApca0 <-prcomp(X_scaled, center =FALSE, scale. =FALSE)pca_df <-data.frame(Provinsi = data.prov$Provinsi,PC1 = pca0$x[,1],PC2 = pca0$x[,2],Cluster = hard_named,MaxU = res.prov$Max_Membership)# % varvar_exp <- (pca0$sdev^2) /sum(pca0$sdev^2)pc1_lab <-paste0("PC1 (", round(100*var_exp[1], 1), "%)")pc2_lab <-paste0("PC2 (", round(100*var_exp[2], 1), "%)")ggplot(pca_df, aes(PC1, PC2, color = Cluster)) +geom_point(size =3, alpha =0.9) +geom_text_repel(aes(label = Provinsi), size =3, max.overlaps =50, show.legend =FALSE) +labs(title ="PCA: Sebaran Provinsi per Klaster (FCM)",x = pc1_lab, y = pc2_lab, color ="Klaster") +theme_minimal(base_size =12)
# UMAPumap0 <-umap(X_scaled)umap_df <-data.frame(Provinsi = data.prov$Provinsi,x = umap0$layout[,1],y = umap0$layout[,2],Cluster = hard_named,MaxU = res.prov$Max_Membership)ggplot(umap_df, aes(x, y, color = Cluster)) +geom_point(size =3, alpha =0.9) +geom_text_repel(aes(label = Provinsi), size =3, max.overlaps =50, show.legend =FALSE) +labs(title ="UMAP: Sebaran Provinsi per Klaster (FCM)",x ="x", y ="y", color ="Klaster") +theme_minimal(base_size =12)
Reading layer `Indonesia_Province' from data source
`D:\KULIAH\Semester 3\Pemodelan Klasifikasi\TUGAS 1\Indonesia_Province'
using driver `ESRI Shapefile'
Simple feature collection with 34 features and 1 field
Geometry type: MULTIPOLYGON
Dimension: XY
Bounding box: xmin: 95.00971 ymin: -11.00761 xmax: 141.0194 ymax: 6.076941
Geodetic CRS: WGS 84
# Data membership hasil FCM (contoh dari plot yang kamu kasih)hasil_cluster <-data.frame(provinsi =c("Aceh","Bali","Banten","Bengkulu","DI Yogyakarta","DKI Jakarta","Gorontalo","Jambi","Jawa Barat","Jawa Tengah","Jawa Timur","Kalimantan Barat","Kalimantan Selatan","Kalimantan Tengah","Kalimantan Timur","Kalimantan Utara","Bangka Belitung","Kepulauan Riau","Lampung","Maluku","Maluku Utara","Nusa Tenggara Barat","Nusa Tenggara Timur","Papua","Papua Barat","Riau","Sulawesi Barat","Sulawesi Selatan","Sulawesi Tengah","Sulawesi Tenggara","Sulawesi Utara","Sumatera Barat","Sumatera Selatan","Sumatera Utara"),membership =c(0.99,0.9,0.9,0.8,0.7,0.7,0.6,0.6,0.6,0.6,0.6,0.6,0.6,0.6,0.5,0.5,0.5,0.5,0.4,0.4,0.4,0.3,0.3,0.3,0.2,0.2,0.2,0.2,0.1,0.1,0.1,0.1,0.1,0.01))# Join dengan shapefilepeta_cluster <- peta %>%left_join(hasil_cluster, by =c("NAME_1"="provinsi"))# Plot gradasi membershipggplot(peta_cluster) +geom_sf(aes(fill = membership), color ="white") +scale_fill_gradient(low ="yellow", high ="red") +geom_sf_text(aes(label = NAME_1), size =2) +# Tambahkan label provinsiannotation_north_arrow(location ="tr", which_north ="true",style =north_arrow_fancy_orienteering()) +# Tambahkan panah utaratheme_minimal() +labs(fill ="Membership")
Warning in st_point_on_surface.sfc(sf::st_zm(x)): st_point_on_surface may not
give correct results for longitude/latitude data
Wilayah Indonesia Barat (Sumatera, Jawa, sebagian Kalimantan Barat)
Sumatera: Provinsi-provinsi di bagian utara dan timur Sumatera (seperti Sumatera Utara dan Riau) menunjukkan warna merah terang hingga oranye tua, yang berarti mereka memiliki nilai keanggotaan yang sangat kuat atau kuat pada klaster ini. Ini menandakan bahwa mereka memiliki karakteristik yang sangat mirip dengan klaster ini.
Jawa dan Bali: Sebagian besar provinsi di Jawa dan Bali (seperti Jawa Barat, Jawa Tengah, Jawa Timur, dan Bali) juga menunjukkan warna oranye tua, yang menunjukkan keanggotaan yang kuat, tetapi sedikit lebih rendah dari provinsi yang berwarna merah.
Wilayah Indonesia Tengah (Kalimantan bagian timur–utara, Sulawesi, Bali, NTB, NTT)
Kalimantan: Provinsi-provinsi di Kalimantan (seperti Kalimantan Tengah, Selatan, dan Timur) umumnya berwarna oranye hingga kuning, yang menunjukkan keanggotaan yang sedang (sekitar 0.50 hingga 0.75). Ini bisa diinterpretasikan sebagai kondisi di mana provinsi-provinsi ini memiliki ciri-ciri yang agak mirip dengan klaster ini, tetapi juga memiliki kemiripan dengan klaster lain.
Sulawesi: Sebagian besar Sulawesi, kecuali Sulawesi Tenggara, menunjukkan warna oranye hingga kuning, mengindikasikan keanggotaan yang tidak terlalu kuat dalam klaster ini.
Wilayah Indonesia Timur (Maluku, Maluku Utara, Papua, Papua Barat)
Maluku dan Papua: Provinsi-provinsi di Maluku dan Papua menunjukkan warna kuning hingga oranye muda, yang berarti nilai keanggotaannya rendah atau lemah dalam klaster ini. Hal ini mengisyaratkan bahwa karakteristik mereka tidak terlalu mirip dengan karakteristik utama klaster ini dan kemungkinan besar mereka merupakan anggota yang lebih kuat dari klaster lain (yang tidak ditampilkan di peta ini).
Warning in st_point_on_surface.sfc(sf::st_zm(x)): st_point_on_surface may not
give correct results for longitude/latitude data
Wilayah Indonesia Barat
Secara umum, sebagian besar provinsi di Sumatera, Jawa, dan sebagian Kalimantan barat–tengah masuk kategori Relatif Unggul (biru). Hal ini menunjukkan bahwa dari sisi manajemen sekolah, mutu guru, mutu lulusan, dan proses pembelajaran, wilayah barat sudah memiliki kondisi yang lebih stabil dan kuat. Namun masih ada beberapa provinsi seperti Aceh, dan sebagian Kalimantan yang masuk kategori Perlu Peningkatan, menandakan adanya ketimpangan kualitas pendidikan meskipun berada di kawasan dengan infrastruktur relatif lebih maju.
Wilayah Indonesia Tengah
Daerah seperti Sulawesi Selatan, Sulawesi Barat, Kalimantan Timur, Kalimantan Utara, Bali, NTB, dan sebagian Maluku cenderung Relatif Unggul, menunjukkan adanya perkembangan yang positif di wilayah tengah. Akan tetapi, Sulawesi Tengah, NTT, dan Kalimantan Selatan masuk kategori Perlu Peningkatan, mencerminkan masih adanya gap kualitas pendidikan, terutama dalam pemerataan tenaga guru berkualitas dan sarana pembelajaran.
Wilayah Indonesia Timur
Menariknya, di wilayah timur terlihat kondisi yang cukup beragam. Papua justru masuk kategori Relatif Unggul, sementara Papua Barat, Maluku Utara, dan sebagian wilayah lainnya masuk kategori Perlu Peningkatan. Hal ini menunjukkan adanya variasi internal yang cukup besar di kawasan timur Indonesia. Meskipun ada provinsi yang mampu menunjukkan keunggulan relatif, secara keseluruhan wilayah timur tetap menghadapi tantangan besar dalam distribusi sumber daya pendidikan, pemerataan mutu guru, dan akses terhadap fasilitas belajar.
Daftar Pustaka
Babuska R. 2001. FUZZY AND NEURAL CONTROL DISC Course Lecture Notes (October 2001). Control. October.
Bezdek JC. 1981. Pattern Recognition with Fuzzy Objective Function Algorithms.
Hamur AS, Susetyo B, Indahwati. 2017. Comparing K-Means and Fuzzy C-Means Clustering (Case: Clustering of Provinces in Indonesia Based on the Indicator of the Health Service in 2015). Int J Eng Manag Res. 7(3):387-390.
Kusumadewi SH. 2006. Fuzzy Multi-Attribute Decision Making (Fuzzy MADM). Graha Ilmu Yogyakarta., siap terbit.
Mahmudi, Goejantoro R, Amijaya FDT. 2021. Comparison of C-Means and Fuzzy C-Means Methods in the Districts/Cities on the Island of Kalimantan Based on the 2019 HDI Indicators. J EKSPONENSIAL. 12(2).
Pal NR, Bezdek JC. 1995. On Cluster Validity for the Fuzzy c-Means Model. IEEE Trans Fuzzy Syst. 3(3). doi:10.1109/91.413225.
Prasetyo E. 2014. Data Mining Mengolah Data Menjadi Informasi Menggunakan Matlab. Penerbit Andi. 5(1).
Yu J, Cheng Q, Huang H. 2004. Analysis of the Weighting Exponent in the FCM. IEEE Trans Syst Man, Cybern Part B Cybern. 34(1). doi:10.1109/TSMCB.2003.810951.
Zhou K, Yang S. 2019. Fuzzifier Selection in Fuzzy C-Means from Cluster Size Distribution Perspective. Informatika. 30(3). doi:10.15388/informatica.2019.221.