Data yang digunakan dalam analisis ini berasal dari publikasi resmi Badan Pusat Statistik (BPS) Republik Indonesia. BPS adalah lembaga pemerintah yang bertanggung jawab menyusun statistik nasional, termasuk indikator harga seperti inflasi.
Data yang diambil mencakup:
✔ Inflasi bulanan (%)
✔ Periode: Januari s.d. Desember 2025
✔ Wilayah: 151 kota di seluruh Indonesia
✔ Sumber data: Statistik resmi Inflasi Umum yang dipublikasikan oleh BPS
📍 Sumber & Tautan Data Resmi:
https://www.bps.go.id/id/statistics-table/2/MSMy/inflasi--umum-.html
Dalam analisis ini digunakan beberapa package utama dalam bahasa pemrograman R, yaitu:
📌 Penjelasan:
ggplot2
Digunakan untuk membuat berbagai jenis visualisasi data seperti line
chart, bar chart, histogram, boxplot, dan area chart. Package ini
berbasis pada konsep Grammar of Graphics, sehingga memudahkan
dalam pengaturan estetika (warna, bentuk, ukuran, dan
lain-lain).
tidyverse
Merupakan kumpulan package yang digunakan untuk manipulasi dan
transformasi data. Di dalamnya terdapat fungsi seperti:
dplyr untuk filter dan transformasi data
tidyr untuk mengubah struktur data (wide ↔︎ long)
readr untuk membaca data
dan beberapa fungsi pendukung lainnya
Data inflasi yang telah diunduh dari situs resmi BPS kemudian diimpor
ke dalam R menggunakan fungsi read.csv().
#Input Data
data_inf <- read.csv("C:/Users/dals/OneDrive - untirta.ac.id/KULIAH/Sem 6/Visdat lanjut/inflansi_2025.csv", sep = ";")
head(data_inf)## 'data.frame': 152 obs. of 14 variables:
## $ Kota.Inflasi: chr "KAB ACEH TENGAH" "KOTA MEULABOH" "KAB ACEH TAMIANG" "KOTA BANDA ACEH" ...
## $ Januari : chr "0.27" "-0.44" "-0.17" "-0.47" ...
## $ Februari : chr "-0.32" "-0.72" "-0.48" "-0.49" ...
## $ Maret : chr "1.66" "1.88" "1.89" "1.55" ...
## $ April : chr "2.15" "1.75" "0.79" "1.84" ...
## $ Mei : chr "-0.49" "-0.18" "-1.36" "-0.36" ...
## $ Juni : chr "-0.35" "0.07" "0.07" "-0.17" ...
## $ Juli : chr "0.82" "0.39" "1" "0.42" ...
## $ Agustus : chr "1.4" "0.55" "1.01" "0.4" ...
## $ September : chr "-0.14" "0.19" "0.31" "0.39" ...
## $ Oktober : chr "-0.18" "0.14" "-0.03" "0.35" ...
## $ November : chr "-1.06" "-0.58" "-0.74" "-0.53" ...
## $ Desember : chr "4.95" "2.44" "4.74" "3.08" ...
## $ Tahunan : chr "-" "-" "-" "-" ...
Tahap preprocessing dilakukan untuk memastikan data siap dianalisis dan divisualisasikan. Data mentah yang diperoleh dari BPS masih dalam format tabel lebar (wide format) dan mengandung beberapa kolom yang tidak diperlukan untuk analisis ini. Oleh karena itu, dilakukan proses pembersihan (data cleaning) dan transformasi struktur data.
Kolom Tahunan dihapus karena tidak digunakan dalam analisis ini. Selain itu, berdasarkan struktur awal data, kolom tersebut tidak berisi nilai numerik yang relevan untuk visualisasi bulanan.
Secara default, beberapa kolom bulan terbaca sebagai character akibat format file CSV. Padahal, untuk analisis statistik dan visualisasi, nilai inflasi harus bertipe numeric.
Data awal berbentuk wide format, di mana setiap
bulan berada pada kolom yang berbeda. Untuk keperluan visualisasi
menggunakan ggplot2, format yang lebih sesuai adalah
long format.
Nama kolom diubah menjadi kota agar:
Lebih ringkas
Mudah digunakan dalam kode
Konsisten dengan variabel analisis
Secara default, R akan mengurutkan kategori secara alfabet. Hal ini dapat menyebabkan urutan bulan menjadi tidak kronologis (misalnya April muncul sebelum Februari). Dengan mengubah variabel bulan menjadi factor berurutan, grafik akan menampilkan bulan sesuai urutan kalender.
#Mengurutkan bulan
inf_long$bulan <- factor(
inf_long$bulan,
levels = c("Januari", "Februari", "Maret", "April",
"Mei", "Juni", "Juli", "Agustus",
"September", "Oktober", "November", "Desember")
)
head(inf_long, 10)## tibble [1,824 × 3] (S3: tbl_df/tbl/data.frame)
## $ kota : chr [1:1824] "KAB ACEH TENGAH" "KAB ACEH TENGAH" "KAB ACEH TENGAH" "KAB ACEH TENGAH" ...
## $ bulan : Factor w/ 12 levels "Januari","Februari",..: 1 2 3 4 5 6 7 8 9 10 ...
## $ inflasi: num [1:1824] 0.27 -0.32 1.66 2.15 -0.49 -0.35 0.82 1.4 -0.14 -0.18 ...
Dataset mencakup satu baris agregat nasional (“INDONESIA”) dan 151 kota/kabupaten.
Pemisahan ini dilakukan untuk:
Menganalisis tren nasional secara terpisah
Membandingkan inflasi kota tanpa tercampur agregat nasional
Menghindari bias dalam perhitungan rata-rata antar kota
#Memisahkan data nasional dan kota
inf_nasional <- inf_long %>%
filter(kota == "INDONESIA")
inf_kota <- inf_long %>%
filter(kota != "INDONESIA")
head(inf_nasional)(geom_line + geom_point)
📌 Tujuan:
Melihat perkembangan inflasi nasional Indonesia dari Januari hingga Desember 2025.
#Grafik 1
gf1 <- ggplot(inf_nasional, aes(x = bulan, y = inflasi, group = 1)) +
geom_line(col = "navy", size = 1.3) +
geom_point(col = "maroon", size = 3) +
labs(title = "Tren Inflasi Nasional 2025",
x = "Bulan",
y = "Inflasi (%)") +
theme_minimal() +
theme(plot.title = element_text(face = "bold", size = 14))
print(gf1)📌 Interpretasi :
Grafik menunjukkan bahwa inflasi nasional selama tahun 2025 mengalami fluktuasi yang relatif terkendali. Pada awal tahun, inflasi berada pada level yang stabil, kemudian mengalami peningkatan pada beberapa bulan tertentu sebelum kembali mengalami penyesuaian di akhir tahun. Pola ini menunjukkan bahwa tekanan harga bersifat musiman, yang kemungkinan dipengaruhi oleh faktor seperti: - periode hari besar keagamaan, - kenaikan permintaan konsumsi, -serta dinamika harga komoditas pangan dan energi. Secara umum, tidak terlihat lonjakan ekstrem, yang mengindikasikan kondisi inflasi nasional masih dalam rentang yang relatif stabil sepanjang tahun.
(geom_area + geom_line)
📌 Tujuan:
Menunjukkan rata-rata inflasi dari seluruh kota di Indonesia untuk setiap bulan tahun 2025.
#Grafik 2
mean_kota_bulanan <- inf_kota %>%
group_by(bulan) %>%
summarise(rata_inflasi = mean(inflasi, na.rm = TRUE))
gf2 <- ggplot(mean_kota_bulanan, aes(x = bulan, y = rata_inflasi, group = 1)) +
geom_area(fill = "lightgreen", alpha = 0.5) +
geom_line(col = "green", size = 1) +
labs(title = "Rata-rata Inflasi Seluruh Kota per Bulan 2025",
x = "Bulan",
y = "Rata-rata Inflasi (%)") +
theme_minimal() +
theme(plot.title = element_text(face = "bold", size = 14))
print(gf2)📌 Interpretasi :
Grafik area memperlihatkan bahwa rata-rata inflasi kota per bulan mengikuti pola yang hampir serupa dengan inflasi nasional. Hal ini menunjukkan bahwa tren nasional sangat dipengaruhi oleh pergerakan inflasi di tingkat kota. Terlihat adanya bulan-bulan dengan rata-rata inflasi lebih tinggi dibanding bulan lainnya, yang menandakan tekanan harga terjadi secara cukup merata di banyak wilayah, bukan hanya di kota tertentu. Konsistensi antara tren rata-rata kota dan nasional mengindikasikan bahwa dinamika inflasi di Indonesia pada tahun 2025 bersifat sistemik dan bukan anomali lokal.
(geom_boxplot)
📌 Tujuan:
Melihat variasi, median, kuartil, serta potensi outlier inflasi pada 151 kota setiap bulan.
#Grafik 3
gf3 <- ggplot(inf_kota, aes(x = bulan, y = inflasi, fill = bulan)) +
geom_boxplot(alpha = 0.7) +
labs(title = "Distribusi Inflasi 151 Kota per Bulan",
x = "Bulan",
y = "Inflasi (%)") +
theme_minimal() +
theme(legend.position = "none",
plot.title = element_text(face = "bold", size = 14))
print(gf3)📌 Interpretasi :
Boxplot menunjukkan bahwa sebagian besar kota memiliki nilai inflasi yang terkonsentrasi pada rentang tertentu setiap bulannya, terlihat dari posisi median dan panjang box yang relatif seragam. Namun pada beberapa bulan tertentu, terlihat rentang (interquartile range) yang lebih lebar serta munculnya titik outlier. Hal ini menunjukkan adanya kota-kota dengan inflasi yang jauh lebih tinggi atau lebih rendah dibanding mayoritas kota lainnya. Variasi ini menandakan bahwa meskipun tren nasional stabil, terdapat perbedaan dinamika harga antar daerah yang dipengaruhi oleh faktor lokal seperti distribusi barang, struktur ekonomi daerah, dan kondisi pasokan.
(geom_histogram)
📌 Tujuan:
Melihat pola distribusi nilai inflasi seluruh kota selama tahun 2025.
#Grafik 4
gf4 <- ggplot(inf_kota, aes(x = inflasi)) +
geom_histogram(bins = 25,
fill = "aquamarine2",
color = "darkcyan",
alpha = 0.8) +
labs(title = "Distribusi Inflasi Kota Tahun 2025",
x = "Inflasi (%)",
y = "Frekuensi") +
theme_minimal() +
theme(plot.title = element_text(face = "bold", size = 14))
print(gf4)📌 Interpretasi :
Histogram memperlihatkan bahwa sebagian besar nilai inflasi kota terkonsentrasi pada kisaran tertentu, dengan frekuensi tertinggi berada pada rentang inflasi moderat. Distribusi ini menunjukkan bahwa kejadian inflasi ekstrem relatif jarang terjadi. Nilai inflasi yang sangat tinggi atau sangat rendah hanya muncul pada sebagian kecil kota. Pola distribusi yang terkonsentrasi ini mengindikasikan bahwa secara umum inflasi kota di Indonesia selama tahun 2025 berada dalam rentang yang terkendali dan tidak menunjukkan penyimpangan besar secara agregat.
(geom_bar)
📌 Tujuan:
Membandingkan 10 kota dengan rata-rata inflasi tertinggi selama tahun 2025.
#Grafik 5
top10_kota <- inf_kota %>%
group_by(kota) %>%
summarise(mean_inflasi = mean(inflasi, na.rm = TRUE)) %>%
arrange(desc(mean_inflasi)) %>%
slice(1:10)
gf5 <- ggplot(top10_kota,
aes(x = reorder(kota, mean_inflasi),
y = mean_inflasi,
fill = mean_inflasi)) +
geom_bar(stat = "identity") +
coord_flip() +
scale_fill_gradient(low = "cornsilk2", high = "coral") +
labs(title = "10 Kota dengan Rata-rata Inflasi Tertinggi 2025",
x = "Kota",
y = "Rata-rata Inflasi (%)") +
theme_minimal() +
theme(legend.position = "none",
plot.title = element_text(face = "bold", size = 14))
print(gf5)📌 Interpretasi :
Grafik batang menunjukkan adanya perbedaan rata-rata inflasi antar kota. Sepuluh kota dengan rata-rata inflasi tertinggi memiliki nilai yang secara konsisten berada di atas rata-rata nasional. Perbedaan tinggi batang menunjukkan variasi tingkat tekanan harga antar wilayah. Kota dengan rata-rata inflasi tertinggi kemungkinan menghadapi: - tekanan pasokan yang lebih besar, - biaya distribusi lebih tinggi, - atau struktur konsumsi masyarakat yang lebih sensitif terhadap kenaikan harga komoditas tertentu. Temuan ini mengindikasikan bahwa pengendalian inflasi perlu mempertimbangkan karakteristik wilayah secara spesifik.
(geom_point)
📌 Tujuan:
Membandingkan rata-rata inflasi di lima kota besar Indonesia.
#Grafik 6
kota_besar <- c("DKI JAKARTA",
"KOTA SURABAYA",
"KOTA BANDUNG",
"KOTA MEDAN",
"KOTA MAKASSAR")
inf_kota_besar <- inf_kota %>%
filter(kota %in% kota_besar) %>%
group_by(kota) %>%
summarise(mean_inflasi = mean(inflasi, na.rm = TRUE))
gf6 <- ggplot(inf_kota_besar,
aes(x = reorder(kota, mean_inflasi),
y = mean_inflasi,
color = kota)) +
geom_point(size = 5) +
labs(title = "Rata-rata Inflasi Kota Besar Indonesia 2025",
x = "Kota",
y = "Rata-rata Inflasi (%)") +
theme_minimal() +
theme(plot.title = element_text(face = "bold", size = 14))
print(gf6)📌 Interpretasi :
Grafik menunjukkan bahwa lima kota besar Indonesia memiliki rata-rata inflasi yang relatif berdekatan, namun tetap terdapat perbedaan tingkat inflasi di antara masing-masing kota. Perbedaan ini menunjukkan bahwa meskipun kota besar memiliki karakteristik ekonomi yang mirip (urbanisasi tinggi, pusat perdagangan, aktivitas industri), dinamika harga tetap dipengaruhi oleh faktor lokal seperti: - kebijakan daerah, - distribusi logistik, - dan pola konsumsi masyarakat. Tidak terlihat selisih yang sangat ekstrem, yang menunjukkan stabilitas inflasi di kota-kota besar selama tahun 2025.