library(ggplot2)
library(readxl)
library(ggthemes)
library(gridExtra)

1. Sumber Data

Dataset yang digunakan dalam analisis ini adalah data Jumlah Pangan yang Disalurkan ke Penerima Manfaat Update Bulan Februari 2026. Data tersebut diambil dalam rentang periode Januari 2024 sampai Januari 2026. Data bersumber dari Portal Data Pangan, source: https://data.badanpangan.go.id/datasetpublications/gc3/jumlah-pangan-yang-disalurkan-ke-penerima-manfaat-februari-2026

2. Variabel Penelitian

Variabel yang digunakan dalam penelitian ini terdiri dari dua jenis yaitu variabel numerik dan variabel kategorik.

  1. Variabel Numerik
    • Jumlah donasi (kg)
    • Penerima manfaat (jiwa)
  2. Variabel Kategorik
    • Tahun
    • Bulan

3. Input Data

Berikut adalah dataset yang digunakan:

setwd("C:/Users/Lenovo/OneDrive/Documents/Tugas2 ProbStat/Probabilitas Statistika 1")
data <- read_excel("jumlah_pangan_disalurkan.xlsx")
head(data)
## # A tibble: 6 × 4
##   Tahun Bulan    `Jumlah Donasi (kg)` `Penerima Manfaat (Jiwa)`
##   <dbl> <chr>                   <dbl>                     <dbl>
## 1  2024 Januari                16713.                     33364
## 2  2024 Februari               27957.                     55034
## 3  2024 Maret                 224859.                    455328
## 4  2024 April                   1285.                      2193
## 5  2024 Mei                    38650.                     77292
## 6  2024 Juni                   12772.                     15875

4. Perhitungan Statistik Variabel Numerik Gabungan

  1. Jumlah Donasi (kg)
    • Jumlah
sum(data$`Jumlah Donasi (kg)`)
## [1] 1882379
mean(data$`Jumlah Donasi (kg)`)
## [1] 75295.14
median(data$`Jumlah Donasi (kg)`)
## [1] 62090.8
modus <- function(x) {
  uniqx <- unique(x)
  uniqx[which.max(tabulate(match(x, uniqx)))]
}

modus(data$`Jumlah Donasi (kg)`)
## [1] 16712.64
summary(data$`Jumlah Donasi (kg)`)
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##    1285   22780   62091   75295   96575  257928
range(data$`Jumlah Donasi (kg)`)
## [1]   1285.4 257927.5
var(data$`Jumlah Donasi (kg)`)
## [1] 4721307370
sd(data$`Jumlah Donasi (kg)`)
## [1] 68711.77
  1. Penerima Manfaat (Jiwa)
    • Jumlah
sum(data$`Penerima Manfaat (Jiwa)`)
## [1] 2971370
mean(data$`Penerima Manfaat (Jiwa)`)
## [1] 118854.8
median(data$`Penerima Manfaat (Jiwa)`)
## [1] 124472
modus <- function(x) {
  uniqx <- unique(x)
  uniqx[which.max(tabulate(match(x, uniqx)))]
}

modus(data$`Penerima Manfaat (Jiwa)`)
## [1] 33364
summary(data$`Penerima Manfaat (Jiwa)`)
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##    2193   33364  124472  118855  166632  455328
range(data$`Penerima Manfaat (Jiwa)`)
## [1]   2193 455328
var(data$`Penerima Manfaat (Jiwa)`)
## [1] 11255839768
sd(data$`Penerima Manfaat (Jiwa)`)
## [1] 106093.5

5. Grafik Tren Jumlah Donasi Pangan dan Penerima Manfaaat per Tahun

  1. Grafik Tren Jumlah Donasi Pangan
library(ggplot2)

options(scipen = 999)

data$Bulan <- factor(data$Bulan, levels = c("Januari","Februari","Maret","April","Mei","Juni","Juli","Agustus","September","Oktober","November","Desember"))

