Beberapa library yang perlu diinstall sebagai berikut:
## Install library jika belum tersedia (hapus tanda # untuk menginstall):
#install.packages("ggplot2")
#install.packages("readxl")
#install.packages("ggthemes")
#install.packages("gridExtra")
#install.packages("dplyr")
#install.packages("scales")
#install.packages("ggpubr")
## Setelah library terinstall, lalu Run Chunk
## Kemudian hapus atau beri komentar kembali
## Terakhir aktifkan library:
library(ggplot2)
library(readxl)
library(ggthemes)
library(gridExtra)
library(dplyr)
library(scales)
library(ggpubr)
Data diinput dari Microsoft Excel dengan syntax sebagai berikut:
# Sesuaikan path file dengan directory Anda
setwd("C:/Adit Nurdiansyah/Kuliah/Semester/Semester 2 - Genap (2025-2026)/MK Probabilitas dan Statistika/Tugas/Kelompok/Pertemuan 3")
data <- read_excel("data_campak_indonesia_2024.xlsx")
# Bersihkan data: hapus baris kosong
data <- data[!is.na(data$Provinsi), ]
# Konversi tipe data
data$`Cakupan MR2 %` <- as.numeric(data$`Cakupan MR2 %`)
data$`Jumlah Kasus Campak` <- as.numeric(data$`Jumlah Kasus Campak`)
# Tampilkan 6 baris pertama
head(data)
## # A tibble: 6 × 4
## Provinsi `Pulau/Wilayah` `Cakupan MR2 %` `Jumlah Kasus Campak`
## <chr> <chr> <dbl> <dbl>
## 1 DKI Jakarta Jawa 106. 8206
## 2 Jawa Tengah Jawa 102. 32512
## 3 Banten Jawa 98.5 10436
## 4 Sumatera Selatan Sumatera 97.4 432
## 5 DI Yogyakarta Jawa 95.9 3399
## 6 Sulawesi Selatan Sulawesi 91.6 5670
# Tampilkan ringkasan struktur data
str(data)
## tibble [38 × 4] (S3: tbl_df/tbl/data.frame)
## $ Provinsi : chr [1:38] "DKI Jakarta" "Jawa Tengah" "Banten" "Sumatera Selatan" ...
## $ Pulau/Wilayah : chr [1:38] "Jawa" "Jawa" "Jawa" "Sumatera" ...
## $ Cakupan MR2 % : num [1:38] 105.8 101.6 98.5 97.3 95.9 ...
## $ Jumlah Kasus Campak: num [1:38] 8206 32512 10436 432 3399 ...
Dari data tersebut akan disajikan visualisasi data dalam bentuk Pie Chart. Berikut terlampir hasil visualisasi Distribusi Jumlah Kasus Campak Berdasarkan Wilayah:
# Agregasi total kasus per wilayah
data_wilayah <- data %>%
group_by(`Pulau/Wilayah`) %>%
summarise(Total_Kasus = sum(`Jumlah Kasus Campak`, na.rm = TRUE)) %>%
mutate(Persentase = round((Total_Kasus / sum(Total_Kasus)) * 100, 1))
pie_chart <- ggplot(data_wilayah, aes(x = "", y = Total_Kasus, fill = `Pulau/Wilayah`)) +
geom_bar(stat = "identity", width = 1, color = "white") +
coord_polar("y", start = 0) +
theme_minimal() +
labs(
title = "Pie Chart: Distribusi Jumlah Kasus Campak per Wilayah (2024)",
fill = "Wilayah",
caption = "Data Source: Kementerian Kesehatan (Kemenkes) & Badan Pusat Statistik (BPS)"
) +
geom_text(
aes(label = paste0(Persentase, "%")),
position = position_stack(vjust = 0.5),
size = 3.5, color = "white", fontface = "bold"
) +
theme(
axis.text.x = element_blank(),
axis.title = element_blank(),
plot.title = element_text(hjust = 0.5, face = "bold", size = 13),
plot.caption = element_text(hjust = 1, size = 8, color = "gray40"),
plot.caption.position = "plot"
)
pie_chart
Statistik Deskriptif: Berdasarkan hasil Pie Chart di atas, distribusi jumlah kasus campak di Indonesia tahun 2024 menunjukkan bahwa wilayah Jawa mendominasi dengan proporsi terbesar. Hal ini dikarenakan Jawa merupakan wilayah dengan kepadatan penduduk tertinggi di Indonesia, sehingga potensi penyebaran penyakit campak lebih besar dibandingkan wilayah lain.
Statistik Inferensia: Dominasi kasus di wilayah Jawa mengindikasikan adanya ketidakmerataan distribusi kasus campak antara wilayah Jawa dan luar Jawa. Secara deskriptif, temuan ini memberikan dasar untuk menyimpulkan bahwa wilayah Jawa memerlukan intervensi imunisasi yang lebih intensif dan terstruktur.
Dari data tersebut akan disajikan visualisasi data dalam bentuk Bar Chart. Berikut terlampir hasil visualisasi Jumlah Kasus Campak per Provinsi Tahun 2024:
bar_chart <- ggplot(data, aes(x = reorder(Provinsi, `Jumlah Kasus Campak`),
y = `Jumlah Kasus Campak`,
fill = `Pulau/Wilayah`)) +
geom_bar(stat = "identity") +
coord_flip() +
theme_minimal() +
labs(
title = "Bar Chart: Jumlah Kasus Campak per Provinsi (2024)",
x = "Provinsi",
y = "Jumlah Kasus Campak",
fill = "Wilayah",
caption = "Data Source: Kementerian Kesehatan (Kemenkes) & Badan Pusat Statistik (BPS)"
) +
theme(
plot.title = element_text(hjust = 0.5, face = "bold", size = 13),
axis.text.y = element_text(size = 8),
plot.caption = element_text(hjust = 1, size = 8, color = "gray40"),
plot.caption.position = "plot"
)
bar_chart
Statistik Deskriptif: Grafik Bar Chart menunjukkan perbandingan jumlah kasus campak di setiap provinsi pada tahun 2024. Setiap batang merepresentasikan jumlah kasus pada suatu provinsi dan diurutkan dari jumlah kasus terendah hingga tertinggi.
Statistik Inferensia: Dari grafik ini dapat terlihat bahwa terdapat perbedaan jumlah kasus campak antar provinsi. Beberapa provinsi memiliki jumla jumlah kasus yang relatif tinggi dibandingkan provinsi lainnya. Hal ini dapat disebabkan oleh berbagai faktor seperti kepadatan penduduk, tingkat cakupan imunisasi, serta akses terhadap layanan kesehatan.
Dari data tersebut akan disajikan visualisasi data dalam bentuk Histogram. Berikut terlampir hasil visualisasi Distribusi Frekuensi Cakupan Imunisasi MR2 (%) pada seluruh provinsi:
histogram <- ggplot(data, aes(x = `Cakupan MR2 %`)) +
geom_histogram(binwidth = 10, fill = "#2196F3", color = "white", alpha = 0.85) +
theme_minimal() +
labs(
title = "Histogram: Distribusi Cakupan Imunisasi MR2 (%) per Provinsi (2024)",
x = "Cakupan MR2 (%)",
y = "Jumlah Provinsi",
caption = "Data Source: Kementerian Kesehatan (Kemenkes) & Badan Pusat Statistik (BPS)"
) +
theme(
plot.title = element_text(hjust = 0.5, face = "bold", size = 13),
plot.caption = element_text(hjust = 1, size = 8, color = "gray40"),
plot.caption.position = "plot"
)
histogram
Statistik Deskriptif: Dari histogram dapat dilihat bagaimana penyebaran nilai cakupan imunisasi pada berbagai provinsi. Jika sebagian besar batang histogram terkonsentrasi pada nilai tertentu, maka dapat disimpulkan bahwa banyak provinsi memiliki tingkat cakupan imunisasi yang berada pada rentang tersebut.
Statistik Inferensia: Grafik ini membantu memahami apakah cakupan imunisasi antar provinsi cenderung merata atau masih terdapat perbedaan yang cukup besar. Selain itu, histogram juga dapat menunjukkan apakah terdapat provinsi dengan cakupan imunisasi yang sangat rendah atau sangat tinggi dibandingkan provinsi lainnya.
Dari data tersebut akan disajikan visualisasi data dalam bentuk Density Plot. Berikut terlampir hasil visualisasi Distribusi Kepadatan Cakupan Imunisasi MR2 (%) berdasarkan Wilayah:
density_plot <- ggplot(data, aes(x = `Cakupan MR2 %`, fill = `Pulau/Wilayah`)) +
geom_density(alpha = 0.45) +
theme_minimal() +
labs(
title = "Density Plot: Distribusi Cakupan MR2 (%) per Wilayah (2024)",
x = "Cakupan MR2 (%)",
y = "Kepadatan (Density)",
fill = "Wilayah",
caption = "Data Source: Kementerian Kesehatan (Kemenkes) & Badan Pusat Statistik (BPS)"
) +
theme(
plot.title = element_text(hjust = 0.5, face = "bold", size = 13),
plot.caption = element_text(hjust = 1, size = 8, color = "gray40"),
plot.caption.position = "plot"
)
density_plot
Statistik Deskriptif: Grafik ini memperlihatkan bagaimana distribusi nilai cakupan imunisasi pada masing-masing wilayah. Setiap warna mewakili wilayah tertentu sehingga memudahkan untuk melihat apakah suatu wilayah memiliki tingkat cakupan imunisasi yang lebih tinggi atau lebih rendah dibanding wilayah lainnya.
Statistik Inferensia: Jika kurva pada suatu wilayah berada lebih ke kanan, maka wilayah tersebut cenderung memiliki cakupan imunisasi yang lebih tinggi. Sebaliknya, jika kurva lebih ke kiri, maka cakupan imunisasi di wilayah tersebut relatif lebih rendah.
Dari data tersebut akan disajikan visualisasi data dalam bentuk Boxplot. Berikut terlampir hasil visualisasi Sebaran Jumlah Kasus Campak per Wilayah:
boxplot_plot <- ggplot(data, aes(x = `Pulau/Wilayah`,
y = `Jumlah Kasus Campak`,
fill = `Pulau/Wilayah`)) +
geom_boxplot(alpha = 0.7, outlier.color = "red", outlier.shape = 16, outlier.size = 2) +
theme_minimal() +
labs(
title = "Boxplot: Sebaran Jumlah Kasus Campak per Wilayah (2024)",
x = "Wilayah",
y = "Jumlah Kasus Campak",
fill = "Wilayah",
caption = "Data Source: Kementerian Kesehatan (Kemenkes) & Badan Pusat Statistik (BPS)"
) +
theme(
plot.title = element_text(hjust = 0.5, face = "bold", size = 13),
axis.text.x = element_text(angle = 20, hjust = 1, size = 9),
legend.position = "none",
plot.caption = element_text(hjust = 1, size = 8, color = "gray40"),
plot.caption.position = "plot"
)
boxplot_plot
Statistik Deskriptif: Dalam boxplot, kotak menunjukkan rentang kuartil pertama hingga kuartil ketiga, sedangkan garis di dalam kotak menunjukkan nilai median dari jumlah kasus. Titik merah menunjukkan outlier, yaitu nilai yang jauh lebih tinggi atau lebih rendah dibandingkan data lainnya.
Statistik Inferensia: Dalam boxplot, kotak menunjukkan rentang kuartil pertama hingga kuartil ketiga, sedangkan garis di dalam kotak menunjukkan nilai median dari jumlah kasus. Titik merah menunjukkan outlier, yaitu nilai yang jauh lebih tinggi atau lebih rendah dibandingkan data lainnya.
modus <- function(x){
frek <- table(x)
if(max(frek) == 1){
return("Tidak ada modus")
} else {
return(as.numeric(names(frek[frek == max(frek)])))
}
}
hasil <- data.frame(
Statistik = c("Mean","Median","Modus","Minimum","Maximum",
"Range","Varians","Standar Deviasi","Q1","Q3"),
Cakupan_MR2 = c(
mean(data$`Cakupan MR2 %`),
median(data$`Cakupan MR2 %`),
modus(data$`Cakupan MR2 %`),
min(data$`Cakupan MR2 %`),
max(data$`Cakupan MR2 %`),
diff(range(data$`Cakupan MR2 %`)),
var(data$`Cakupan MR2 %`),
sd(data$`Cakupan MR2 %`),
quantile(data$`Cakupan MR2 %`, 0.25),
quantile(data$`Cakupan MR2 %`, 0.75)
),
Kasus_Campak = c(
mean(data$`Jumlah Kasus Campak`),
median(data$`Jumlah Kasus Campak`),
modus(data$`Jumlah Kasus Campak`),
min(data$`Jumlah Kasus Campak`),
max(data$`Jumlah Kasus Campak`),
diff(range(data$`Jumlah Kasus Campak`)),
var(data$`Jumlah Kasus Campak`),
sd(data$`Jumlah Kasus Campak`),
quantile(data$`Jumlah Kasus Campak`, 0.25),
quantile(data$`Jumlah Kasus Campak`, 0.75)
)
)
print(hasil)
## Statistik Cakupan_MR2 Kasus_Campak
## 1 Mean 64.3957894736842 4584.97368421053
## 2 Median 62.625 1118.5
## 3 Modus Tidak ada modus Tidak ada modus
## 4 Minimum 30.65 89
## 5 Maximum 105.79 40635
## 6 Range 75.14 40546
## 7 Varians 470.607354765292 98374185.215505
## 8 Standar Deviasi 21.6934864594258 9918.37613803313
## 9 Q1 46.025 472.5
## 10 Q3 81.555 3068.75
Berdasarkan seluruh analisis visualisasi dan statistik deskriptif terhadap data cakupan imunisasi dan kasus campak di Indonesia tahun 2024, dapat disimpulkan sebagai berikut:
Secara inferensial, terdapat indikasi kuat bahwa rendahnya cakupan imunisasi berkorelasi dengan tingginya jumlah kasus campak. Temuan ini dapat menjadi dasar rekomendasi kebijakan untuk memperkuat program imunisasi nasional, khususnya di provinsi-provinsi dengan cakupan MR2 di bawah 70%.