1 Data

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

2 Persiapan

2.1 Package

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

2.2 Input Data

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)
str(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  "-" "-" "-" "-" ...

3 Preprocessing Data

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.

3.1 Menghapus kolom yang tidak digunakan

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.

#Menghapus kolom Tahunan
data_inf <- data_inf %>%
  select(-Tahunan)

#Mengubah kolom bulan menjadi numeric
inf_clean <- data_inf %>%
  mutate(across(Januari:Desember, as.numeric))

3.2 Mengubah tipe data menjadi numerik

Secara default, beberapa kolom bulan terbaca sebagai character akibat format file CSV. Padahal, untuk analisis statistik dan visualisasi, nilai inflasi harus bertipe numeric.

#Mengubah kolom bulan menjadi numeric
inf_clean <- data_inf %>%
  mutate(across(Januari:Desember, as.numeric))

3.3 Mengubah struktur data (wide ↔︎ long)

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.

#Mengubah format dari wide ke long
inf_long <- inf_clean %>%
  pivot_longer(
    cols = Januari:Desember,
    names_to = "bulan",
    values_to = "inflasi"
  )

3.4 Mengubah nama kolom kota

Nama kolom diubah menjadi kota agar:

  • Lebih ringkas

  • Mudah digunakan dalam kode

  • Konsisten dengan variabel analisis

#Mengubah nama kolom kota
inf_long <- inf_long %>%
  rename(kota = Kota.Inflasi)

3.5 Mengatur urutan bulan

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)
str(inf_long)
## 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 ...

3.6 Memisahkan data nasional dan data kota

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)
head(inf_kota)

4 Visualisasi Data

4.1 Grafik 1 : Trend Inflasi Nasional 2025

(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.

4.2 Grafik 2 : Rata-rata Inflasi Seluruh Kota per Bulan

(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.

4.3 Grafik 3 : Distribusi Inflasi 151 Kota per Bulan

(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.

4.4 Grafik 4 : Distribusi Inflasi Kota Tahun 2025

(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.

4.5 Grafik 5 : 10 Kota dengan Rata-rata Inflasi Tertinggi 2025

(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.

4.6 Grafik 6 : Rata-rata Inflasi Kota Besar Indonesia 2025

(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.