ggplot(data, aes(x = Bulan, y = `Jumlah Donasi (kg)`, color = factor(Tahun), group = Tahun)) +
  
  geom_line(size = 1.2) +
  geom_point(size = 2) +
  theme_minimal() +
   theme(axis.text.x = element_text(angle = 50, hjust = 1)) +
  labs(title = "Tren Jumlah Donasi Pangan",
       x = "Bulan",
       y = "Jumlah Donasi (kg)",
       color = "Tahun")
## Warning: Using `size` aesthetic for lines was deprecated in ggplot2 3.4.0.
## ℹ Please use `linewidth` instead.
## This warning is displayed once per session.
## Call `lifecycle::last_lifecycle_warnings()` to see where this warning was
## generated.

Grafik tren Jumlah Donasi Pangan di atas mengilustrasikan fluktuasi jumlah donasi pangan di tiap bulan pada periode Januari 2024 sampai Januari 2026. Pada tahun 2024, jumlah donasi tertinggi terjadi di bulan Maret di kisaran 230.000 kg. Sementara, jumlah donasi terendah terjadi di bulan April di kisaran 1.000 kg, hampir 0 kg.

Selanjutnya pada tahun 2025, donasi pangan cenderung lebih tinggi dibandingkan tahun 2024. Jumlah donasi tertinggi terjadi di bulan September di kisaran 250.000 kg. Sementara jumlah donasi terendah terjadi di bulan Desember di kisaran 60.000 kg dan di akhir tahun cenderung mengalami penurunan.

Di tahun 2026 hanya tersedia satu data yaitu bulan Januari dengan jumlah donasi di kisaran 40.000 kg.

Pola yang terlihat pada grafik menunjukkan bahwa terdapat kemungkinan perbedaan rata-rata jumlah donasi pangan antara tahun 2024 dan tahun 2025. Selain itu, adanya lonjakan pada bulan-bulan tertentu menunjukkan kemungkinan adanya faktor musiman atau kegiatan tertentu yang memengaruhi peningkatan drastis pada jumlah donasi.

  1. Grafik Tren Penerima Manfaat
library(ggplot2)

options(scipen = 999)

data$Bulan <- factor(data$Bulan, levels = c("Januari","Februari","Maret","April","Mei","Juni","Juli","Agustus","September","Oktober","November","Desember"))

ggplot(data, aes(x = Bulan, y = `Penerima Manfaat (Jiwa)`, color = factor(Tahun), group = Tahun)) +
  
  geom_line(size = 1.2) +
  geom_point(size = 2) +
  theme_minimal() +
   theme(axis.text.x = element_text(angle = 50, hjust = 1)) +
  labs(title = "Tren Penerima Manfaat",
       x = "Bulan",
       y = "Penerima Manfaat (Jiwa)",
       color = "Tahun")

Grafik tren Jumlah Penerima Manfaat di atas mengilustrasikan fluktuasi jumlah penerima manfaat di tiap bulan pada periode Januari 2024 sampai Januari 2026. Pada tahun 2024, jumlah penerima tertinggi terjadi di bulan Maret dikisaran 450000 jiwa. Sementara, jumlah penerima terendah terjadi di bulan April dikisaran 1000 jiwa, hampir 0 jiwa.

Selanjutnya pada tahun 2025, penerima manfaat cenderung naik dibandingkan tahun 2024. Jumlah penerima tertinggi terjadi di bulan September dikisaran 330000 jiwa. Sementara jumlah penerima terendah terjadi di bulan Desember dikisaran 60000 kg dan di akhir tahun cenderung mengalami penurunan.

Di tahun 2026 hanya tersedia satu data yaitu bulan Januari dengan jumlah penerima dikisaran 40000 jiwa.

Pola tren penerima manfaat di atas menunjukkan adanya kemungkinan perbedaan rata-rata jumlah penerima pada tiap tahunnya. Selain itu, lonjakan pesat yang terjadi pada bulan-bulan tertentu menunjukkan kemungkinan adanya faktor jumlah donasi pangan atau kegiatan yang memengaruhi jumlah penerima di bulan tersebut.

