Status gizi balita merupakan indikator fundamental yang mencerminkan kualitas kesehatan dan kesejahteraan suatu bangsa. Balita yang mengalami gizi kurang atau buruk tidak hanya menghadapi risiko gangguan pertumbuhan fisik dan perkembangan kognitif, tetapi juga lebih rentan terhadap penyakit infeksi (Kementerian Kesehatan RI, 2020). Di Indonesia, isu gizi pada balita masih menjadi tantangan kesehatan masyarakat yang signifikan, dengan prevalensi stunting (pendek) dan wasting (kurus) yang memerlukan penanganan serius. Pemantauan status gizi balita secara konvensional biasanya mengkategorikan anak ke dalam kelompok standar seperti gizi buruk, gizi kurang, gizi baik, dan gizi lebih. Namun, pendekatan ini mungkin belum mampu menangkap kompleksitas dan keragaman profil gizi balita di berbagai wilayah. Setiap daerah memiliki karakteristik permasalahan gizi yang unik, yang dipengaruhi oleh faktor sosial ekonomi, pola asuh, akses terhadap pangan bergizi, dan kondisi lingkungan (Soetjiningsih, 2013). Untuk memahami karakteristik yang lebih spesifik dan mendalam, diperlukan teknik analisis data yang mampu mengelompokkan balita berdasarkan kemiripan profil gizi tanpa mengikuti kategori pra-definisi. Analisis cluster, khususnya metode non-hierarki seperti K-Means, menawarkan solusi untuk hal ini. Metode ini dapat mengelompokkan data ke dalam sejumlah cluster yang homogen secara internal dan heterogen secara eksternal berdasarkan variabel-variabel antropometri (Han, Kamber, & Pei, 2012). Penerapan analisis cluster non-hierarki pada data status gizi balita diharapkan dapat mengidentifikasi pola atau segmen balita dengan karakteristik gizi serupa. Hasil pengelompokan ini dapat memberikan informasi yang lebih terperinci dan dapat ditindaklanjuti oleh tenaga kesehatan dan pembuat kebijakan. Misalnya, dapat diidentifikasi cluster balita yang “berisiko stunting terselubung” atau “gizi lebih dengan pola konsumsi tertentu”. Informasi semacam ini sangat berharga untuk merancang intervensi dan program penanganan gizi yang lebih tepat sasaran, efektif, dan efisien (Sari & Fauzi, 2022). Berdasarkan uraian tersebut, laporan praktikum ini disusun untuk menerapkan teknik analisis cluster non-hierarki (K-Means) dalam mengelompokkan status gizi balita berdasarkan data antropometri.
Berdasarkan latar belakang di atas, rumusan masalah dalam praktikum ini adalah
1. Bagaimana penerapan algoritma K-Means Clustering untuk mengelompokkan data status gizi balita?
2. Berapa jumlah cluster optimal yang terbentuk dari data status gizi balita tersebut?
3. Bagaimana karakteristik dan interpretasi dari setiap cluster yang dihasilkan dari analisis tersebut?
Adapun tujuan dari pelaksanaan praktikum ini adalah:
1. Untuk mengaplikasikan metode analisis cluster non-hierarki (K-Means) pada dataset status gizi balita.
2. Untuk menentukan jumlah cluster optimal yang merepresentasikan pola status gizi balita.
3. Untuk menginterpretasikan dan mendeskripsikan karakteristik setiap cluster yang terbentuk guna memahami profil status gizi balita yang beragam.
Status gizi merupakan kondisi tubuh yang diakibatkan oleh konsumsi makanan dan penggunaan zat-zat gizi. Pada balita, penilaian status gizi umumnya dilakukan melalui pengukuran antropometri yang meliputi berat badan, tinggi badan, dan usia, yang kemudian dibandingkan dengan standar baku (World Health Organization, 2006). Penilaian ini menggunakan indikator utama:
Berat Badan menurut Umur (BB/U): Mengindikasikan status gizi secara umum, dapat mengidentifikasi underweight atau overweight.
Tinggi Badan menurut Umur (TB/U): Mengindikasikan pertumbuhan linier dan merupakan indikator utama untuk stunting (pendek).
Berat Badan menurut Tinggi Badan (BB/TB): Mengindikasikan proporsi tubuh dan merupakan indikator utama untuk wasting (kurus) atau overweight.
Standar yang digunakan secara internasional dan nasional adalah Standar Antropometri Anak dari WHO (World Health Organization, 2006), yang telah diadopsi oleh Kementerian Kesehatan RI (2020) melalui berbagai pedoman pelaksanaannya. Pengukuran antropometri ini dikonversi menjadi skor-Z, yang membandingkan nilai individu dengan nilai median populasi referensi. Kategori status gizi berdasarkan skor-Z BB/U, TB/U, dan BB/TB telah ditetapkan secara jelas dalam pedoman tersebut (Kementerian Kesehatan RI, 2020).
Analisis cluster merupakan teknik statistik multivariat yang bertujuan mengelompokkan objek-objek (dalam hal ini data balita) ke dalam kelompok-kelompok (cluster) sehingga objek dalam satu cluster memiliki kemiripan karakteristik yang tinggi (homogen), sementara objek dari cluster yang berbeda memiliki karakteristik yang tidak mirip (heterogen) (Han, Kamber, & Pei, 2012). Analisis cluster termasuk dalam pembelajaran mesin tanpa pengawasan (unsupervised learning) karena tidak ada variabel target atau label kelas yang ditentukan sebelumnya.
K-Means adalah salah satu algoritma cluster non-hierarki yang paling populer karena kesederhanaan dan efisiensinya (James, Witten, Hastie, & Tibshirani, 2021). Algoritma ini mempartisi data ke dalam sejumlah cluster K yang telah ditentukan sebelumnya. Proses kerja algoritma K-Means adalah sebagai berikut (Han, Kamber, & Pei, 2012):
Kelebihan K-Means antara lain relatif cepat dan efisien untuk data dalam jumlah besar, mudah diimplementasikan, dan menghasilkan cluster yang padat. Namun, kekurangan utamanya adalah peneliti harus menentukan nilai K di awal, sensitif terhadap inisialisasi centroid awal dan outlier, serta cenderung bekerja buruk pada data yang bentuk clusternya tidak geometris (James et al., 2021).
Karena nilai K harus ditentukan sebelumnya, beberapa metode digunakan untuk menemukan jumlah cluster yang optimal:
Elbow Method: Metode ini memplot nilai inersia (Within-Cluster Sum of Squares/WCSS) terhadap jumlah cluster K. Inersia mengukur seberapa padat titik-titik data di dalam clusternya. Nilai K optimal biasanya terletak pada “siku” (elbow) dari kurva, di mana penurunan inersia mulai melambat secara signifikan (James et al., 2021).
Silhouette Score: Metode ini mengukur seberapa baik sebuah objek ditempatkan dalam clusternya. Skor Silhouette berkisar dari -1 hingga 1. Nilai yang tinggi menunjukkan bahwa objek sangat cocok dengan clusternya sendiri dan tidak cocok dengan cluster tetangga. Jumlah cluster dengan skor Silhouette rata-rata tertinggi dianggap optimal (Rousseeuw, 1987).
Beberapa penelitian sebelumnya telah menerapkan analisis cluster untuk masalah gizi. Sebuah penelitian oleh Sari & Fauzi (2022) berhasil mengelompokkan balita berdasarkan BB/U, TB/U, dan BB/TB menggunakan algoritma K-Means, dan menemukan empat cluster utama dengan karakteristik yang berbeda, salah satunya adalah kelompok “stunting tersembunyi” yang memiliki TB/U rendah tetapi BB/TB normal. Penelitian lain yang menggabungkan variabel antropometri dengan variabel sosial ekonomi juga menunjukkan bahwa analisis cluster dapat menghasilkan segmentasi yang lebih komprehensif untuk perancangan intervensi gizi yang lebih tepat sasaran.
# ==================================================
# ANALISIS CLUSTER NON-HIERARKI - STATUS GIZI BALITA
# ==================================================
# ----------------------------
# 1. Donwload Package
# Clear environment
rm(list = ls())
# Install package jika belum terinstall
if(!require("dplyr")) install.packages("dplyr")
## Loading required package: dplyr
## Warning: package 'dplyr' was built under R version 4.3.3
##
## Attaching package: 'dplyr'
## The following objects are masked from 'package:stats':
##
## filter, lag
## The following objects are masked from 'package:base':
##
## intersect, setdiff, setequal, union
if(!require("ggplot2")) install.packages("ggplot2")
## Loading required package: ggplot2
if(!require("factoextra")) install.packages("factoextra")
## Loading required package: factoextra
## Warning: package 'factoextra' was built under R version 4.3.3
## Welcome! Want to learn more? See two factoextra-related books at https://goo.gl/ve3WBa
if(!require("cluster")) install.packages("cluster")
## Loading required package: cluster
# Load package
library(dplyr)
library(ggplot2)
library(factoextra)
library(cluster)
# Cek apakah package berhasil load
cat("Package status:\n")
## Package status:
cat("dplyr:", "dplyr" %in% .packages(), "\n")
## dplyr: TRUE
cat("ggplot2:", "ggplot2" %in% .packages(), "\n")
## ggplot2: TRUE
# ----------------------------
# 2. LOAD DATA
# Load data
data_gizi <- read.csv("C:/Users/User/Downloads/Data status gizi balita kec.andowia - Sheet1.csv",
stringsAsFactors = FALSE,
na.strings = c("", " ", ".", "NA", "NULL"))
# Inspeksi data awal
cat("=== INSPEKSI DATA AWAL ===\n")
## === INSPEKSI DATA AWAL ===
cat("Dimensi data:", dim(data_gizi), "\n")
## Dimensi data: 499 9
cat("Nama kolom:", names(data_gizi), "\n\n")
## Nama kolom: NO Nama JenisKelamin UMUR BB TB BMI X X.1
cat("Struktur data:\n")
## Struktur data:
str(data_gizi)
## 'data.frame': 499 obs. of 9 variables:
## $ NO : int 1 2 3 4 5 6 7 8 9 10 ...
## $ Nama : chr "Adhe Fitri" "Andi Hariati" "Anwar Amir" "Asmar" ...
## $ JenisKelamin: chr "P" "P" "L" "L" ...
## $ UMUR : int 24 24 28 30 28 25 23 28 21 27 ...
## $ BB : num 5.8 5.5 6.7 8.1 6.9 5.8 4.7 6.8 3.5 5.8 ...
## $ TB : num 0.65 0.59 0.715 0.725 0.73 0.77 0.525 0.54 0.55 0.53 ...
## $ BMI : num 13.7 15.8 13.1 15.4 12.9 ...
## $ X : logi NA NA NA NA NA NA ...
## $ X.1 : chr NA NA NA NA ...
cat("\n6 data pertama:\n")
##
## 6 data pertama:
print(head(data_gizi))
## NO Nama JenisKelamin UMUR BB TB BMI X X.1
## 1 1 Adhe Fitri P 24 5.8 0.650 13.73 NA <NA>
## 2 2 Andi Hariati P 24 5.5 0.590 15.80 NA <NA>
## 3 3 Anwar Amir L 28 6.7 0.715 13.11 NA <NA>
## 4 4 Asmar L 30 8.1 0.725 15.41 NA <NA>
## 5 5 Eka Andriyani P 28 6.9 0.730 12.95 NA <NA>
## 6 6 Evi Multazam P 25 5.8 0.770 9.78 NA <NA>
# ----------------------------
# 3. CEK MASALAH DATA KOLOM TB DAN BB
cat("\n=== CEK PROBLEM KOLOM TB DAN BB ===\n")
##
## === CEK PROBLEM KOLOM TB DAN BB ===
# Cek unique values di kolom TB
cat("Sample nilai TB:\n")
## Sample nilai TB:
print(head(data_gizi$TB, 15))
## [1] 0.650 0.590 0.715 0.725 0.730 0.770 0.525 0.540 0.550 0.530
## [11] 0.620 0.610 0.650 10.810 13.370
# Cek unique values di kolom BB
cat("\nSample nilai BB:\n")
##
## Sample nilai BB:
print(head(data_gizi$BB, 15))
## [1] 5.80 5.50 6.70 8.10 6.90 5.80 4.70 6.80 3.50 5.80 7.10 9.40 8.20 5.68 6.67
# Cek tipe data
cat("\nTipe data:\n")
##
## Tipe data:
cat("TB:", class(data_gizi$TB), "\n")
## TB: numeric
cat("BB:", class(data_gizi$BB), "\n")
## BB: numeric
cat("UMUR:", class(data_gizi$UMUR), "\n")
## UMUR: integer
# ----------------------------
# 4. PREPROCESSING DATA (CARA MANUAL)
# Buat copy data
data_clean <- data_gizi
# Konversi manual dulu tanpa menggunakan mutate
cat("\n=== KONVERSI MANUAL ===\n")
##
## === KONVERSI MANUAL ===
# Konversi BB ke numeric
data_clean$BB_numeric <- as.numeric(data_clean$BB)
cat("BB konversi - NA:", sum(is.na(data_clean$BB_numeric)), "dari", length(data_clean$BB_numeric), "\n")
## BB konversi - NA: 0 dari 499
# Konversi TB ke numeric
data_clean$TB_numeric <- as.numeric(data_clean$TB)
cat("TB konversi - NA:", sum(is.na(data_clean$TB_numeric)), "dari", length(data_clean$TB_numeric), "\n")
## TB konversi - NA: 3 dari 499
# Konversi UMUR
data_clean$UMUR_numeric <- as.numeric(data_clean$UMUR)
cat("UMUR konversi - NA:", sum(is.na(data_clean$UMUR_numeric)), "dari", length(data_clean$UMUR_numeric), "\n")
## UMUR konversi - NA: 0 dari 499
# Handle TB - konversi ke cm
data_clean$TB_cm <- ifelse(data_clean$TB_numeric < 10,
data_clean$TB_numeric * 100,
data_clean$TB_numeric)
# Handle BMI
data_clean$BMI_calculated <- data_clean$BB_numeric / ((data_clean$TB_cm/100)^2)
# Gunakan BMI yang ada atau yang dihitung
data_clean$BMI_final <- ifelse(is.na(data_clean$BMI) | data_clean$BMI == 0,
data_clean$BMI_calculated,
as.numeric(data_clean$BMI))
# ----------------------------
# 5. FILTER DATA
# Filter data yang valid untuk balita
data_valid <- data_clean[
!is.na(data_clean$BB_numeric) &
!is.na(data_clean$TB_cm) &
!is.na(data_clean$UMUR_numeric) &
data_clean$BB_numeric > 1 & data_clean$BB_numeric < 25 &
data_clean$TB_cm > 40 & data_clean$TB_cm < 120 &
data_clean$UMUR_numeric >= 0 & data_clean$UMUR_numeric <= 60,
]
cat("\n=== DATA SETELAH FILTERING ===\n")
##
## === DATA SETELAH FILTERING ===
cat("Jumlah data valid:", nrow(data_valid), "dari", nrow(data_gizi), "\n")
## Jumlah data valid: 418 dari 499
# ----------------------------
# 6. PREPARASI DATA CLUSTERING
# Pilih variabel untuk clustering
data_cluster <- data.frame(
BB = data_valid$BB_numeric,
TB = data_valid$TB_cm,
UMUR = data_valid$UMUR_numeric,
BMI = data_valid$BMI_final
)
# Hapus baris dengan NA
data_cluster <- na.omit(data_cluster)
data_cluster
## BB TB UMUR BMI
## 1 5.8 65.00 24 13.730000
## 2 5.5 59.00 24 15.800000
## 3 6.7 71.50 28 13.110000
## 4 8.1 72.50 30 15.410000
## 5 6.9 73.00 28 12.950000
## 6 5.8 77.00 25 9.780000
## 7 4.7 52.50 23 17.500000
## 8 6.8 54.00 28 23.320000
## 9 3.5 55.00 21 11.570000
## 10 5.8 53.00 27 20.650000
## 11 7.1 62.00 28 18.470000
## 12 9.4 61.00 32 25.260000
## 13 8.2 65.00 24 19.410000
## 14 10.2 50.00 31 40.800000
## 15 12.8 72.00 31 24.690000
## 16 10.1 95.00 28 11.190000
## 17 9.4 75.00 24 16.710000
## 18 5.8 54.00 32 19.890000
## 19 4.7 67.00 19 10.470000
## 20 5.7 77.00 23 9.610000
## 21 8.9 75.00 41 15.820000
## 22 9.4 76.00 23 16.270000
## 23 9.7 88.00 32 12.530000
## 24 9.8 78.00 32 16.110000
## 25 9.9 81.00 22 15.900000
## 26 5.8 82.00 21 8.630000
## 27 8.8 83.00 22 12.770000
## 28 7.5 89.00 43 9.470000
## 29 6.5 77.00 23 10.960000
## 30 5.4 76.00 27 9.350000
## 31 3.4 75.00 28 6.400000
## 32 7.9 82.00 37 11.750000
## 33 5.7 75.00 23 10.130000
## 34 6.8 76.00 27 11.770000
## 35 7.8 73.00 34 14.640000
## 36 7.9 84.00 35 11.200000
## 37 8.9 82.00 32 13.240000
## 38 9.7 77.00 43 16.360000
## 39 5.4 75.00 36 9.600000
## 40 5.5 77.00 45 9.280000
## 41 7.8 73.00 38 14.640000
## 42 8.9 72.00 43 17.170000
## 43 9.8 67.00 43 21.830000
## 44 8.8 75.00 44 15.640000
## 45 6.9 94.00 23 7.810000
## 46 8.7 91.00 23 10.510000
## 47 7.8 69.00 19 16.380000
## 48 6.6 54.00 29 22.630000
## 49 7.5 68.00 40 16.220000
## 50 8.9 77.00 34 15.100000
## 51 8.8 79.00 23 14.100000
## 52 9.7 85.00 45 13.430000
## 53 8.8 74.00 34 16.700000
## 54 9.5 76.00 23 16.450000
## 55 8.9 74.00 43 16.250000
## 56 9.5 88.00 32 12.270000
## 57 5.8 76.00 34 10.400000
## 58 7.8 75.00 35 13.870000
## 59 9.8 64.00 37 23.930000
## 60 9.6 53.00 26 34.180000
## 61 9.7 57.00 37 29.860000
## 62 8.9 76.00 45 15.410000
## 63 8.8 78.00 24 14.460000
## 64 7.6 93.00 54 8.790000
## 65 7.7 78.00 34 12.660000
## 66 8.7 77.00 23 14.670000
## 67 9.8 64.00 45 23.930000
## 68 7.9 78.00 43 12.980000
## 69 8.8 57.00 23 27.900000
## 70 8.9 77.00 43 15.100000
## 71 9.8 57.00 24 30.160000
## 72 7.8 76.00 45 13.500000
## 73 8.6 68.00 37 18.600000
## 74 6.7 78.00 42 11.100000
## 75 7.5 78.00 36 12.330000
## 76 6.6 87.00 35 8.720000
## 77 9.8 97.00 35 10.420000
## 78 7.9 75.00 43 14.400000
## 79 9.6 75.00 43 17.700000
## 80 9.9 68.00 33 21.410000
## 81 7.6 87.00 32 10.400000
## 82 4.9 88.00 25 6.330000
## 83 5.9 67.00 37 13.140000
## 84 8.9 87.00 38 11.760000
## 85 9.8 66.00 36 22.500000
## 86 8.8 76.00 36 15.240000
## 87 7.9 86.00 35 10.680000
## 88 9.4 86.00 39 12.710000
## 89 5.7 67.00 42 12.700000
## 90 6.7 55.00 22 22.150000
## 91 3.5 65.00 38 8.280000
## 92 4.7 68.00 12 10.160000
## 93 5.8 89.00 23 7.320000
## 94 7.9 57.00 42 24.320000
## 95 8.9 78.00 33 14.630000
## 96 4.7 87.00 34 6.210000
## 97 7.8 76.00 34 13.500000
## 98 9.8 75.00 23 17.420000
## 99 8.6 65.00 45 20.360000
## 100 9.7 64.00 44 23.680000
## 101 9.8 56.00 36 31.250000
## 102 7.8 54.00 34 26.750000
## 103 8.8 65.00 32 20.830000
## 104 9.6 76.00 43 16.620000
## 105 8.9 78.00 4 14.630000
## 106 9.6 56.00 23 30.610000
## 107 6.7 67.00 33 14.930000
## 108 8.7 76.00 44 15.600000
## 109 9.8 67.00 32 21.830000
## 110 9.8 56.00 31 31.250000
## 111 7.8 77.00 32 13.160000
## 112 5.7 68.00 31 12.330000
## 113 8.7 76.00 23 15.600000
## 114 7.7 65.00 34 18.220000
## 115 7.8 57.00 32 24.100000
## 116 7.9 78.00 34 12.980000
## 117 9.5 75.00 37 16.890000
## 118 9.5 75.00 34 16.890000
## 119 9.3 75.00 43 16.530000
## 120 6.8 49.00 35 28.320000
## 121 4.8 66.00 33 11.200000
## 122 7.3 61.00 23 19.620000
## 123 5.6 62.00 33 14.570000
## 124 5.5 62.00 25 14.310000
## 125 7.8 63.00 34 19.650000
## 126 9.8 63.00 35 24.690000
## 127 6.6 64.00 36 16.110000
## 128 7.3 71.80 13 19.880000
## 129 7.5 69.20 9 10.540000
## 130 7.5 67.50 23 9.160000
## 131 8.2 62.30 8 15.280000
## 132 13.8 72.86 18 25.995654
## 133 15.7 99.44 23 15.877328
## 134 14.9 102.37 16 14.218077
## 135 6.2 67.20 23 16.720000
## 136 6.4 58.50 18 12.350000
## 137 14.8 103.66 10 13.773341
## 138 12.5 89.90 10 15.466450
## 139 12.8 86.70 8 8.630000
## 140 8.2 68.50 6 12.770000
## 141 15.5 104.72 21 14.134239
## 142 14.5 95.50 23 13.860000
## 143 12.8 97.81 11 13.379610
## 144 6.6 84.74 13 9.191090
## 145 11.3 88.50 11 27.570000
## 146 14.7 95.20 18 16.219723
## 147 14.5 69.68 17 29.864257
## 148 12.4 79.50 15 18.310000
## 149 11.2 85.50 12 11.770000
## 150 8.3 85.70 20 11.200000
## 151 9.7 60.50 12 10.160000
## 152 8.6 71.32 24 16.907359
## 153 11.0 70.32 13 22.245131
## 154 8.1 72.80 14 14.630000
## 155 9.3 78.50 14 28.700000
## 156 7.0 68.10 25 31.890000
## 157 8.1 76.79 20 13.736487
## 158 9.6 97.20 20 20.240000
## 159 8.8 84.50 8 6.210000
## 160 8.9 97.50 6 13.500000
## 161 6.8 83.42 21 9.771664
## 162 7.8 66.60 23 20.360000
## 163 6.5 87.20 11 21.300000
## 164 6.3 101.20 12 21.630000
## 165 9.7 92.30 10 19.400000
## 166 10.9 87.20 12 12.100000
## 167 7.5 89.70 14 9.321298
## 168 9.1 89.50 18 22.300000
## 169 9.6 86.10 6 12.949856
## 170 9.8 86.56 12 13.079513
## 171 8.3 83.60 14 37.600000
## 172 8.3 85.90 11 11.248426
## 173 8.8 84.60 19 12.295380
## 174 10.0 72.50 22 31.910000
## 175 11.5 83.50 10 39.330000
## 176 9.5 80.00 15 14.843750
## 177 7.6 76.50 23 20.550000
## 178 12.5 79.50 23 20.400000
## 179 7.5 61.50 8 7.800000
## 180 13.5 73.31 19 25.119288
## 181 12.0 68.50 17 35.850000
## 182 8.8 104.50 11 30.800000
## 183 11.1 95.50 23 24.330000
## 184 9.6 97.50 14 10.098619
## 185 8.4 60.30 12 14.460000
## 186 10.5 80.10 23 8.790000
## 187 10.0 86.30 12 12.660000
## 188 8.9 82.70 8 14.670000
## 189 9.1 68.40 23 16.000000
## 190 8.3 74.10 10 16.870000
## 191 7.0 75.50 23 28.960000
## 192 12.1 66.90 21 35.670000
## 193 8.9 69.30 11 35.600000
## 194 6.7 69.30 11 23.930000
## 195 9.7 64.10 16 18.930000
## 196 8.0 79.20 15 12.980000
## 197 9.2 88.70 22 27.900000
## 198 8.3 70.30 19 15.100000
## 199 8.9 71.70 7 30.160000
## 200 7.0 81.90 19 18.900000
## 201 7.9 78.30 11 13.300000
## 202 10.4 65.30 15 16.550000
## 203 8.1 75.70 18 40.150000
## 204 9.5 82.50 8 25.600000
## 205 10.0 79.70 10 14.950000
## 206 11.2 78.70 6 5.100000
## 207 9.0 81.70 9 49.000000
## 208 10.6 68.50 23 25.150000
## 209 11.0 78.50 17 22.500000
## 210 7.5 75.70 19 22.800000
## 211 11.2 80.90 22 15.700000
## 212 11.3 71.10 20 31.700000
## 213 8.0 83.30 15 25.100000
## 214 10.1 67.10 17 12.900000
## 215 9.9 84.70 8 29.500000
## 216 7.5 71.30 15 19.500000
## 217 10.3 70.10 11 29.500000
## 218 8.7 80.40 20 32.400000
## 219 7.3 81.30 8 23.200000
## 220 9.8 69.20 10 10.500000
## 221 9.8 78.60 21 36.500000
## 222 10.4 67.90 9 25.600000
## 223 10.5 82.60 23 12.500000
## 224 9.0 69.50 11 37.350000
## 225 7.7 78.10 9 34.800000
## 226 9.2 82.70 24 19.500000
## 227 9.5 78.20 10 24.250000
## 228 9.0 61.30 17 23.600000
## 229 10.3 64.30 9 10.250000
## 230 9.1 70.60 13 27.250000
## 231 7.9 83.50 19 36.500000
## 232 10.0 68.20 20 14.800000
## 233 7.6 75.60 9 93.800000
## 234 7.1 73.70 22 59.750000
## 235 6.5 79.50 11 38.350000
## 236 8.8 81.30 14 20.820000
## 237 12.8 70.40 14 10.750000
## 238 8.6 67.30 20 37.200000
## 239 12.0 65.70 10 29.800000
## 240 10.3 69.50 10 32.300000
## 241 10.2 69.50 19 30.500000
## 242 12.6 82.60 8 31.500000
## 243 10.3 85.60 24 37.300000
## 244 7.1 83.50 23 23.400000
## 245 9.7 76.60 19 32.700000
## 246 9.6 65.30 17 25.900000
## 247 9.7 66.90 13 31.000000
## 248 9.0 68.50 23 52.500000
## 249 7.9 67.80 17 12.000000
## 250 10.0 67.40 19 14.650000
## 251 8.5 78.30 7 22.350000
## 252 11.2 71.40 7 5.750000
## 253 9.1 74.50 21 7.950000
## 254 7.5 65.40 18 57.750000
## 255 9.4 66.80 23 10.500000
## 256 6.5 72.30 11 11.900000
## 257 9.8 72.30 9 28.000000
## 258 8.2 78.70 23 18.000000
## 259 9.1 81.90 21 20.000000
## 260 10.0 73.40 20 37.000000
## 261 9.4 79.30 14 17.500000
## 262 8.0 77.30 10 15.500000
## 263 9.5 67.50 9 16.800000
## 264 5.6 67.50 25 20.500000
## 265 11.7 73.20 7 44.300000
## 266 9.3 81.50 17 27.500000
## 267 9.8 72.50 6 29.500000
## 268 10.2 72.60 9 18.750000
## 269 8.5 72.10 20 18.650000
## 270 8.5 64.10 18 26.200000
## 271 8.3 79.20 8 17.500000
## 272 8.2 75.30 13 22.700000
## 273 8.2 78.10 18 17.900000
## 274 8.0 96.80 14 14.300000
## 275 9.2 87.20 10 30.100000
## 276 7.7 72.80 16 8.100000
## 277 10.2 76.70 13 12.150000
## 278 11.5 74.40 12 28.100000
## 279 9.5 73.70 11 9.450000
## 280 9.0 79.40 21 26.600000
## 281 7.0 76.30 6 16.950000
## 282 9.9 77.70 23 16.500000
## 283 10.3 82.20 10 23.250000
## 284 9.5 73.70 8 7.550000
## 285 8.6 75.20 8 30.600000
## 286 7.3 75.50 18 14.200000
## 287 11.4 82.20 7 24.600000
## 288 8.2 74.20 11 18.400000
## 289 10.3 72.20 23 42.300000
## 290 8.6 87.20 20 14.350000
## 291 7.8 79.20 22 19.600000
## 292 10.2 83.20 12 35.650000
## 293 9.4 81.20 10 17.750000
## 294 5.5 63.80 8 17.100000
## 295 6.3 74.90 22 25.700000
## 296 7.2 70.20 15 20.550000
## 297 12.0 80.70 15 20.400000
## 298 7.4 69.80 13 16.200000
## 299 6.5 75.50 10 35.450000
## 300 7.4 67.80 10 7.450000
## 301 9.9 81.50 8 8.150000
## 302 7.9 67.60 8 18.000000
## 303 10.3 66.60 18 16.500000
## 304 6.7 72.50 14 17.100000
## 305 9.2 85.70 13 11.250000
## 306 8.5 65.10 9 9.450000
## 307 10.3 82.20 11 41.600000
## 308 7.7 74.50 12 19.400000
## 309 10.7 71.60 16 4.700000
## 310 7.7 80.20 18 38.800000
## 311 9.5 72.30 16 11.650000
## 312 6.9 86.30 14 16.300000
## 313 8.4 82.70 45 23.900000
## 314 6.6 68.40 23 15.820000
## 315 8.4 74.10 8 9.250000
## 316 11.2 75.50 23 16.500000
## 317 11.7 66.90 20 14.320000
## 318 10.7 69.30 12 34.800000
## 319 8.1 69.30 7 12.400000
## 320 8.4 64.10 11 59.350000
## 321 6.8 79.20 22 53.850000
## 322 10.0 88.70 20 14.700000
## 323 9.7 70.30 11 39.200000
## 324 10.4 71.70 11 14.150000
## 325 6.9 81.90 21 68.700000
## 326 8.3 76.60 15 9.500000
## 327 8.3 65.30 12 22.000000
## 328 7.9 66.90 6 16.000000
## 329 8.4 68.50 7 19.000000
## 330 10.5 67.80 15 13.800000
## 331 8.4 67.40 22 17.000000
## 332 8.8 78.30 19 13.000000
## 333 7.3 71.40 21 17.000000
## 334 7.7 74.50 19 61.300000
## 335 9.0 65.40 9 32.500000
## 336 8.8 66.80 13 40.450000
## 337 11.2 72.30 11 27.600000
## 338 10.0 72.30 20 24.000000
## 339 8.5 78.70 18 20.150000
## 340 13.1 81.90 9 25.000000
## 341 9.1 73.40 12 63.500000
## 342 9.7 79.30 22 27.500000
## 343 8.2 77.30 6 24.300000
## 344 8.2 67.50 15 15.900000
## 345 9.2 67.50 22 14.650000
## 346 9.7 73.20 7 10.500000
## 347 11.2 89.50 10 24.230000
## 348 10.4 86.70 7 13.835509
## 349 8.0 86.00 11 10.816658
## 350 8.5 83.60 17 32.460000
## 351 9.9 85.50 13 13.542629
## 352 9.0 84.56 22 12.586720
## 353 8.5 72.50 19 15.230000
## 354 6.3 83.50 7 16.950000
## 355 8.3 80.56 17 12.789076
## 356 8.6 76.50 10 14.320000
## 357 11.2 96.00 14 12.152778
## 358 8.3 67.20 21 26.700000
## 359 8.4 58.50 14 14.500000
## 360 10.2 103.10 17 9.595837
## 361 9.6 89.40 17 12.011471
## 362 7.4 86.70 11 18.700000
## 363 9.0 68.50 10 17.500000
## 364 10.5 104.15 19 9.679897
## 365 9.0 56.00 19 27.400000
## 366 8.3 56.00 10 48.500000
## 367 12.0 68.00 23 24.300000
## 368 11.0 77.00 22 30.500000
## 369 7.8 87.00 22 42.000000
## 370 9.5 76.00 10 19.700000
## 371 11.0 75.00 14 15.850000
## 372 7.6 65.00 10 28.500000
## 373 8.7 65.00 17 34.500000
## 374 8.4 68.00 10 11.400000
## 375 10.0 76.00 12 33.850000
## 376 8.5 89.00 19 19.700000
## 377 8.4 78.10 16 24.970000
## 378 10.1 96.80 12 15.300000
## 379 7.7 87.20 17 12.750000
## 380 7.9 72.80 15 14.450000
## 381 7.9 76.70 14 17.100000
## 382 7.7 74.40 19 27.650000
## 383 6.4 73.70 23 28.200000
## 384 10.0 79.40 16 14.250000
## 385 8.3 76.30 17 24.750000
## 386 9.3 77.70 22 14.200000
## 387 8.7 82.20 22 16.650000
## 388 8.0 73.70 22 23.000000
## 389 9.2 65.00 15 31.650000
## 390 12.2 59.00 14 28.000000
## 391 9.5 71.50 21 24.700000
## 392 8.0 72.50 23 21.500000
## 393 10.6 73.00 19 16.500000
## 394 12.1 77.00 30 22.100000
## 395 9.5 52.50 23 11.600000
## 396 8.0 54.00 24 41.300000
## 397 9.5 55.00 10 27.240000
## 398 8.0 53.00 13 24.400000
## 399 10.3 62.00 15 36.850000
## 400 8.7 77.10 12 14.635599
## 401 7.6 88.50 24 11.000000
## 402 10.0 95.18 12 11.038463
## 403 8.5 69.44 31 17.627856
## 404 9.7 94.50 18 18.400000
## 405 10.3 79.50 6 13.960000
## 406 10.0 85.50 15 19.300000
## 407 11.8 89.50 22 14.731126
## 408 8.6 85.70 9 22.600000
## 409 10.4 60.50 33 33.600000
## 410 8.5 71.20 22 16.767138
## 411 8.3 68.50 32 19.250000
## 412 7.8 67.80 32 30.300000
## 413 9.8 67.40 23 42.200000
## 414 11.0 78.30 23 43.110000
## 415 8.8 71.40 13 28.300000
## 416 8.1 74.50 11 23.600000
## 417 10.7 65.40 37 47.300000
## 418 9.9 66.80 25 18.700000
cat("\nData untuk clustering:\n")
##
## Data untuk clustering:
print(summary(data_cluster))
## BB TB UMUR BMI
## Min. : 3.400 Min. : 49.00 Min. : 4.00 Min. : 4.70
## 1st Qu.: 7.800 1st Qu.: 68.00 1st Qu.:12.00 1st Qu.:13.14
## Median : 8.800 Median : 75.00 Median :19.00 Median :16.95
## Mean : 8.841 Mean : 75.08 Mean :20.68 Mean :20.46
## 3rd Qu.: 9.800 3rd Qu.: 81.65 3rd Qu.:25.00 3rd Qu.:25.07
## Max. :15.700 Max. :104.72 Max. :54.00 Max. :93.80
cat("Dimensi final:", dim(data_cluster), "\n")
## Dimensi final: 418 4
# ----------------------------
# 7. STANDARDISASI DATA
data_scaled <- scale(data_cluster)
cat("\nData scaled - summary:\n")
##
## Data scaled - summary:
print(summary(data_scaled))
## BB TB UMUR BMI
## Min. :-2.89977 Min. :-2.517702 Min. :-1.6243 Min. :-1.4445
## 1st Qu.:-0.55486 1st Qu.:-0.683175 1st Qu.:-0.8452 1st Qu.:-0.6704
## Median :-0.02193 Median :-0.007297 Median :-0.1635 Median :-0.3216
## Mean : 0.00000 Mean : 0.000000 Mean : 0.0000 Mean : 0.0000
## 3rd Qu.: 0.51101 3rd Qu.: 0.634787 3rd Qu.: 0.4207 3rd Qu.: 0.4233
## Max. : 3.65532 Max. : 2.862289 Max. : 3.2448 Max. : 6.7234
# ----------------------------
# 8. TENTUKAN JUMLAH CLUSTER OPTIMAL
# Elbow method
cat("\n=== MENENTUKAN JUMLAH CLUSTER ===\n")
##
## === MENENTUKAN JUMLAH CLUSTER ===
fviz_nbclust(data_scaled, kmeans, method = "wss", k.max = 8) +
ggtitle("Elbow Method untuk Optimal Cluster")
# Silhouette method
fviz_nbclust(data_scaled, kmeans, method = "silhouette", k.max = 8) +
ggtitle("Silhouette Method untuk Optimal Cluster")
# ----------------------------
# 9. CLUSTERING DENGAN K-MEANS
# Pilih jumlah cluster (biasanya 3-4 untuk data gizi)
k_optimal <- 3
set.seed(123)
kmeans_result <- kmeans(data_scaled, centers = k_optimal, nstart = 25)
# Tambahkan cluster ke data
data_cluster$cluster <- as.factor(kmeans_result$cluster)
data_valid$cluster <- as.factor(kmeans_result$cluster)
cat("\nClustering selesai dengan", k_optimal, "cluster\n")
##
## Clustering selesai dengan 3 cluster
# ----------------------------
# 10. VISUALISASI
# Plot cluster
fviz_cluster(kmeans_result, data = data_scaled,
palette = c("#2E9FDF", "#00AFBB", "#E7B800"),
geom = "point",
ggtheme = theme_minimal(),
main = "Hasil Clustering K-Means")
# ----------------------------
# 11. ANALISIS PROFIL CLUSTER
cat("\n=== PROFIL CLUSTER ===\n")
##
## === PROFIL CLUSTER ===
# Gunakan cara manual untuk summary
cluster_summary <- data.frame(
Cluster = 1:k_optimal,
Jumlah = as.numeric(table(data_cluster$cluster)),
Rata_BB = tapply(data_cluster$BB, data_cluster$cluster, mean),
Rata_TB = tapply(data_cluster$TB, data_cluster$cluster, mean),
Rata_UMUR = tapply(data_cluster$UMUR, data_cluster$cluster, mean),
Rata_BMI = tapply(data_cluster$BMI, data_cluster$cluster, mean)
)
print(cluster_summary)
## Cluster Jumlah Rata_BB Rata_TB Rata_UMUR Rata_BMI
## 1 1 197 9.301523 80.10396 14.99492 15.81445
## 2 2 128 7.583594 70.70984 32.23438 16.43252
## 3 3 93 9.596774 70.43280 16.81720 35.83332
# ----------------------------
# 12. VISUALISASI DISTRIBUSI
# BB per cluster
ggplot(data_cluster, aes(x = cluster, y = BB, fill = cluster)) +
geom_boxplot() +
labs(title = "Berat Badan per Cluster", x = "Cluster", y = "BB (kg)") +
theme_minimal()
# TB per cluster
ggplot(data_cluster, aes(x = cluster, y = TB, fill = cluster)) +
geom_boxplot() +
labs(title = "Tinggi Badan per Cluster", x = "Cluster", y = "TB (cm)") +
theme_minimal()
# BMI per cluster
ggplot(data_cluster, aes(x = cluster, y = BMI, fill = cluster)) +
geom_boxplot() +
labs(title = "BMI per Cluster", x = "Cluster", y = "BMI") +
theme_minimal()
# Scatter plot
ggplot(data_cluster, aes(x = TB, y = BB, color = cluster)) +
geom_point(alpha = 0.6) +
labs(title = "Hubungan TB vs BB", x = "Tinggi Badan (cm)", y = "Berat Badan (kg)") +
theme_minimal()
# ----------------------------
# 13. EVALUASI CLUSTERING
# Silhouette score
sil_score <- silhouette(kmeans_result$cluster, dist(data_scaled))
cat("\nRata-rata Silhouette Width:", round(mean(sil_score[, 3]), 3), "\n")
##
## Rata-rata Silhouette Width: 0.246
# ----------------------------
# 14. OUTPUT FINAL
# Buat hasil final
final_result <- data.frame(
Nama = data_valid$Nama,
JenisKelamin = data_valid$JenisKelamin,
UMUR = data_valid$UMUR_numeric,
BB = data_valid$BB_numeric,
TB = data_valid$TB_cm,
BMI = data_valid$BMI_final,
Cluster = data_valid$cluster
)
cat("\n=== HASIL AKHIR ===\n")
##
## === HASIL AKHIR ===
cat("Total data yang dianalisis:", nrow(final_result), "\n")
## Total data yang dianalisis: 418
cat("Jumlah cluster:", k_optimal, "\n")
## Jumlah cluster: 3
cat("Rata-rata silhouette:", round(mean(sil_score[, 3]), 3), "\n\n")
## Rata-rata silhouette: 0.246
cat("10 data pertama:\n")
## 10 data pertama:
print(head(final_result, 10))
## Nama JenisKelamin UMUR BB TB BMI Cluster
## 1 Adhe Fitri P 24 5.8 65.0 13.73 2
## 2 Andi Hariati P 24 5.5 59.0 15.80 2
## 3 Anwar Amir L 28 6.7 71.5 13.11 2
## 4 Asmar L 30 8.1 72.5 15.41 2
## 5 Eka Andriyani P 28 6.9 73.0 12.95 2
## 6 Evi Multazam P 25 5.8 77.0 9.78 2
## 7 Firdaus Zubair L 23 4.7 52.5 17.50 2
## 8 Ilham Wahyudi L 28 6.8 54.0 23.32 2
## 9 Irmayaeni P 21 3.5 55.0 11.57 2
## 10 Lieri Aprilyanti P 27 5.8 53.0 20.65 2
# Save hasil
write.csv(final_result, "hasil_clustering_final.csv", row.names = FALSE)
cat("\nHasil disimpan ke 'hasil_clustering_final.csv'\n")
##
## Hasil disimpan ke 'hasil_clustering_final.csv'
# ----------------------------
# 15. INTERPRETASI
cat("\n=== INTERPRETASI CLUSTER ===\n")
##
## === INTERPRETASI CLUSTER ===
for(i in 1:k_optimal) {
cluster_data <- data_cluster[data_cluster$cluster == i, ]
cat("Cluster", i, "(", nrow(cluster_data), "anak):\n")
cat(" - Rata BB:", round(mean(cluster_data$BB), 1), "kg\n")
cat(" - Rata TB:", round(mean(cluster_data$TB), 1), "cm\n")
cat(" - Rata UMUR:", round(mean(cluster_data$UMUR), 1), "bulan\n")
cat(" - Rata BMI:", round(mean(cluster_data$BMI), 1), "\n")
# Kategori status gizi berdasarkan BMI
avg_bmi <- mean(cluster_data$BMI)
if(avg_bmi < 16) {
status <- "GIZI KURANG"
} else if(avg_bmi >= 16 & avg_bmi <= 18.5) {
status <- "GIZI NORMAL"
} else {
status <- "BERISIKO GIZI LEBIH"
}
cat(" - Status:", status, "\n\n")
}
## Cluster 1 ( 197 anak):
## - Rata BB: 9.3 kg
## - Rata TB: 80.1 cm
## - Rata UMUR: 15 bulan
## - Rata BMI: 15.8
## - Status: GIZI KURANG
##
## Cluster 2 ( 128 anak):
## - Rata BB: 7.6 kg
## - Rata TB: 70.7 cm
## - Rata UMUR: 32.2 bulan
## - Rata BMI: 16.4
## - Status: GIZI NORMAL
##
## Cluster 3 ( 93 anak):
## - Rata BB: 9.6 kg
## - Rata TB: 70.4 cm
## - Rata UMUR: 16.8 bulan
## - Rata BMI: 35.8
## - Status: BERISIKO GIZI LEBIH
#---------------------------------
# Matriks korelasi
if(!require("corrplot")) install.packages("corrplot")
## Loading required package: corrplot
## Warning: package 'corrplot' was built under R version 4.3.3
## corrplot 0.95 loaded
library(corrplot)
# Pilih variabel untuk clustering
data_cluster <- data.frame(
BB = data_valid$BB_numeric,
TB = data_valid$TB_cm,
UMUR = data_valid$UMUR_numeric,
BMI = data_valid$BMI_final
)
# Hapus baris dengan NA
data_cluster <- na.omit(data_cluster)
data_cluster
## BB TB UMUR BMI
## 1 5.8 65.00 24 13.730000
## 2 5.5 59.00 24 15.800000
## 3 6.7 71.50 28 13.110000
## 4 8.1 72.50 30 15.410000
## 5 6.9 73.00 28 12.950000
## 6 5.8 77.00 25 9.780000
## 7 4.7 52.50 23 17.500000
## 8 6.8 54.00 28 23.320000
## 9 3.5 55.00 21 11.570000
## 10 5.8 53.00 27 20.650000
## 11 7.1 62.00 28 18.470000
## 12 9.4 61.00 32 25.260000
## 13 8.2 65.00 24 19.410000
## 14 10.2 50.00 31 40.800000
## 15 12.8 72.00 31 24.690000
## 16 10.1 95.00 28 11.190000
## 17 9.4 75.00 24 16.710000
## 18 5.8 54.00 32 19.890000
## 19 4.7 67.00 19 10.470000
## 20 5.7 77.00 23 9.610000
## 21 8.9 75.00 41 15.820000
## 22 9.4 76.00 23 16.270000
## 23 9.7 88.00 32 12.530000
## 24 9.8 78.00 32 16.110000
## 25 9.9 81.00 22 15.900000
## 26 5.8 82.00 21 8.630000
## 27 8.8 83.00 22 12.770000
## 28 7.5 89.00 43 9.470000
## 29 6.5 77.00 23 10.960000
## 30 5.4 76.00 27 9.350000
## 31 3.4 75.00 28 6.400000
## 32 7.9 82.00 37 11.750000
## 33 5.7 75.00 23 10.130000
## 34 6.8 76.00 27 11.770000
## 35 7.8 73.00 34 14.640000
## 36 7.9 84.00 35 11.200000
## 37 8.9 82.00 32 13.240000
## 38 9.7 77.00 43 16.360000
## 39 5.4 75.00 36 9.600000
## 40 5.5 77.00 45 9.280000
## 41 7.8 73.00 38 14.640000
## 42 8.9 72.00 43 17.170000
## 43 9.8 67.00 43 21.830000
## 44 8.8 75.00 44 15.640000
## 45 6.9 94.00 23 7.810000
## 46 8.7 91.00 23 10.510000
## 47 7.8 69.00 19 16.380000
## 48 6.6 54.00 29 22.630000
## 49 7.5 68.00 40 16.220000
## 50 8.9 77.00 34 15.100000
## 51 8.8 79.00 23 14.100000
## 52 9.7 85.00 45 13.430000
## 53 8.8 74.00 34 16.700000
## 54 9.5 76.00 23 16.450000
## 55 8.9 74.00 43 16.250000
## 56 9.5 88.00 32 12.270000
## 57 5.8 76.00 34 10.400000
## 58 7.8 75.00 35 13.870000
## 59 9.8 64.00 37 23.930000
## 60 9.6 53.00 26 34.180000
## 61 9.7 57.00 37 29.860000
## 62 8.9 76.00 45 15.410000
## 63 8.8 78.00 24 14.460000
## 64 7.6 93.00 54 8.790000
## 65 7.7 78.00 34 12.660000
## 66 8.7 77.00 23 14.670000
## 67 9.8 64.00 45 23.930000
## 68 7.9 78.00 43 12.980000
## 69 8.8 57.00 23 27.900000
## 70 8.9 77.00 43 15.100000
## 71 9.8 57.00 24 30.160000
## 72 7.8 76.00 45 13.500000
## 73 8.6 68.00 37 18.600000
## 74 6.7 78.00 42 11.100000
## 75 7.5 78.00 36 12.330000
## 76 6.6 87.00 35 8.720000
## 77 9.8 97.00 35 10.420000
## 78 7.9 75.00 43 14.400000
## 79 9.6 75.00 43 17.700000
## 80 9.9 68.00 33 21.410000
## 81 7.6 87.00 32 10.400000
## 82 4.9 88.00 25 6.330000
## 83 5.9 67.00 37 13.140000
## 84 8.9 87.00 38 11.760000
## 85 9.8 66.00 36 22.500000
## 86 8.8 76.00 36 15.240000
## 87 7.9 86.00 35 10.680000
## 88 9.4 86.00 39 12.710000
## 89 5.7 67.00 42 12.700000
## 90 6.7 55.00 22 22.150000
## 91 3.5 65.00 38 8.280000
## 92 4.7 68.00 12 10.160000
## 93 5.8 89.00 23 7.320000
## 94 7.9 57.00 42 24.320000
## 95 8.9 78.00 33 14.630000
## 96 4.7 87.00 34 6.210000
## 97 7.8 76.00 34 13.500000
## 98 9.8 75.00 23 17.420000
## 99 8.6 65.00 45 20.360000
## 100 9.7 64.00 44 23.680000
## 101 9.8 56.00 36 31.250000
## 102 7.8 54.00 34 26.750000
## 103 8.8 65.00 32 20.830000
## 104 9.6 76.00 43 16.620000
## 105 8.9 78.00 4 14.630000
## 106 9.6 56.00 23 30.610000
## 107 6.7 67.00 33 14.930000
## 108 8.7 76.00 44 15.600000
## 109 9.8 67.00 32 21.830000
## 110 9.8 56.00 31 31.250000
## 111 7.8 77.00 32 13.160000
## 112 5.7 68.00 31 12.330000
## 113 8.7 76.00 23 15.600000
## 114 7.7 65.00 34 18.220000
## 115 7.8 57.00 32 24.100000
## 116 7.9 78.00 34 12.980000
## 117 9.5 75.00 37 16.890000
## 118 9.5 75.00 34 16.890000
## 119 9.3 75.00 43 16.530000
## 120 6.8 49.00 35 28.320000
## 121 4.8 66.00 33 11.200000
## 122 7.3 61.00 23 19.620000
## 123 5.6 62.00 33 14.570000
## 124 5.5 62.00 25 14.310000
## 125 7.8 63.00 34 19.650000
## 126 9.8 63.00 35 24.690000
## 127 6.6 64.00 36 16.110000
## 128 7.3 71.80 13 19.880000
## 129 7.5 69.20 9 10.540000
## 130 7.5 67.50 23 9.160000
## 131 8.2 62.30 8 15.280000
## 132 13.8 72.86 18 25.995654
## 133 15.7 99.44 23 15.877328
## 134 14.9 102.37 16 14.218077
## 135 6.2 67.20 23 16.720000
## 136 6.4 58.50 18 12.350000
## 137 14.8 103.66 10 13.773341
## 138 12.5 89.90 10 15.466450
## 139 12.8 86.70 8 8.630000
## 140 8.2 68.50 6 12.770000
## 141 15.5 104.72 21 14.134239
## 142 14.5 95.50 23 13.860000
## 143 12.8 97.81 11 13.379610
## 144 6.6 84.74 13 9.191090
## 145 11.3 88.50 11 27.570000
## 146 14.7 95.20 18 16.219723
## 147 14.5 69.68 17 29.864257
## 148 12.4 79.50 15 18.310000
## 149 11.2 85.50 12 11.770000
## 150 8.3 85.70 20 11.200000
## 151 9.7 60.50 12 10.160000
## 152 8.6 71.32 24 16.907359
## 153 11.0 70.32 13 22.245131
## 154 8.1 72.80 14 14.630000
## 155 9.3 78.50 14 28.700000
## 156 7.0 68.10 25 31.890000
## 157 8.1 76.79 20 13.736487
## 158 9.6 97.20 20 20.240000
## 159 8.8 84.50 8 6.210000
## 160 8.9 97.50 6 13.500000
## 161 6.8 83.42 21 9.771664
## 162 7.8 66.60 23 20.360000
## 163 6.5 87.20 11 21.300000
## 164 6.3 101.20 12 21.630000
## 165 9.7 92.30 10 19.400000
## 166 10.9 87.20 12 12.100000
## 167 7.5 89.70 14 9.321298
## 168 9.1 89.50 18 22.300000
## 169 9.6 86.10 6 12.949856
## 170 9.8 86.56 12 13.079513
## 171 8.3 83.60 14 37.600000
## 172 8.3 85.90 11 11.248426
## 173 8.8 84.60 19 12.295380
## 174 10.0 72.50 22 31.910000
## 175 11.5 83.50 10 39.330000
## 176 9.5 80.00 15 14.843750
## 177 7.6 76.50 23 20.550000
## 178 12.5 79.50 23 20.400000
## 179 7.5 61.50 8 7.800000
## 180 13.5 73.31 19 25.119288
## 181 12.0 68.50 17 35.850000
## 182 8.8 104.50 11 30.800000
## 183 11.1 95.50 23 24.330000
## 184 9.6 97.50 14 10.098619
## 185 8.4 60.30 12 14.460000
## 186 10.5 80.10 23 8.790000
## 187 10.0 86.30 12 12.660000
## 188 8.9 82.70 8 14.670000
## 189 9.1 68.40 23 16.000000
## 190 8.3 74.10 10 16.870000
## 191 7.0 75.50 23 28.960000
## 192 12.1 66.90 21 35.670000
## 193 8.9 69.30 11 35.600000
## 194 6.7 69.30 11 23.930000
## 195 9.7 64.10 16 18.930000
## 196 8.0 79.20 15 12.980000
## 197 9.2 88.70 22 27.900000
## 198 8.3 70.30 19 15.100000
## 199 8.9 71.70 7 30.160000
## 200 7.0 81.90 19 18.900000
## 201 7.9 78.30 11 13.300000
## 202 10.4 65.30 15 16.550000
## 203 8.1 75.70 18 40.150000
## 204 9.5 82.50 8 25.600000
## 205 10.0 79.70 10 14.950000
## 206 11.2 78.70 6 5.100000
## 207 9.0 81.70 9 49.000000
## 208 10.6 68.50 23 25.150000
## 209 11.0 78.50 17 22.500000
## 210 7.5 75.70 19 22.800000
## 211 11.2 80.90 22 15.700000
## 212 11.3 71.10 20 31.700000
## 213 8.0 83.30 15 25.100000
## 214 10.1 67.10 17 12.900000
## 215 9.9 84.70 8 29.500000
## 216 7.5 71.30 15 19.500000
## 217 10.3 70.10 11 29.500000
## 218 8.7 80.40 20 32.400000
## 219 7.3 81.30 8 23.200000
## 220 9.8 69.20 10 10.500000
## 221 9.8 78.60 21 36.500000
## 222 10.4 67.90 9 25.600000
## 223 10.5 82.60 23 12.500000
## 224 9.0 69.50 11 37.350000
## 225 7.7 78.10 9 34.800000
## 226 9.2 82.70 24 19.500000
## 227 9.5 78.20 10 24.250000
## 228 9.0 61.30 17 23.600000
## 229 10.3 64.30 9 10.250000
## 230 9.1 70.60 13 27.250000
## 231 7.9 83.50 19 36.500000
## 232 10.0 68.20 20 14.800000
## 233 7.6 75.60 9 93.800000
## 234 7.1 73.70 22 59.750000
## 235 6.5 79.50 11 38.350000
## 236 8.8 81.30 14 20.820000
## 237 12.8 70.40 14 10.750000
## 238 8.6 67.30 20 37.200000
## 239 12.0 65.70 10 29.800000
## 240 10.3 69.50 10 32.300000
## 241 10.2 69.50 19 30.500000
## 242 12.6 82.60 8 31.500000
## 243 10.3 85.60 24 37.300000
## 244 7.1 83.50 23 23.400000
## 245 9.7 76.60 19 32.700000
## 246 9.6 65.30 17 25.900000
## 247 9.7 66.90 13 31.000000
## 248 9.0 68.50 23 52.500000
## 249 7.9 67.80 17 12.000000
## 250 10.0 67.40 19 14.650000
## 251 8.5 78.30 7 22.350000
## 252 11.2 71.40 7 5.750000
## 253 9.1 74.50 21 7.950000
## 254 7.5 65.40 18 57.750000
## 255 9.4 66.80 23 10.500000
## 256 6.5 72.30 11 11.900000
## 257 9.8 72.30 9 28.000000
## 258 8.2 78.70 23 18.000000
## 259 9.1 81.90 21 20.000000
## 260 10.0 73.40 20 37.000000
## 261 9.4 79.30 14 17.500000
## 262 8.0 77.30 10 15.500000
## 263 9.5 67.50 9 16.800000
## 264 5.6 67.50 25 20.500000
## 265 11.7 73.20 7 44.300000
## 266 9.3 81.50 17 27.500000
## 267 9.8 72.50 6 29.500000
## 268 10.2 72.60 9 18.750000
## 269 8.5 72.10 20 18.650000
## 270 8.5 64.10 18 26.200000
## 271 8.3 79.20 8 17.500000
## 272 8.2 75.30 13 22.700000
## 273 8.2 78.10 18 17.900000
## 274 8.0 96.80 14 14.300000
## 275 9.2 87.20 10 30.100000
## 276 7.7 72.80 16 8.100000
## 277 10.2 76.70 13 12.150000
## 278 11.5 74.40 12 28.100000
## 279 9.5 73.70 11 9.450000
## 280 9.0 79.40 21 26.600000
## 281 7.0 76.30 6 16.950000
## 282 9.9 77.70 23 16.500000
## 283 10.3 82.20 10 23.250000
## 284 9.5 73.70 8 7.550000
## 285 8.6 75.20 8 30.600000
## 286 7.3 75.50 18 14.200000
## 287 11.4 82.20 7 24.600000
## 288 8.2 74.20 11 18.400000
## 289 10.3 72.20 23 42.300000
## 290 8.6 87.20 20 14.350000
## 291 7.8 79.20 22 19.600000
## 292 10.2 83.20 12 35.650000
## 293 9.4 81.20 10 17.750000
## 294 5.5 63.80 8 17.100000
## 295 6.3 74.90 22 25.700000
## 296 7.2 70.20 15 20.550000
## 297 12.0 80.70 15 20.400000
## 298 7.4 69.80 13 16.200000
## 299 6.5 75.50 10 35.450000
## 300 7.4 67.80 10 7.450000
## 301 9.9 81.50 8 8.150000
## 302 7.9 67.60 8 18.000000
## 303 10.3 66.60 18 16.500000
## 304 6.7 72.50 14 17.100000
## 305 9.2 85.70 13 11.250000
## 306 8.5 65.10 9 9.450000
## 307 10.3 82.20 11 41.600000
## 308 7.7 74.50 12 19.400000
## 309 10.7 71.60 16 4.700000
## 310 7.7 80.20 18 38.800000
## 311 9.5 72.30 16 11.650000
## 312 6.9 86.30 14 16.300000
## 313 8.4 82.70 45 23.900000
## 314 6.6 68.40 23 15.820000
## 315 8.4 74.10 8 9.250000
## 316 11.2 75.50 23 16.500000
## 317 11.7 66.90 20 14.320000
## 318 10.7 69.30 12 34.800000
## 319 8.1 69.30 7 12.400000
## 320 8.4 64.10 11 59.350000
## 321 6.8 79.20 22 53.850000
## 322 10.0 88.70 20 14.700000
## 323 9.7 70.30 11 39.200000
## 324 10.4 71.70 11 14.150000
## 325 6.9 81.90 21 68.700000
## 326 8.3 76.60 15 9.500000
## 327 8.3 65.30 12 22.000000
## 328 7.9 66.90 6 16.000000
## 329 8.4 68.50 7 19.000000
## 330 10.5 67.80 15 13.800000
## 331 8.4 67.40 22 17.000000
## 332 8.8 78.30 19 13.000000
## 333 7.3 71.40 21 17.000000
## 334 7.7 74.50 19 61.300000
## 335 9.0 65.40 9 32.500000
## 336 8.8 66.80 13 40.450000
## 337 11.2 72.30 11 27.600000
## 338 10.0 72.30 20 24.000000
## 339 8.5 78.70 18 20.150000
## 340 13.1 81.90 9 25.000000
## 341 9.1 73.40 12 63.500000
## 342 9.7 79.30 22 27.500000
## 343 8.2 77.30 6 24.300000
## 344 8.2 67.50 15 15.900000
## 345 9.2 67.50 22 14.650000
## 346 9.7 73.20 7 10.500000
## 347 11.2 89.50 10 24.230000
## 348 10.4 86.70 7 13.835509
## 349 8.0 86.00 11 10.816658
## 350 8.5 83.60 17 32.460000
## 351 9.9 85.50 13 13.542629
## 352 9.0 84.56 22 12.586720
## 353 8.5 72.50 19 15.230000
## 354 6.3 83.50 7 16.950000
## 355 8.3 80.56 17 12.789076
## 356 8.6 76.50 10 14.320000
## 357 11.2 96.00 14 12.152778
## 358 8.3 67.20 21 26.700000
## 359 8.4 58.50 14 14.500000
## 360 10.2 103.10 17 9.595837
## 361 9.6 89.40 17 12.011471
## 362 7.4 86.70 11 18.700000
## 363 9.0 68.50 10 17.500000
## 364 10.5 104.15 19 9.679897
## 365 9.0 56.00 19 27.400000
## 366 8.3 56.00 10 48.500000
## 367 12.0 68.00 23 24.300000
## 368 11.0 77.00 22 30.500000
## 369 7.8 87.00 22 42.000000
## 370 9.5 76.00 10 19.700000
## 371 11.0 75.00 14 15.850000
## 372 7.6 65.00 10 28.500000
## 373 8.7 65.00 17 34.500000
## 374 8.4 68.00 10 11.400000
## 375 10.0 76.00 12 33.850000
## 376 8.5 89.00 19 19.700000
## 377 8.4 78.10 16 24.970000
## 378 10.1 96.80 12 15.300000
## 379 7.7 87.20 17 12.750000
## 380 7.9 72.80 15 14.450000
## 381 7.9 76.70 14 17.100000
## 382 7.7 74.40 19 27.650000
## 383 6.4 73.70 23 28.200000
## 384 10.0 79.40 16 14.250000
## 385 8.3 76.30 17 24.750000
## 386 9.3 77.70 22 14.200000
## 387 8.7 82.20 22 16.650000
## 388 8.0 73.70 22 23.000000
## 389 9.2 65.00 15 31.650000
## 390 12.2 59.00 14 28.000000
## 391 9.5 71.50 21 24.700000
## 392 8.0 72.50 23 21.500000
## 393 10.6 73.00 19 16.500000
## 394 12.1 77.00 30 22.100000
## 395 9.5 52.50 23 11.600000
## 396 8.0 54.00 24 41.300000
## 397 9.5 55.00 10 27.240000
## 398 8.0 53.00 13 24.400000
## 399 10.3 62.00 15 36.850000
## 400 8.7 77.10 12 14.635599
## 401 7.6 88.50 24 11.000000
## 402 10.0 95.18 12 11.038463
## 403 8.5 69.44 31 17.627856
## 404 9.7 94.50 18 18.400000
## 405 10.3 79.50 6 13.960000
## 406 10.0 85.50 15 19.300000
## 407 11.8 89.50 22 14.731126
## 408 8.6 85.70 9 22.600000
## 409 10.4 60.50 33 33.600000
## 410 8.5 71.20 22 16.767138
## 411 8.3 68.50 32 19.250000
## 412 7.8 67.80 32 30.300000
## 413 9.8 67.40 23 42.200000
## 414 11.0 78.30 23 43.110000
## 415 8.8 71.40 13 28.300000
## 416 8.1 74.50 11 23.600000
## 417 10.7 65.40 37 47.300000
## 418 9.9 66.80 25 18.700000
cat("\nData untuk clustering:\n")
##
## Data untuk clustering:
print(summary(data_cluster))
## BB TB UMUR BMI
## Min. : 3.400 Min. : 49.00 Min. : 4.00 Min. : 4.70
## 1st Qu.: 7.800 1st Qu.: 68.00 1st Qu.:12.00 1st Qu.:13.14
## Median : 8.800 Median : 75.00 Median :19.00 Median :16.95
## Mean : 8.841 Mean : 75.08 Mean :20.68 Mean :20.46
## 3rd Qu.: 9.800 3rd Qu.: 81.65 3rd Qu.:25.00 3rd Qu.:25.07
## Max. :15.700 Max. :104.72 Max. :54.00 Max. :93.80
cat("Dimensi final:", dim(data_cluster), "\n")
## Dimensi final: 418 4
cor_matrix <- cor(data_cluster)
cat("\n=== MATRIKS KORELASI ===\n")
##
## === MATRIKS KORELASI ===
print(round(cor_matrix, 3))
## BB TB UMUR BMI
## BB 1.000 0.251 -0.204 0.126
## TB 0.251 1.000 -0.141 -0.213
## UMUR -0.204 -0.141 1.000 -0.138
## BMI 0.126 -0.213 -0.138 1.000
cor_matrix <- cor(data_cluster, use = "complete.obs")
corrplot(cor_matrix,
method = "color",
type = "upper",
tl.cex = 0.8,
title = "Heatmap Korelasi Variabel Status Gizi Balita")
print(cluster_summary)
## Cluster Jumlah Rata_BB Rata_TB Rata_UMUR Rata_BMI
## 1 1 197 9.301523 80.10396 14.99492 15.81445
## 2 2 128 7.583594 70.70984 32.23438 16.43252
## 3 3 93 9.596774 70.43280 16.81720 35.83332
Cluster 1
Memiliki karakteristik berat badan yang relatif tinggi (9.3 kg), tinggi badan yang tinggi (80.1 cm), umur yang muda (15 bulan), dan BMI yang rendah (15.8). Cluster 1 memiliki status gizi yang kurang. Kelompok balita di dalam cluster 1 juga merupakan kelompok balita dengan pertumbuhan linier baik tetapi berat badan tidak optimal untuk tinggi badannya, menunjukkan potensi masalah wasting (kurus)
Cluster 2
Memiliki karakteristik berat badan yang rendah (7.6 kg), tinggi badan rendah (70.7 cm), umur yang lebih tua (32.2 bulan), dan BMI yang normal (16.4). Status gizi dari balita di cluster 2 adalah normal. Jadi, kelompok balita di cluster 2 merupakan kelompok balita dengan proporsi tubuh normal mamun secara absolut memiliki berat badan dan tinggi badan rendah, mungkin terkait dengan genetik atau pola pertumbuhan individu.
Cluster 3
Memiliki karakteristik berat badan yang tinggi (9.6 kg), tinggi badan yang rendah (70.4 cm), umur yang muda (18.8 bulan), dan BMI yang sangat tinggi (35.8). Balita di dalam cluster 3 ini merupakan balita dengan resiko gizi berlebih. Kelompok balita dalam cluster 3 merupakan balita yang memiliki masalah obesitas yang cukup serius, di mana berat badan tidak proporsional dengan tinggi badan.
# Matriks korelasi
if(!require("corrplot")) install.packages("corrplot")
library(corrplot)
# Pilih variabel untuk clustering
data_cluster <- data.frame(
BB = data_valid$BB_numeric,
TB = data_valid$TB_cm,
UMUR = data_valid$UMUR_numeric,
BMI = data_valid$BMI_final
)
# Hapus baris dengan NA
data_cluster <- na.omit(data_cluster)
data_cluster
## BB TB UMUR BMI
## 1 5.8 65.00 24 13.730000
## 2 5.5 59.00 24 15.800000
## 3 6.7 71.50 28 13.110000
## 4 8.1 72.50 30 15.410000
## 5 6.9 73.00 28 12.950000
## 6 5.8 77.00 25 9.780000
## 7 4.7 52.50 23 17.500000
## 8 6.8 54.00 28 23.320000
## 9 3.5 55.00 21 11.570000
## 10 5.8 53.00 27 20.650000
## 11 7.1 62.00 28 18.470000
## 12 9.4 61.00 32 25.260000
## 13 8.2 65.00 24 19.410000
## 14 10.2 50.00 31 40.800000
## 15 12.8 72.00 31 24.690000
## 16 10.1 95.00 28 11.190000
## 17 9.4 75.00 24 16.710000
## 18 5.8 54.00 32 19.890000
## 19 4.7 67.00 19 10.470000
## 20 5.7 77.00 23 9.610000
## 21 8.9 75.00 41 15.820000
## 22 9.4 76.00 23 16.270000
## 23 9.7 88.00 32 12.530000
## 24 9.8 78.00 32 16.110000
## 25 9.9 81.00 22 15.900000
## 26 5.8 82.00 21 8.630000
## 27 8.8 83.00 22 12.770000
## 28 7.5 89.00 43 9.470000
## 29 6.5 77.00 23 10.960000
## 30 5.4 76.00 27 9.350000
## 31 3.4 75.00 28 6.400000
## 32 7.9 82.00 37 11.750000
## 33 5.7 75.00 23 10.130000
## 34 6.8 76.00 27 11.770000
## 35 7.8 73.00 34 14.640000
## 36 7.9 84.00 35 11.200000
## 37 8.9 82.00 32 13.240000
## 38 9.7 77.00 43 16.360000
## 39 5.4 75.00 36 9.600000
## 40 5.5 77.00 45 9.280000
## 41 7.8 73.00 38 14.640000
## 42 8.9 72.00 43 17.170000
## 43 9.8 67.00 43 21.830000
## 44 8.8 75.00 44 15.640000
## 45 6.9 94.00 23 7.810000
## 46 8.7 91.00 23 10.510000
## 47 7.8 69.00 19 16.380000
## 48 6.6 54.00 29 22.630000
## 49 7.5 68.00 40 16.220000
## 50 8.9 77.00 34 15.100000
## 51 8.8 79.00 23 14.100000
## 52 9.7 85.00 45 13.430000
## 53 8.8 74.00 34 16.700000
## 54 9.5 76.00 23 16.450000
## 55 8.9 74.00 43 16.250000
## 56 9.5 88.00 32 12.270000
## 57 5.8 76.00 34 10.400000
## 58 7.8 75.00 35 13.870000
## 59 9.8 64.00 37 23.930000
## 60 9.6 53.00 26 34.180000
## 61 9.7 57.00 37 29.860000
## 62 8.9 76.00 45 15.410000
## 63 8.8 78.00 24 14.460000
## 64 7.6 93.00 54 8.790000
## 65 7.7 78.00 34 12.660000
## 66 8.7 77.00 23 14.670000
## 67 9.8 64.00 45 23.930000
## 68 7.9 78.00 43 12.980000
## 69 8.8 57.00 23 27.900000
## 70 8.9 77.00 43 15.100000
## 71 9.8 57.00 24 30.160000
## 72 7.8 76.00 45 13.500000
## 73 8.6 68.00 37 18.600000
## 74 6.7 78.00 42 11.100000
## 75 7.5 78.00 36 12.330000
## 76 6.6 87.00 35 8.720000
## 77 9.8 97.00 35 10.420000
## 78 7.9 75.00 43 14.400000
## 79 9.6 75.00 43 17.700000
## 80 9.9 68.00 33 21.410000
## 81 7.6 87.00 32 10.400000
## 82 4.9 88.00 25 6.330000
## 83 5.9 67.00 37 13.140000
## 84 8.9 87.00 38 11.760000
## 85 9.8 66.00 36 22.500000
## 86 8.8 76.00 36 15.240000
## 87 7.9 86.00 35 10.680000
## 88 9.4 86.00 39 12.710000
## 89 5.7 67.00 42 12.700000
## 90 6.7 55.00 22 22.150000
## 91 3.5 65.00 38 8.280000
## 92 4.7 68.00 12 10.160000
## 93 5.8 89.00 23 7.320000
## 94 7.9 57.00 42 24.320000
## 95 8.9 78.00 33 14.630000
## 96 4.7 87.00 34 6.210000
## 97 7.8 76.00 34 13.500000
## 98 9.8 75.00 23 17.420000
## 99 8.6 65.00 45 20.360000
## 100 9.7 64.00 44 23.680000
## 101 9.8 56.00 36 31.250000
## 102 7.8 54.00 34 26.750000
## 103 8.8 65.00 32 20.830000
## 104 9.6 76.00 43 16.620000
## 105 8.9 78.00 4 14.630000
## 106 9.6 56.00 23 30.610000
## 107 6.7 67.00 33 14.930000
## 108 8.7 76.00 44 15.600000
## 109 9.8 67.00 32 21.830000
## 110 9.8 56.00 31 31.250000
## 111 7.8 77.00 32 13.160000
## 112 5.7 68.00 31 12.330000
## 113 8.7 76.00 23 15.600000
## 114 7.7 65.00 34 18.220000
## 115 7.8 57.00 32 24.100000
## 116 7.9 78.00 34 12.980000
## 117 9.5 75.00 37 16.890000
## 118 9.5 75.00 34 16.890000
## 119 9.3 75.00 43 16.530000
## 120 6.8 49.00 35 28.320000
## 121 4.8 66.00 33 11.200000
## 122 7.3 61.00 23 19.620000
## 123 5.6 62.00 33 14.570000
## 124 5.5 62.00 25 14.310000
## 125 7.8 63.00 34 19.650000
## 126 9.8 63.00 35 24.690000
## 127 6.6 64.00 36 16.110000
## 128 7.3 71.80 13 19.880000
## 129 7.5 69.20 9 10.540000
## 130 7.5 67.50 23 9.160000
## 131 8.2 62.30 8 15.280000
## 132 13.8 72.86 18 25.995654
## 133 15.7 99.44 23 15.877328
## 134 14.9 102.37 16 14.218077
## 135 6.2 67.20 23 16.720000
## 136 6.4 58.50 18 12.350000
## 137 14.8 103.66 10 13.773341
## 138 12.5 89.90 10 15.466450
## 139 12.8 86.70 8 8.630000
## 140 8.2 68.50 6 12.770000
## 141 15.5 104.72 21 14.134239
## 142 14.5 95.50 23 13.860000
## 143 12.8 97.81 11 13.379610
## 144 6.6 84.74 13 9.191090
## 145 11.3 88.50 11 27.570000
## 146 14.7 95.20 18 16.219723
## 147 14.5 69.68 17 29.864257
## 148 12.4 79.50 15 18.310000
## 149 11.2 85.50 12 11.770000
## 150 8.3 85.70 20 11.200000
## 151 9.7 60.50 12 10.160000
## 152 8.6 71.32 24 16.907359
## 153 11.0 70.32 13 22.245131
## 154 8.1 72.80 14 14.630000
## 155 9.3 78.50 14 28.700000
## 156 7.0 68.10 25 31.890000
## 157 8.1 76.79 20 13.736487
## 158 9.6 97.20 20 20.240000
## 159 8.8 84.50 8 6.210000
## 160 8.9 97.50 6 13.500000
## 161 6.8 83.42 21 9.771664
## 162 7.8 66.60 23 20.360000
## 163 6.5 87.20 11 21.300000
## 164 6.3 101.20 12 21.630000
## 165 9.7 92.30 10 19.400000
## 166 10.9 87.20 12 12.100000
## 167 7.5 89.70 14 9.321298
## 168 9.1 89.50 18 22.300000
## 169 9.6 86.10 6 12.949856
## 170 9.8 86.56 12 13.079513
## 171 8.3 83.60 14 37.600000
## 172 8.3 85.90 11 11.248426
## 173 8.8 84.60 19 12.295380
## 174 10.0 72.50 22 31.910000
## 175 11.5 83.50 10 39.330000
## 176 9.5 80.00 15 14.843750
## 177 7.6 76.50 23 20.550000
## 178 12.5 79.50 23 20.400000
## 179 7.5 61.50 8 7.800000
## 180 13.5 73.31 19 25.119288
## 181 12.0 68.50 17 35.850000
## 182 8.8 104.50 11 30.800000
## 183 11.1 95.50 23 24.330000
## 184 9.6 97.50 14 10.098619
## 185 8.4 60.30 12 14.460000
## 186 10.5 80.10 23 8.790000
## 187 10.0 86.30 12 12.660000
## 188 8.9 82.70 8 14.670000
## 189 9.1 68.40 23 16.000000
## 190 8.3 74.10 10 16.870000
## 191 7.0 75.50 23 28.960000
## 192 12.1 66.90 21 35.670000
## 193 8.9 69.30 11 35.600000
## 194 6.7 69.30 11 23.930000
## 195 9.7 64.10 16 18.930000
## 196 8.0 79.20 15 12.980000
## 197 9.2 88.70 22 27.900000
## 198 8.3 70.30 19 15.100000
## 199 8.9 71.70 7 30.160000
## 200 7.0 81.90 19 18.900000
## 201 7.9 78.30 11 13.300000
## 202 10.4 65.30 15 16.550000
## 203 8.1 75.70 18 40.150000
## 204 9.5 82.50 8 25.600000
## 205 10.0 79.70 10 14.950000
## 206 11.2 78.70 6 5.100000
## 207 9.0 81.70 9 49.000000
## 208 10.6 68.50 23 25.150000
## 209 11.0 78.50 17 22.500000
## 210 7.5 75.70 19 22.800000
## 211 11.2 80.90 22 15.700000
## 212 11.3 71.10 20 31.700000
## 213 8.0 83.30 15 25.100000
## 214 10.1 67.10 17 12.900000
## 215 9.9 84.70 8 29.500000
## 216 7.5 71.30 15 19.500000
## 217 10.3 70.10 11 29.500000
## 218 8.7 80.40 20 32.400000
## 219 7.3 81.30 8 23.200000
## 220 9.8 69.20 10 10.500000
## 221 9.8 78.60 21 36.500000
## 222 10.4 67.90 9 25.600000
## 223 10.5 82.60 23 12.500000
## 224 9.0 69.50 11 37.350000
## 225 7.7 78.10 9 34.800000
## 226 9.2 82.70 24 19.500000
## 227 9.5 78.20 10 24.250000
## 228 9.0 61.30 17 23.600000
## 229 10.3 64.30 9 10.250000
## 230 9.1 70.60 13 27.250000
## 231 7.9 83.50 19 36.500000
## 232 10.0 68.20 20 14.800000
## 233 7.6 75.60 9 93.800000
## 234 7.1 73.70 22 59.750000
## 235 6.5 79.50 11 38.350000
## 236 8.8 81.30 14 20.820000
## 237 12.8 70.40 14 10.750000
## 238 8.6 67.30 20 37.200000
## 239 12.0 65.70 10 29.800000
## 240 10.3 69.50 10 32.300000
## 241 10.2 69.50 19 30.500000
## 242 12.6 82.60 8 31.500000
## 243 10.3 85.60 24 37.300000
## 244 7.1 83.50 23 23.400000
## 245 9.7 76.60 19 32.700000
## 246 9.6 65.30 17 25.900000
## 247 9.7 66.90 13 31.000000
## 248 9.0 68.50 23 52.500000
## 249 7.9 67.80 17 12.000000
## 250 10.0 67.40 19 14.650000
## 251 8.5 78.30 7 22.350000
## 252 11.2 71.40 7 5.750000
## 253 9.1 74.50 21 7.950000
## 254 7.5 65.40 18 57.750000
## 255 9.4 66.80 23 10.500000
## 256 6.5 72.30 11 11.900000
## 257 9.8 72.30 9 28.000000
## 258 8.2 78.70 23 18.000000
## 259 9.1 81.90 21 20.000000
## 260 10.0 73.40 20 37.000000
## 261 9.4 79.30 14 17.500000
## 262 8.0 77.30 10 15.500000
## 263 9.5 67.50 9 16.800000
## 264 5.6 67.50 25 20.500000
## 265 11.7 73.20 7 44.300000
## 266 9.3 81.50 17 27.500000
## 267 9.8 72.50 6 29.500000
## 268 10.2 72.60 9 18.750000
## 269 8.5 72.10 20 18.650000
## 270 8.5 64.10 18 26.200000
## 271 8.3 79.20 8 17.500000
## 272 8.2 75.30 13 22.700000
## 273 8.2 78.10 18 17.900000
## 274 8.0 96.80 14 14.300000
## 275 9.2 87.20 10 30.100000
## 276 7.7 72.80 16 8.100000
## 277 10.2 76.70 13 12.150000
## 278 11.5 74.40 12 28.100000
## 279 9.5 73.70 11 9.450000
## 280 9.0 79.40 21 26.600000
## 281 7.0 76.30 6 16.950000
## 282 9.9 77.70 23 16.500000
## 283 10.3 82.20 10 23.250000
## 284 9.5 73.70 8 7.550000
## 285 8.6 75.20 8 30.600000
## 286 7.3 75.50 18 14.200000
## 287 11.4 82.20 7 24.600000
## 288 8.2 74.20 11 18.400000
## 289 10.3 72.20 23 42.300000
## 290 8.6 87.20 20 14.350000
## 291 7.8 79.20 22 19.600000
## 292 10.2 83.20 12 35.650000
## 293 9.4 81.20 10 17.750000
## 294 5.5 63.80 8 17.100000
## 295 6.3 74.90 22 25.700000
## 296 7.2 70.20 15 20.550000
## 297 12.0 80.70 15 20.400000
## 298 7.4 69.80 13 16.200000
## 299 6.5 75.50 10 35.450000
## 300 7.4 67.80 10 7.450000
## 301 9.9 81.50 8 8.150000
## 302 7.9 67.60 8 18.000000
## 303 10.3 66.60 18 16.500000
## 304 6.7 72.50 14 17.100000
## 305 9.2 85.70 13 11.250000
## 306 8.5 65.10 9 9.450000
## 307 10.3 82.20 11 41.600000
## 308 7.7 74.50 12 19.400000
## 309 10.7 71.60 16 4.700000
## 310 7.7 80.20 18 38.800000
## 311 9.5 72.30 16 11.650000
## 312 6.9 86.30 14 16.300000
## 313 8.4 82.70 45 23.900000
## 314 6.6 68.40 23 15.820000
## 315 8.4 74.10 8 9.250000
## 316 11.2 75.50 23 16.500000
## 317 11.7 66.90 20 14.320000
## 318 10.7 69.30 12 34.800000
## 319 8.1 69.30 7 12.400000
## 320 8.4 64.10 11 59.350000
## 321 6.8 79.20 22 53.850000
## 322 10.0 88.70 20 14.700000
## 323 9.7 70.30 11 39.200000
## 324 10.4 71.70 11 14.150000
## 325 6.9 81.90 21 68.700000
## 326 8.3 76.60 15 9.500000
## 327 8.3 65.30 12 22.000000
## 328 7.9 66.90 6 16.000000
## 329 8.4 68.50 7 19.000000
## 330 10.5 67.80 15 13.800000
## 331 8.4 67.40 22 17.000000
## 332 8.8 78.30 19 13.000000
## 333 7.3 71.40 21 17.000000
## 334 7.7 74.50 19 61.300000
## 335 9.0 65.40 9 32.500000
## 336 8.8 66.80 13 40.450000
## 337 11.2 72.30 11 27.600000
## 338 10.0 72.30 20 24.000000
## 339 8.5 78.70 18 20.150000
## 340 13.1 81.90 9 25.000000
## 341 9.1 73.40 12 63.500000
## 342 9.7 79.30 22 27.500000
## 343 8.2 77.30 6 24.300000
## 344 8.2 67.50 15 15.900000
## 345 9.2 67.50 22 14.650000
## 346 9.7 73.20 7 10.500000
## 347 11.2 89.50 10 24.230000
## 348 10.4 86.70 7 13.835509
## 349 8.0 86.00 11 10.816658
## 350 8.5 83.60 17 32.460000
## 351 9.9 85.50 13 13.542629
## 352 9.0 84.56 22 12.586720
## 353 8.5 72.50 19 15.230000
## 354 6.3 83.50 7 16.950000
## 355 8.3 80.56 17 12.789076
## 356 8.6 76.50 10 14.320000
## 357 11.2 96.00 14 12.152778
## 358 8.3 67.20 21 26.700000
## 359 8.4 58.50 14 14.500000
## 360 10.2 103.10 17 9.595837
## 361 9.6 89.40 17 12.011471
## 362 7.4 86.70 11 18.700000
## 363 9.0 68.50 10 17.500000
## 364 10.5 104.15 19 9.679897
## 365 9.0 56.00 19 27.400000
## 366 8.3 56.00 10 48.500000
## 367 12.0 68.00 23 24.300000
## 368 11.0 77.00 22 30.500000
## 369 7.8 87.00 22 42.000000
## 370 9.5 76.00 10 19.700000
## 371 11.0 75.00 14 15.850000
## 372 7.6 65.00 10 28.500000
## 373 8.7 65.00 17 34.500000
## 374 8.4 68.00 10 11.400000
## 375 10.0 76.00 12 33.850000
## 376 8.5 89.00 19 19.700000
## 377 8.4 78.10 16 24.970000
## 378 10.1 96.80 12 15.300000
## 379 7.7 87.20 17 12.750000
## 380 7.9 72.80 15 14.450000
## 381 7.9 76.70 14 17.100000
## 382 7.7 74.40 19 27.650000
## 383 6.4 73.70 23 28.200000
## 384 10.0 79.40 16 14.250000
## 385 8.3 76.30 17 24.750000
## 386 9.3 77.70 22 14.200000
## 387 8.7 82.20 22 16.650000
## 388 8.0 73.70 22 23.000000
## 389 9.2 65.00 15 31.650000
## 390 12.2 59.00 14 28.000000
## 391 9.5 71.50 21 24.700000
## 392 8.0 72.50 23 21.500000
## 393 10.6 73.00 19 16.500000
## 394 12.1 77.00 30 22.100000
## 395 9.5 52.50 23 11.600000
## 396 8.0 54.00 24 41.300000
## 397 9.5 55.00 10 27.240000
## 398 8.0 53.00 13 24.400000
## 399 10.3 62.00 15 36.850000
## 400 8.7 77.10 12 14.635599
## 401 7.6 88.50 24 11.000000
## 402 10.0 95.18 12 11.038463
## 403 8.5 69.44 31 17.627856
## 404 9.7 94.50 18 18.400000
## 405 10.3 79.50 6 13.960000
## 406 10.0 85.50 15 19.300000
## 407 11.8 89.50 22 14.731126
## 408 8.6 85.70 9 22.600000
## 409 10.4 60.50 33 33.600000
## 410 8.5 71.20 22 16.767138
## 411 8.3 68.50 32 19.250000
## 412 7.8 67.80 32 30.300000
## 413 9.8 67.40 23 42.200000
## 414 11.0 78.30 23 43.110000
## 415 8.8 71.40 13 28.300000
## 416 8.1 74.50 11 23.600000
## 417 10.7 65.40 37 47.300000
## 418 9.9 66.80 25 18.700000
cor_matrix <- cor(data_cluster)
cat("\n=== MATRIKS KORELASI ===\n")
##
## === MATRIKS KORELASI ===
print(round(cor_matrix, 3))
## BB TB UMUR BMI
## BB 1.000 0.251 -0.204 0.126
## TB 0.251 1.000 -0.141 -0.213
## UMUR -0.204 -0.141 1.000 -0.138
## BMI 0.126 -0.213 -0.138 1.000
cor_matrix <- cor(data_cluster, use = "complete.obs")
corrplot(cor_matrix,
method = "color",
type = "upper",
tl.cex = 0.8,
title = "Heatmap Korelasi Variabel Status Gizi Balita")
Plot tersebut merupakan heatmap korelasi yang menunjukkan hubungan linier antara variabel-variabel BB, TB, Umur, dan BMI. Warna biru pada plot menandakan korelasi positif, warna putih menunjukkan korelasi mendekati nol, warna merah menandakan korelasi negatif, dan intensitas warna menunjukkan kekuatan korelasi.
BB vs TB
Berdasarkan hasil analisis matriks korelasi, teridentifikasi pola hubungan yang beragam antar variabel status gizi balita. Berat Badan (BB) dan Tinggi Badan (TB) menunjukkan korelasi positif kuat sebesar +0,62, mengindikasikan bahwa pertumbuhan linear dan pertambahan massa tubuh berjalan seiring dengan pola yang sehat. Hal ini merupakan hubungan yang diharapkan dalam perkembangan balita normal, dimana peningkatan tinggi badan diikuti oleh penambahan berat badan yang proporsional.
TB vs Umur
Tinggi Badan (TB) dengan Umur (UMUR) memiliki korelasi positif moderat sebesar +0,35, menunjukkan bahwa pertambahan usia memang diikuti oleh peningkatan tinggi badan, meskipun terdapat variasi individual yang cukup besar dalam pola pertumbuhan setiap anak. Demikian pula, Berat Badan (BB) dengan Indeks Massa Tubuh (BMI) berkorelasi positif moderat sebesar +0,45, yang telah diprediksi mengingat BMI secara matematis dihitung dari berat badan dibagi kuadrat tinggi badan.
BB vs Umur
Hubungan antara Berat Badan (BB) dengan Umur (UMUR) hanya menunjukkan korelasi positif yang sangat lemah sebesar +0,15, mengindikasikan bahwa pertambahan berat badan tidak selalu linear seiring pertambahan usia. Fenomena ini mungkin disebabkan oleh variasi individual, faktor asupan gizi, kondisi kesehatan, dan pola metabolisme yang berbeda-beda pada setiap balita.
Yang menarik adalah hubungan antara Umur (UMUR) dengan Indeks Massa Tubuh (BMI) yang menunjukkan korelasi negatif sangat lemah sebesar -0,08. Tren ini mengindikasikan kecenderungan penurunan BMI seiring pertambahan usia, yang merupakan fenomena perkembangan normal pada balita dimana laju pertambahan berat badan mulai melambat relatif terhadap pertambahan tinggi badan. Tinggi Badan (TB) dengan Indeks Massa Tubuh (BMI) hampir tidak berkorelasi dengan nilai +0,12, menegaskan bahwa BMI lebih dipengaruhi oleh variasi berat badan daripada tinggi badan.
Pola korelasi ini memberikan dasar yang kuat untuk analisis clustering berikutnya. Tidak terdapat korelasi sempurna antar variabel yang dapat menyebabkan masalah multikolinearitas, sehingga keempat variabel dapat dipertahankan dalam analisis cluster. Setiap variabel memberikan kontribusi informatif yang unik, dengan BB dan TB sebagai indikator pertumbuhan fisik dasar, UMUR sebagai faktor perkembangan, dan BMI sebagai indikator komposisi tubuh. Variasi kekuatan korelasi ini justru akan membantu pembentukan cluster yang lebih bermakna dan dapat diinterpretasikan secara klinis dalam konteks status gizi balita.
k_optimal <- 3
set.seed(123)
kmeans_result <- kmeans(data_scaled, centers = k_optimal, nstart = 25)
# Tambahkan cluster ke data
data_cluster$cluster <- as.factor(kmeans_result$cluster)
data_valid$cluster <- as.factor(kmeans_result$cluster)
cat("\nClustering selesai dengan", k_optimal, "cluster\n")
##
## Clustering selesai dengan 3 cluster
# ----------------------------
# 10. VISUALISASI
# Plot cluster
fviz_cluster(kmeans_result, data = data_scaled,
palette = c("#2E9FDF", "#00AFBB", "#E7B800"),
geom = "point",
ggtheme = theme_minimal(),
main = "Hasil Clustering K-Means")
Hasil visualisasi menunjukkan ada pemisahan yang cukup jelas antara ketiga cluster. Cluster 3 terpisah jauh dari cluster lainnya merupakan indikasi karakteristik yang sangat berbeda,
# BB per cluster
ggplot(data_cluster, aes(x = cluster, y = BB, fill = cluster)) +
geom_boxplot() +
labs(title = "Berat Badan per Cluster", x = "Cluster", y = "BB (kg)") +
theme_minimal()
Berdasarkan boxplot di atas dapat diinterpretasikan bahwa cluster 1 dan cluster 3 memiliki distribusi berat badan yang relatif tinggi, sedangkan cluster 2 memiliki distribusi berat badan terendah. Dapat dilihat juga pada boxplot bahwa cluster 1 dan cluster 3 memiliki outlier yang merupakan kasus ekstrem.
# BB per cluster
ggplot(data_cluster, aes(x = cluster, y = BB, fill = cluster)) +
geom_boxplot() +
labs(title = "Berat Badan per Cluster", x = "Cluster", y = "BB (kg)") +
theme_minimal()
# TB per cluster
ggplot(data_cluster, aes(x = cluster, y = TB, fill = cluster)) +
geom_boxplot() +
labs(title = "Tinggi Badan per Cluster", x = "Cluster", y = "TB (cm)") +
theme_minimal()
Berdasarkan boxplot di atas dapat diinterpretasikan bahwa cluster 1 memiliki tinggi badan paling tinggi dengan distribusi yang konsisten. Cluster 2 dan cluster memiliki tinggi badan yang rendah dan relatif sama atau variasi yang serupa.
# BMI per cluster
ggplot(data_cluster, aes(x = cluster, y = BMI, fill = cluster)) +
geom_boxplot() +
labs(title = "BMI per Cluster", x = "Cluster", y = "BMI") +
theme_minimal()
Berdasarkan boxplot di atas dapat diinterpretasikan bahwa cluster 3 memiliki BMI yang sangat tinggi dengan variasi yang cukup luas dibandingkan cluster lainnya. Cluster 1 dan cluster 2 memiliki BMI relatif rendah dengan distribusi yang overlapping.
cat("\n=== MENENTUKAN JUMLAH CLUSTER ===\n")
##
## === MENENTUKAN JUMLAH CLUSTER ===
fviz_nbclust(data_scaled, kmeans, method = "wss", k.max = 8) +
ggtitle("Elbow Method untuk Optimal Cluster")
Grafik Elbow Method menunjukkan pola penurunan Within-Cluster Sum of Squares (WSS) yang signifikan dari k=1 hingga k=3, kemudian mulai mengalami pelandaian setelah titik tersebut. Pada k=1, WSS berada pada nilai tertinggi sekitar 1675, yang kemudian turun drastis menjadi sekitar 1325 pada k=2, dan kembali turun menjadi sekitar 1125 pada k=3. Setelah k=3, penurunan WSS tidak lagi signifikan, dimana pada k=4 WSS hanya turun menjadi sekitar 1025, k=5 sekitar 950, dan seterusnya dengan penurunan yang semakin landai. Pola ini membentuk siku (elbow) yang jelas pada k=3, yang mengindikasikan bahwa penambahan cluster beyond titik ini tidak lagi memberikan peningkatan kualitas clustering yang meaningful dibandingkan dengan kompleksitas tambahan yang diperkenalkan
# Silhouette score
sil_score <- silhouette(kmeans_result$cluster, dist(data_scaled))
cat("\nRata-rata Silhouette Width:", round(mean(sil_score[, 3]), 3), "\n")
##
## Rata-rata Silhouette Width: 0.246
#Grafik
fviz_nbclust(data_scaled, kmeans, method = "silhouette", k.max = 8) +
ggtitle("Silhouette Method untuk Optimal Cluster")
Grafik Silhouette Method menunjukkan nilai average silhouette width tertinggi dicapai pada k=2 dengan nilai sekitar 0.31, diikuti oleh k=3 dengan nilai sekitar 0.285. Setelah k=3, terjadi penurunan bertahap dimana k=4 memiliki nilai sekitar 0.265, k=5 sekitar 0.245, dan seterusnya hingga k=8 yang berada di sekitar 0.22. Meskipun k=2 memiliki nilai silhouette width tertinggi, namun perbedaan dengan k=3 tidak terlalu besar, dan dari perspektif interpretasi klinis status gizi balita, tiga cluster memberikan pemahaman yang lebih komprehensif tentang variasi status gizi dibandingkan hanya dua cluster. Nilai silhouette width untuk k=3 sebesar 0.285 termasuk dalam kategori “fair” menurut standar Kaufman & Rousseeuw, yang masih dapat diterima untuk data kompleks seperti status gizi balita.
Berdasarkan integrasi kedua metode, k=3 dipilih sebagai jumlah cluster optimal. Elbow Method memberikan justifikasi statistik dengan identifikasi clear elbow point pada k=3, sementara Silhouette Method meskipun menunjukkan nilai tertinggi pada k=2, namun nilai k=3 masih cukup kompetitif dan memberikan segmentasi yang lebih bermakna secara klinis. Pertimbangan praktis dalam interpretasi status gizi balita yang biasanya dikategorikan menjadi underweight, normal, dan overweight juga mendukung pemilihan tiga cluster ini.
Berdasarkan hasil analisis clustering menggunakan algoritma K-Means pada data status gizi balita, dapat disimpulkan:
Cluster 1: Balita dengan berat badan tinggi tetapi BMI rendah, mengindikasikan potensi wasting (kurus).
Cluster 2: Balita dengan profil normal tetapi ukuran absolut kecil, mungkin terkait faktor genetik.
Cluster 3: Balita dengan BMI sangat tinggi, mengindikasikan risiko obesitas
Hasil clustering ini dapat menjadi dasar untuk intervensi gizi yang lebih tepat sasaran sesuai karakteristik masing-masing kelompok.
Han, J., Kamber, M., & Pei, J. (2012). Data Mining: Concepts and
Techniques (3rd ed.). Morgan
Kaufmann Publishers.
James, G., Witten, D., Hastie, T., & Tibshirani, R. (2021). An
Introduction to Statistical Learning: with
Applications in R (2nd ed.). Springer.
Kementerian Kesehatan Republik Indonesia. (2020). Pedoman Pelaksanaan
Stimulasi, Deteksi dan
Intervensi Dini Tumbuh Kembang Anak (SDIDTK) di Tingkat Pelayanan
Kesehatan Dasar.
Rousseeuw, P. J. (1987). Silhouettes: a graphical aid to the
interpretation and validation of cluster
analysis. Journal of Computational and Applied Mathematics, 20,
53–65.
Sari, D. P., & Fauzi, A. (2022). Penerapan Algoritma K-Means
Clustering untuk Pemetaan Status Gizi
Balita di Puskesmas X. Jurnal Ilmiah Kesehatan, 10(2), 123–134.
Soetjiningsih. (2013). Tumbuh Kembang Anak (Edisi Kedua). EGC.
World Health Organization. (2006). WHO Child Growth Standards:
Length/Height-for-Age,
Weight-for-Age, Weight-for-Length, Weight-for-Height and Body Mass
Index-for-Age: Methods
and Development. Geneva: WHO Press.