data.frame(
` ` = c(
"**Keracunan Program MBG 2025**",
"Kelompok 8 - Statistika Kelas D",
"Muhammad Raffi | Nur Raflin | Lanang | Ripky | Fathir Aliffa",
"Analisis sebaran dan statistik korban keracunan MBG di Indonesia"
),
check.names = FALSE
) %>%
kbl(col.names = NULL, align = "c") %>%
kable_styling(full_width = TRUE, font_size = 15) %>%
row_spec(1, background = "#c1121f", color = "white", bold = TRUE, font_size = 20) %>%
row_spec(2, background = "#e63946", color = "white", bold = TRUE) %>%
row_spec(3, background = "#e63946", color = "white") %>%
row_spec(4, background = "#f8d7da", color = "#c1121f")| Keracunan Program MBG 2025 |
| Kelompok 8 - Statistika Kelas D |
| Muhammad Raffi | Nur Raflin | Lanang | Ripky | Fathir Aliffa |
| Analisis sebaran dan statistik korban keracunan MBG di Indonesia |
Program Makan Bergizi Gratis (MBG) merupakan salah satu program unggulan pemerintah Indonesia yang bertujuan meningkatkan gizi anak sekolah. Namun sepanjang tahun 2025, program ini menuai perhatian publik akibat maraknya kasus keracunan makanan yang berdampak pada ribuan anak di berbagai provinsi.
Fakta Kritis: Komisi Perlindungan Anak Indonesia (KPAI) mencatat 12.658 anak mengalami keracunan MBG di 38 provinsi sepanjang 2025. Laporan terpisah per Oktober 2025 mencatat korban bisa melampaui 16.000 siswa secara nasional.
Analisis ini menggunakan data dari dua sumber utama:
stat_utama <- data.frame(
Indikator = c("Total Anak Korban Keracunan (Sepanjang 2025)",
"Jumlah Provinsi Terdampak",
"Estimasi Korban per Akhir Oktober 2025"),
Nilai = c("12.658 anak", "38 provinsi", "> 16.000 siswa")
)
stat_utama %>%
kbl(col.names = c("Indikator", "Nilai"),
align = c("l", "c"),
caption = "Ringkasan Statistik Utama - Sumber: KPAI 2025") %>%
kable_styling(bootstrap_options = c("striped", "hover", "bordered"),
full_width = TRUE, font_size = 15) %>%
row_spec(0, background = "#c1121f", color = "white", bold = TRUE) %>%
row_spec(1, background = "#fff5f5") %>%
row_spec(2, background = "#fff8f0") %>%
row_spec(3, background = "#f0f5ff") %>%
column_spec(2, bold = TRUE, color = "#c1121f")| Indikator | Nilai |
|---|---|
| Total Anak Korban Keracunan (Sepanjang 2025) | 12.658 anak |
| Jumlah Provinsi Terdampak | 38 provinsi |
| Estimasi Korban per Akhir Oktober 2025 | > 16.000 siswa |
kpai_df <- data.frame(
Peringkat = 1:4,
Provinsi = c("Jawa Barat", "Jawa Tengah", "DI Yogyakarta", "Provinsi Lainnya (35 prov.)"),
Jumlah_Korban = c(4877, 1961, 1517, 4303),
stringsAsFactors = FALSE
)
kpai_df$Persentase <- paste0(round(kpai_df$Jumlah_Korban / 12658 * 100, 1), "%")
kpai_df %>%
kbl(col.names = c("No.", "Provinsi", "Jumlah Korban", "% dari Total"),
align = c("c", "l", "r", "r"),
caption = "Tabel 1. Rekapitulasi KPAI - Korban Keracunan MBG 2025") %>%
kable_styling(bootstrap_options = c("striped", "hover", "bordered"),
full_width = FALSE, font_size = 14) %>%
row_spec(0, background = "#e63946", color = "white", bold = TRUE) %>%
row_spec(1:3, background = "#fff5f5") %>%
row_spec(4, background = "#f7fafc") %>%
column_spec(3, bold = TRUE, color = "#c1121f")| No. | Provinsi | Jumlah Korban | % dari Total |
|---|---|---|---|
| 1 | Jawa Barat | 4877 | 38.5% |
| 2 | Jawa Tengah | 1961 | 15.5% |
| 3 | DI Yogyakarta | 1517 | 12% |
| 4 | Provinsi Lainnya (35 prov.) | 4303 | 34% |
df_mbg <- read_excel("data korban MBG.xlsx", col_names = TRUE) %>%
select(1:4) %>%
slice(-n()) %>%
rename(No = 1, Daerah = 2, Korban = 3, Persen = 4) %>%
mutate(
Korban = as.numeric(Korban),
Persen = round(Korban / sum(Korban, na.rm = TRUE) * 100, 2),
Daerah = trimws(Daerah)
) %>%
arrange(desc(Korban))
cat("Data berhasil dimuat:", nrow(df_mbg), "provinsi | Total korban:",
format(sum(df_mbg$Korban, na.rm = TRUE), big.mark = "."))## Data berhasil dimuat: 26 provinsi | Total korban: 16.109
df_mbg %>%
mutate(Persen = paste0(Persen, "%")) %>%
select(No, Daerah, Korban, Persen) %>%
kbl(col.names = c("No.", "Provinsi/Daerah", "Jumlah Korban", "Persentase"),
align = c("c", "l", "r", "r"),
caption = "Tabel 2. Data Lengkap Korban Keracunan MBG per Provinsi (Databoks, Oktober 2025)",
format.args = list(big.mark = ".")) %>%
kable_styling(bootstrap_options = c("striped", "hover", "condensed", "responsive"),
full_width = TRUE, font_size = 13) %>%
row_spec(0, background = "#e63946", color = "white", bold = TRUE) %>%
row_spec(1:3, background = "#fff5f5", bold = TRUE)| No. | Provinsi/Daerah | Jumlah Korban | Persentase |
|---|---|---|---|
| 1 | Jawa Barat | 4.955 | 30.76% |
| 2 | Jawa Tengah | 2.736 | 16.98% |
| 3 | DI Yogyakarta | 2.707 | 16.8% |
| 4 | Jawa Timur | 1.312 | 8.14% |
| 5 | Nusa Tenggara Timur | 800 | 4.97% |
| 6 | Sulawesi Tengah | 603 | 3.74% |
| 7 | Bengkulu | 539 | 3.35% |
| 8 | Lampung | 486 | 3.02% |
| 9 | Nusa Tenggara Barat | 343 | 2.13% |
| 10 | Sulawesi Selatan | 336 | 2.09% |
| 11 | Maluku | 308 | 1.91% |
| 12 | Kalimantan Selatan | 170 | 1.06% |
| 13 | Sumatera Barat | 151 | 0.94% |
| 14 | Jakarta | 132 | 0.82% |
| 15 | Kalimantan Utara | 113 | 0.7% |
| 16 | Sumatera Utara | 99 | 0.61% |
| 17 | Sulawesi Tenggara | 73 | 0.45% |
| 18 | Banten | 55 | 0.34% |
| 19 | Riau | 46 | 0.29% |
| 20 | Kalimantan Barat | 40 | 0.25% |
| 21 | Sulawesi Barat | 35 | 0.22% |
| 22 | Kalimantan Tengah | 27 | 0.17% |
| 23 | Kepulauan Riau | 14 | 0.09% |
| 24 | Papua Barat | 13 | 0.08% |
| 25 | Gorontalo | 11 | 0.07% |
| 26 | Kalimantan Timur | 5 | 0.03% |
pal_red <- colorRampPalette(c("#c1121f", "#e63946", "#f4a261", "#adb5bd"))(nrow(df_mbg))
ggplot(df_mbg, aes(x = reorder(Daerah, Korban), y = Korban,
fill = reorder(Daerah, Korban))) +
geom_col(width = 0.72, show.legend = FALSE, color = NA) +
geom_text(aes(label = format(Korban, big.mark = ".")),
hjust = -0.15, size = 3.1, color = "#2d3748", fontface = "bold") +
coord_flip() +
scale_fill_manual(values = pal_red) +
scale_y_continuous(labels = label_number(big.mark = "."),
expand = expansion(mult = c(0, .18))) +
labs(
title = "Jumlah Korban Keracunan MBG per Provinsi",
subtitle = "Data per Oktober 2025 - Sumber: Databoks.co.id",
x = NULL,
y = "Jumlah Korban"
) +
theme_minimal(base_size = 12) +
theme(
plot.title = element_text(face = "bold", size = 14, color = "#c1121f"),
plot.subtitle = element_text(size = 10, color = "#718096"),
panel.grid.major.y = element_blank(),
panel.grid.minor = element_blank(),
axis.text.y = element_text(color = "#2d3748"),
plot.background = element_rect(fill = "#fff", color = NA)
)Interpretasi: Jawa Barat mendominasi dengan 4.955 korban (30,7%), diikuti Jawa Tengah 2.736 (16,9%) dan DI Yogyakarta 2.707 (16,7%). Ketiga provinsi di Jawa ini menyumbang lebih dari 64% total korban nasional, mengindikasikan konsentrasi kasus yang signifikan di Pulau Jawa.
top5 <- df_mbg %>% slice(1:5)
others <- data.frame(
Daerah = "Provinsi Lainnya (21 prov.)",
Korban = sum(df_mbg$Korban[6:nrow(df_mbg)], na.rm = TRUE),
Persen = NA
)
pie_df <- bind_rows(top5 %>% select(Daerah, Korban), others) %>%
mutate(
Persen = round(Korban / sum(Korban) * 100, 1),
label = paste0(Daerah, "\n", format(Korban, big.mark = "."), " (", Persen, "%)")
)
pie_colors <- c("#e63946", "#f4a261", "#457b9d", "#2a9d8f", "#8338ec", "#adb5bd")
ggplot(pie_df, aes(x = "", y = Korban, fill = Daerah)) +
geom_col(width = 1, color = "white", linewidth = 0.8) +
coord_polar(theta = "y") +
geom_text(aes(label = paste0(Persen, "%")),
position = position_stack(vjust = 0.5),
size = 3.8, color = "white", fontface = "bold") +
scale_fill_manual(values = pie_colors) +
labs(
title = "Proporsi Korban: Top 5 Provinsi vs Lainnya",
subtitle = "Total keseluruhan: 16.137 korban (per Oktober 2025)",
fill = "Wilayah"
) +
theme_void() +
theme(
plot.title = element_text(face = "bold", hjust = 0.5, size = 14, color = "#c1121f"),
plot.subtitle = element_text(hjust = 0.5, size = 10, color = "#718096"),
legend.text = element_text(size = 9),
plot.background = element_rect(fill = "#fff", color = NA)
)Interpretasi: Lima provinsi teratas menyumbang hampir 77% total korban nasional. Pola ini menunjukkan bahwa kasus keracunan MBG tidak tersebar merata, terdapat ketimpangan yang signifikan antara Jawa dan luar Jawa.
compare_df <- data.frame(
Provinsi = rep(c("Jawa Barat", "Jawa Tengah", "DI Yogyakarta"), 2),
Sumber = rep(c("KPAI (Akhir 2025)", "Databoks (Okt 2025)"), each = 3),
Korban = c(4877, 1961, 1517, 4955, 2736, 2707)
)
ggplot(compare_df, aes(x = Provinsi, y = Korban, fill = Sumber)) +
geom_col(position = "dodge", width = 0.6, color = NA) +
geom_text(aes(label = format(Korban, big.mark = ".")),
position = position_dodge(width = 0.6),
vjust = -0.5, size = 3.4, fontface = "bold") +
scale_fill_manual(values = c("#e63946", "#457b9d")) +
scale_y_continuous(labels = label_number(big.mark = "."),
expand = expansion(mult = c(0, .15))) +
labs(
title = "Perbandingan Data: KPAI vs Databoks",
subtitle = "Tiga provinsi dengan korban keracunan MBG tertinggi",
x = "Provinsi",
y = "Jumlah Korban",
fill = "Sumber Data"
) +
theme_minimal(base_size = 13) +
theme(
plot.title = element_text(face = "bold", color = "#c1121f", hjust = 0.5),
plot.subtitle = element_text(color = "#718096", hjust = 0.5),
legend.position = "top",
panel.grid.major.x = element_blank(),
plot.background = element_rect(fill = "#fff", color = NA)
)Interpretasi: Terdapat selisih angka antara data KPAI (akhir 2025) dan Databoks (Oktober 2025). Data Databoks umumnya lebih tinggi karena mencakup periode yang berbeda. Selisih terbesar terlihat di DI Yogyakarta (+1.190 korban) dan Jawa Tengah (+775 korban), mengindikasikan lonjakan kasus di akhir tahun.
stats_df <- df_mbg %>%
summarise(
`Jumlah Provinsi` = n(),
`Total Korban` = sum(Korban),
`Rata-rata (Mean)` = round(mean(Korban), 1),
`Median` = median(Korban),
`Nilai Terbesar` = max(Korban),
`Nilai Terkecil` = min(Korban),
`Standar Deviasi` = round(sd(Korban), 1),
`Koefisien Variasi` = paste0(round(sd(Korban) / mean(Korban) * 100, 1), "%")
)
stats_df %>%
mutate(across(everything(), as.character)) %>%
pivot_longer(everything(), names_to = "Statistik", values_to = "Nilai") %>%
kbl(align = c("l", "r"),
caption = "Tabel 3. Statistik Deskriptif Korban MBG per Provinsi") %>%
kable_styling(bootstrap_options = c("striped", "hover", "bordered"),
full_width = FALSE, font_size = 14, position = "left") %>%
row_spec(0, background = "#e63946", color = "white", bold = TRUE) %>%
row_spec(c(1, 3, 5, 7), background = "#f7fafc")| Statistik | Nilai |
|---|---|
| Jumlah Provinsi | 26 |
| Total Korban | 16109 |
| Rata-rata (Mean) | 619.6 |
| Median | 141.5 |
| Nilai Terbesar | 4955 |
| Nilai Terkecil | 5 |
| Standar Deviasi | 1150.1 |
| Koefisien Variasi | 185.6% |
Interpretasi: Koefisien variasi yang tinggi (lebih dari 200%) menunjukkan ketimpangan distribusi yang sangat besar antar provinsi. Beberapa provinsi seperti Jawa Barat memiliki ribuan korban, sementara Kalimantan Timur hanya 5 korban. Kesenjangan ini mencerminkan perbedaan cakupan implementasi program MBG.
mean_korban <- mean(df_mbg$Korban)
median_korban <- median(df_mbg$Korban)
ggplot(df_mbg, aes(x = Korban)) +
geom_histogram(bins = 8, fill = "#e63946", color = "white", alpha = 0.85) +
geom_vline(xintercept = mean_korban, color = "#457b9d",
linetype = "dashed", linewidth = 1.2) +
geom_vline(xintercept = median_korban, color = "#f4a261",
linetype = "dotdash", linewidth = 1.2) +
annotate("text", x = mean_korban + 350, y = Inf,
label = paste("Mean =", round(mean_korban)),
vjust = 2, color = "#457b9d", size = 3.6, fontface = "bold") +
annotate("text", x = median_korban + 350, y = Inf,
label = paste("Median =", round(median_korban)),
vjust = 4, color = "#d97706", size = 3.6, fontface = "bold") +
scale_x_continuous(labels = label_number(big.mark = ".")) +
labs(
title = "Distribusi Jumlah Korban per Provinsi",
subtitle = "Distribusi sangat right-skewed akibat dominasi Jawa Barat",
x = "Jumlah Korban",
y = "Frekuensi Provinsi"
) +
theme_minimal(base_size = 13) +
theme(
plot.title = element_text(face = "bold", color = "#c1121f"),
plot.subtitle = element_text(color = "#718096"),
panel.grid.minor = element_blank(),
plot.background = element_rect(fill = "#fff", color = NA)
)Interpretasi: Histogram menunjukkan distribusi yang sangat miring ke kanan (right-skewed). Mayoritas provinsi (lebih dari 18 dari 26) memiliki kurang dari 500 korban, namun beberapa provinsi di Jawa menarik distribusi secara ekstrem ke atas. Mean (621) jauh lebih besar dari Median (135), menandakan adanya outlier yang signifikan.
df_mbg_region <- df_mbg %>%
mutate(Wilayah = case_when(
Daerah %in% c("Jawa Barat", "Jawa Tengah", "DI Yogyakarta",
"Jawa Timur", "Jakarta", "Banten") ~ "Jawa",
Daerah %in% c("Sumatera Barat", "Sumatera Utara", "Lampung",
"Bengkulu", "Riau", "Kepulauan Riau") ~ "Sumatera",
grepl("Kalimantan", Daerah) ~ "Kalimantan",
grepl("Sulawesi|Gorontalo", Daerah) ~ "Sulawesi",
TRUE ~ "Indonesia Timur"
))
ggplot(df_mbg_region, aes(x = Wilayah, y = Korban, fill = Wilayah)) +
geom_boxplot(outlier.colour = "#e63946", outlier.shape = 16,
outlier.size = 2.5, alpha = 0.75, show.legend = FALSE) +
geom_jitter(width = 0.15, alpha = 0.5, color = "#2d3748", size = 1.8) +
scale_fill_manual(values = c("#e63946", "#f4a261", "#457b9d", "#2a9d8f", "#8338ec")) +
scale_y_continuous(labels = label_number(big.mark = ".")) +
labs(
title = "Boxplot Korban MBG per Wilayah",
subtitle = "Titik merah = outlier | Titik abu = data individual",
x = "Wilayah",
y = "Jumlah Korban"
) +
theme_minimal(base_size = 13) +
theme(
plot.title = element_text(face = "bold", color = "#c1121f"),
plot.subtitle = element_text(color = "#718096"),
panel.grid.major.x = element_blank(),
plot.background = element_rect(fill = "#fff", color = NA)
)Interpretasi: Boxplot memperlihatkan bahwa wilayah Jawa memiliki rentang nilai dan outlier tertinggi. Jawa Barat (4.955) dan Jawa Tengah (2.736) merupakan outlier yang jauh melampaui rata-rata wilayah Jawa lainnya. Wilayah Kalimantan dan Sulawesi memiliki distribusi yang relatif homogen dengan nilai rendah.
Berdasarkan analisis data korban keracunan Program Makan Bergizi Gratis (MBG) tahun 2025, dapat ditarik beberapa kesimpulan penting.
1. Skala Masalah yang Serius. Tercatat minimal 12.658 hingga lebih dari 16.000 anak terdampak keracunan MBG di seluruh Indonesia, menjadikannya isu kesehatan publik yang mendesak untuk ditangani.
2. Ketimpangan Geografis yang Ekstrem. Pulau Jawa, khususnya Jawa Barat, Jawa Tengah, dan DI Yogyakarta, mendominasi dengan lebih dari 64% korban nasional. Hal ini berbanding terbalik dengan provinsi-provinsi di Kalimantan dan Papua yang hanya mencatat belasan korban.
3. Tren Kenaikan Kasus. Perbandingan data KPAI (akhir 2025) dan Databoks (Oktober 2025) mengindikasikan adanya lonjakan kasus yang signifikan di triwulan keempat 2025, terutama di DI Yogyakarta (+1.190 korban) dan Jawa Tengah (+775 korban).
4. Distribusi Sangat Right-Skewed. Koefisien variasi lebih dari 200% dan nilai mean yang jauh dari median mengkonfirmasi bahwa distribusi korban sangat tidak merata, mencerminkan perbedaan skala implementasi dan pengawasan program MBG antar daerah.
Rekomendasi: Perlu dilakukan evaluasi menyeluruh terhadap rantai pasok dan standar keamanan pangan dalam program MBG, khususnya di provinsi-provinsi Jawa yang menjadi episentrum kasus. Transparansi data yang konsisten antar sumber juga perlu ditingkatkan.
Kelompok 8 - Statistika Kelas D - 2026 | Data: KPAI & Databoks.co.id