6. Pie Chart Donasi Pangan dan Penerima Manfaat per Tahun

  1. Pie Chart Donasi Pangan
library(ggplot2)
library(dplyr)
## 
## Attaching package: 'dplyr'
## The following object is masked from 'package:gridExtra':
## 
##     combine
## The following objects are masked from 'package:stats':
## 
##     filter, lag
## The following objects are masked from 'package:base':
## 
##     intersect, setdiff, setequal, union
donasi_tahunan <- data %>%
  group_by(Tahun) %>%
  summarise(total_donasi = sum(`Jumlah Donasi (kg)`))

donasi_tahunan <- donasi_tahunan %>%
  mutate(persen = total_donasi/sum(total_donasi)*100)
  
ggplot(donasi_tahunan, aes(x = "", y = total_donasi, fill = factor(Tahun))) +
  geom_bar(stat = "identity", width = 1, color = "white") +
  coord_polar("y") +
  geom_text(aes(label = paste0(round(persen,1), "%")),
            position = position_stack(vjust = 0.5)) +
  theme_void() +
  labs(
    title = "Pie Chart Donasi Pangan per Tahun",
    fill = "Tahun"
  )

Pie chart di atas mengilustrasikan persentase jumlah donasi pangan gabungan berdasarkan tahunnya dalam periode Januari 2024 sampai Januari 2026. Jumlah donasi pangan terbesar terjadi pada tahun 2025 dengan persentase 74.1%. Sementara itu, tahun 2024 menyumbang 25,1% dari total donasi. Adapun tahun 2026 hanya sebesar 0,8%, kemungkinan karena data yang tersedia baru mencakup sebagian periode (hingga Januari).

Secara keseluruhan aktivitas donasi pangan paling dominan terjadi pada tahun 2025, sedangkan tahun 2024 masih lebih rendah dan data tahun 2026 belum cukup merepresentasikan kondisi sebenarnya karena periode pengamatannya masih terbatas yaitu hanya pada bulan Januari saja.

  1. Pie Chart Penerima Manfaat per Tahun
library(ggplot2)
library(dplyr)

penerima_tahunan <- data %>%
  group_by(Tahun) %>%
  summarise(total_penerima = sum(`Penerima Manfaat (Jiwa)`))

penerima_tahunan <- penerima_tahunan %>%
  mutate(persen = total_penerima/sum(total_penerima)*100)
  
ggplot(penerima_tahunan, aes(x = "", y = total_penerima, fill = factor(Tahun))) +
  geom_bar(stat = "identity", width = 1, color = "white") +
  coord_polar("y") +
  geom_text(aes(label = paste0(round(persen,1), "%")),
            position = position_stack(vjust = 0.5)) +
  theme_void() +
  labs(
    title = "Pie Chart Penerima Manfaat per Tahun",
    fill = "Tahun"
  )

Pie chart di atas mengilustrasikan persentase jumlah penerima manfaat gabungan berdasarkan tahunnya dalam periode Januari 2024 sampai Januari 2026. Jumlah penerima manfaat terbesar terjadi pada tahun 2025 dengan persentase 70.4%. Sementara itu, tahun 2024 menyumbang 28,2% dari total penerima manfaat. Adapun tahun 2026 hanya sebesar 1,4%, kemungkinan karena data yang tersedia baru mencakup sebagian periode (hingga Januari).

Secara keseluruhan, penerima manfaat paling dominan terjadi pada tahun 2025, sedangkan tahun 2024 masih lebih rendah dan data tahun 2026 belum cukup merepresentasikan kondisi sebenarnya karena periode pengamatannya masih terbatas yaitu hanya pada bulan Januari saja.

7. Bar Chart Jumlah Donasi Pangan dan Penerima Manfaat per Tahun

  1. Bar Chart Jumlah Donasi Pangan per Tahun
library(ggplot2)
library(dplyr)

options(scipen = 999)

donasi_tahunan <- data %>%
  group_by(Tahun) %>%
  summarise(total_donasi = sum(`Jumlah Donasi (kg)`))

ggplot(donasi_tahunan, aes(x = factor(Tahun), y = total_donasi, fill = factor(Tahun))) +
  geom_bar(stat = "identity", width = 0.6) +
  geom_text(aes(label = total_donasi), vjust = -0.5) +
  theme_minimal() +
  labs(
    title = "Jumlah Donasi Pangan per Tahun",
    x = "Tahun",
    y = "Jumlah Donasi (kg)",
    fill = "Tahun"
  )

Bar chart di atas menunjukkan jumlah donasi pangan per tahun pada periode Januari 2024 sampai Januari 2026. Tahun 2024 tercatat 472.768,34 kg, kemudian meningkat signifikan pada 2025 menjadi sekitar 1.395.249,09 kg (tertinggi). Sementara itu, tahun 2026 hanya sekitar 14.361,11 kg, yang merupakan jumlah terendah.

Data menunjukkan kemungkinan meningkatnya partisipasi masyarakat dalam donasi pangan pada tahun 2025. Rendahnya jumlah pada tahun 2026 diduga karena data yang tersedia masih mencakup sebagian periode waktu saja, sehingga total donasi yang tercatat masih kecil.

  1. Bar Chart Jumlah Penerima Manfaat per Tahun
library(ggplot2)
library(dplyr)

options(scipen = 999)

penerima_tahunan <- data %>%
  group_by(Tahun) %>%
  summarise(total_penerima = sum(`Penerima Manfaat (Jiwa)`))

ggplot(penerima_tahunan, aes(x = factor(Tahun), y = total_penerima, fill = factor(Tahun))) +
  geom_bar(stat = "identity", width = 0.6) +
  geom_text(aes(label = total_penerima), vjust = -0.5) +
  theme_minimal() +
  labs(
    title = "Jumlah Penerima Manfaat per Tahun",
    x = "Tahun",
    y = "Penerima Manfaat (Jiwa)",
    fill = "Tahun"
  )

Bar chart di atas menunjukkan jumlah penerima manfaat pada periode Januari 2024 sampai Januari 2026. Tahun 2024 tercatat 838.761 jiwa penerima manfaat yang menerima donasi pangan, kemudian meningkat signifikan pada 2025 menjadi 2.090.485 jiwa (tertinggi). Sementara itu, tahun 2026 hanya 42.124 jiwa, yang merupakan jumlah terendah.

Data menunjukkan kemungkinan meningkatnya jumlah penerima manfaat pada tahun 2025. Rendahnya jumlah pada tahun 2026 diduga karena data yang tersedia masih mencakup sebagian periode waktu saja, sehingga jumlah penerima manfaat yang tercatat masih kecil.

8. Histogram Distribusi Jumlah Donasi Pangan dan Penerima Manfaat per Tahun

  1. Histogram Distribusi Jumlah Donasi Pangan per Tahun
library(ggplot2)

data$`Jumlah Donasi (kg)` <- as.numeric(data$`Jumlah Donasi (kg)`)

hist(data$`Jumlah Donasi (kg)`,
     main = "Distribusi Jumlah Donasi Pangan per Tahun",
     xlab = "Jumlah Donasi (kg)",
     col = "steelblue",
     border = "white")

Histogram distribusi jumlah donasi pangan menunjukkan sebaran jumlah donasi yang terjadi selama beberapa bulan dalam periode pengamatan. Setiap batang pada histogram merepresentasikan interval jumlah donasi tertentu, sedangkan frekuensi menunjukkan banyaknya bulan di mana jumlah donasi berada dalam interval tersebut.

Jumlah donasi pangan pada interval 0 sampai 50.000 berjumlah 12 bulan, pada interval 50.000 sampai 100.000 berjumlah 7 bulan, pada interval 100.000 sampai 150.000 dan 150.000 sampai 200.000 berjumlah masing-masing 2 bulan, serta pada interval 200.000 sampai 250.000 dan 250.000 sampai 300.000 berjumlah masing-masing 1 bulan.

Berdasarkan pola distribusi pada histogram, dapat diduga bahwa jumlah donasi cenderung berada pada kisaran tertentu dalam sebagian besar bulan. Selain itu, keberadaan beberapa interval dengan frekuensi rendah pada nilai yang sangat tinggi atau frekuensi tinggi pada nilai sangat rendah mengindikasikan bahwa kondisi tersebut hanya terjadi pada bulan-bulan tertentu, kemungkinan dipengaruhi oleh faktor musiman, kegiatan sosial tertentu, atau peningkatan program donasi pada periode tertentu.

  1. Histogram Distribusi Jumlah Penerima Manfaat per Tahun
library(ggplot2)

data$`Penerima Manfaat (Jiwa)` <- as.numeric(data$`Penerima Manfaat (Jiwa)`)

hist(data$`Jumlah Donasi (kg)`,
     main = "Distribusi Jumlah Penerima Manfaat per Tahun",
     xlab = "Penerima Manfaat (Jiwa)",
     col = "steelblue",
     border = "white")

Histogram distribusi jumlah penerima manfaat menunjukkan sebaran jumlah penerima manfaat selama beberapa bulan dalam periode pengamatan. Setiap batang pada histogram merepresentasikan interval jumlah penerima manfaat, sedangkan frekuensi menunjukkan banyaknya bulan di mana jumlah penerima manfaat berada dalam interval tersebut.

Jumlah penerima manfaat pada interval 0 sampai 50.000 terjadi sebanyak 12 bulan, pada interval 50.000 sampai 100.000 terjadi sebanyak 7 bulan, pada interval 100.000 sampai 150.000 dan 150.000 sampai 200.000 terjadi masing-masing sebanyak 2 bulan, serta pada interval 200.000 sampai 250.000 dan 250.000 sampai 300.000 terjadi masing-masing sebanyak 1 bulan.

Berdasarkan pola distribusi pada histogram, dapat diduga bahwa jumlah penerima manfaat cenderung berada pada kisaran tertentu dalam sebagian besar bulan. Selain itu, keberadaan beberapa interval dengan frekuensi rendah pada nilai yang sangat tinggi atau frekuensi tinggi pada nilai sangat rendah mengindikasikan bahwa kondisi tersebut hanya terjadi pada bulan-bulan tertentu, kemungkinan dipengaruhi oleh faktor peningkatan jumlah donasi pangan pada periode tertentu.

9. Density Plot Jumlah Donasi Pangan dan Penerima Manfaat per Tahun

  1. Density Plot Jumlah Donasi Pangan per Tahun
library(ggplot2)

ggplot(data, aes(x = `Jumlah Donasi (kg)`, fill = factor(Tahun))) +
  geom_density(alpha = 0.4) +
  theme_minimal() +
  labs(
    title = "Distribusi Density Jumlah Donasi Pangan per Tahun",
    x = "Jumlah Donasi (kg)",
    y = "Density",
    fill = "Tahun"
  )
## Warning: Groups with fewer than two data points have been dropped.
## Warning: Removed 1 row containing missing values or values outside the scale range
## (`geom_density()`).

Pada tahun 2024, jumlah donasi paling sering berada di sekitar 25.000 kg dengan variasi yang rendah, sehingga donasi cenderung seragam. Pada tahun 2025, pusat donasi bergeser ke kisaran 80.000 sampai 100.000 kg dengan penyebaran yang jauh lebih besar. Selain itu, pada tahun 2024 terdapat anomali donasi besar sekitar 225.000 kg.

Data menunjukkan adanya peningkatan kapasitas pengumpulan donasi dari 2024 ke 2025. Garis tahun 2026 yang masih sangat rendah kemungkinan karena data belum lengkap atau menunjukkan pola donasi yang belum stabil. Perubahan bentuk distribusi juga mengindikasikan adanya keterlibatan donatur skala lebih besar pada tahun 2025.

  1. Density Plot Jumlah Penerima Manfaat per Tahun
library(ggplot2)

ggplot(data, aes(x = `Penerima Manfaat (Jiwa)`, fill = factor(Tahun))) +
  geom_density(alpha = 0.4) +
  theme_minimal() +
  labs(
    title = "Distribusi Density Jumlah Penerima Manfaat per Tahun",
    x = "Penerima Manfaat (Jiwa)",
    y = "Density",
    fill = "Tahun"
  )
## Warning: Groups with fewer than two data points have been dropped.
## Warning: Removed 1 row containing missing values or values outside the scale range
## (`geom_density()`).

Grafik menunjukkan perbedaan jelas antara tahun 2024 dan 2025. Tahun 2024 didominasi jumlah penerima rendah dengan puncak sekitar 35.000 jiwa, sedangkan tahun 2025 bergeser ke angka jauh lebih tinggi yaitu sekitar 150.000 sampai 180.000 jiwa serta memiliki dua puncak (bimodal), termasuk puncak lain di sekitar 330.000 jiwa. Data tahun 2026 belum terlihat atau belum tercatat.

Pergeseran ini menunjukkan adanya peningkatan besar dalam jangkauan program pada tahun 2025, kemungkinan akibat perubahan kebijakan, perluasan penerima, atau peningkatan anggaran. Pola bimodal juga mengindikasikan adanya dua kelompok penerima yang berbeda. Namun, ketidaktersediaan data tahun 2026 menimbulkan ketidakpastian apakah program akan tetap meningkat seperti 2025 atau kembali ke pola sebelumnya.

10. Boxplot Jumlah Donasi Pangan dan Penerima Manfaat per Tahun

  1. Boxplot Jumlah Donasi Pangan per Tahun
ggplot(data, aes(x = factor(Tahun), y = `Jumlah Donasi (kg)`, fill = factor(Tahun))) +
  geom_boxplot() +
  scale_fill_brewer(palette = "Set1") +
  theme_minimal() +
  labs(
    title = "Distribusi Jumlah Donasi Pangan per Tahun",
    x = "Tahun",
    y = "Jumlah Donasi (kg)",
    fill = "Tahun"
  )

Grafik boxplot menunjukkan perbedaan besar jumlah donasi pangan pada tahun 2024 sampai 2026. Tahun 2025 memiliki donasi tertinggi dan variasi paling besar dengan median mendekati 100.000 kg, sedangkan tahun 2024 lebih rendah dengan median di bawah 50.000 kg. Pada tahun 2026, jumlah donasi sangat kecil dan hampir stagnan (hingga bulan Januari).

Terdapat juga outlier pada tahun 2024 dan 2025 yang menunjukkan lonjakan donasi sangat besar pada waktu tertentu. Peningkatan pada tahun 2025 kemungkinan dipengaruhi oleh perubahan kebijakan atau kampanye besar, sementara penurunan tajam di tahun 2026 mengindikasikan rentang periode pengambilan data yang terbatas.

  1. Boxplot Jumlah Penerima Manfaat per Tahun
ggplot(data, aes(x = factor(Tahun), y = `Penerima Manfaat (Jiwa)`, fill = factor(Tahun))) +
  geom_boxplot() +
  scale_fill_brewer(palette = "Set1") +
  theme_minimal() +
  labs(
    title = "Distribusi Jumlah Penerima Manfaat per Tahun",
    x = "Tahun",
    y = "Penerima Manfaat (Jiwa)",
    fill = "Tahun"
  )

Grafik menunjukkan fluktuasi jumlah penerima manfaat pada periode 2024 sampai 2026. Tahun 2025 memiliki nilai median tertinggi sekitar 160.000 jiwa, sedangkan tahun 2024 sebagian besar berada di bawah 50.000 jiwa tetapi memiliki outlier ekstrem hingga lebih dari 450.000 jiwa. Tahun 2026 menunjukkan distribusi yang lebih sempit dan stabil di sekitar 50.000 jiwa. Perbedaan distribusi tersebut mengindikasikan adanya peningkatan besar pada tahun 2025, kemungkinan karena ekspansi program atau peningkatan kebutuhan.