1. Deskripsi Data

Analisis ini menggunakan set data berjudul Commodity Prices and Weather Data in Kota Singkawang. Data ini berisi catatan bulanan harga komoditas pangan utama dan kondisi cuaca di Kota Singkawang, Kalimantan Barat, dari Januari 2016 sampai Desember 2023 (96 bulan).

Data memiliki 8 kolom:

  • Month: tanggal awal tiap bulan (penanda waktu, tidak dihitung statistiknya).

  • Cayenne Price (Rp): harga cabai rawit per bulan.

  • Red Chili Price (Rp): harga cabai merah per bulan.

  • Shallot Price (Rp): harga bawang merah per bulan.

  • Garlic Price (Rp): harga bawang putih per bulan.

  • Rainfall (mm): curah hujan per bulan dalam milimeter.

  • Number of Rainy Days: jumlah hari hujan dalam satu bulan.

  • Inflation(%): tingkat inflasi bulanan dalam persen. Nilai negatif berarti deflasi.

    Data bersumber dari BPS, lalu dibersihkan, digabungkan, dan dipublikasikan melalui Mendeley Data.

Sumber data: https://data.mendeley.com/datasets/79bmb9vkwk/3

2. Tools yang Digunakan

Analisis dilakukan dengan bahasa pemrograman R di RStudio. Paket yang dipakai adalah readxl untuk membaca file Excel, dan tidyverse untuk melihat struktur data, serta ggplot2 untuk visualisasi plot line. Laporan disusun dengan R Markdown dan dipublikasikan melalui RPubs.

3. Persiapan dan Penampilan Data

Berikut adalah pembacaan data, pengecekan ukuran serta nilai kosong, dan ringkasan awal.

library(readxl)
library(tidyverse)

Dataset_Cabe <- read_excel("Dataset Cabe.xlsx")
glimpse(Dataset_Cabe)
## Rows: 96
## Columns: 8
## $ Month                  <dttm> 2016-01-01, 2016-02-01, 2016-03-01, 2016-04-01…
## $ `Rainfall (mm)`        <dbl> 313, 170, 391, 35, 385, 219, 143, 23, 138, 207,…
## $ `Cayenne Price (Rp)`   <dbl> 36458, 41042, 54700, 55125, 49167, 50667, 51542…
## $ `Red Chili Price (Rp)` <dbl> 27500, 32083, 37500, 38333, 39333, 41208, 40750…
## $ `Shallot Price (Rp)`   <dbl> 36958, 31083, 40367, 48375, 49333, 39208, 39708…
## $ `Garlic Price  (Rp)`   <dbl> 29917, 31167, 33300, 36083, 35767, 35458, 34542…
## $ `Number of Rainy Days` <dbl> 22, 18, 13, 12, 22, 17, 10, 4, 15, 19, 26, 20, …
## $ Inflation              <dbl> 0.13, 0.39, 0.42, 0.23, 0.64, 1.28, 2.07, 2.87,…
dim(Dataset_Cabe)          # jumlah baris dan kolom
## [1] 96  8
colSums(is.na(Dataset_Cabe))  # jumlah data kosong tiap kolom
##                Month        Rainfall (mm)   Cayenne Price (Rp) 
##                    0                    0                    0 
## Red Chili Price (Rp)   Shallot Price (Rp)   Garlic Price  (Rp) 
##                    0                    0                    0 
## Number of Rainy Days            Inflation 
##                    0                    0
summary(Dataset_Cabe)      # ringkasan cepat semua kolom
##      Month                     Rainfall (mm)   Cayenne Price (Rp)
##  Min.   :2016-01-01 00:00:00   Min.   : 23.0   Min.   : 35125    
##  1st Qu.:2017-12-24 06:00:00   1st Qu.:137.1   1st Qu.: 52327    
##  Median :2019-12-16 12:00:00   Median :210.5   Median : 59482    
##  Mean   :2019-12-16 11:00:00   Mean   :233.8   Mean   : 60705    
##  3rd Qu.:2021-12-08 18:00:00   3rd Qu.:315.0   3rd Qu.: 64374    
##  Max.   :2023-12-01 00:00:00   Max.   :722.0   Max.   :127917    
##  Red Chili Price (Rp) Shallot Price (Rp) Garlic Price  (Rp)
##  Min.   :25933        Min.   :19458      Min.   :14200     
##  1st Qu.:41240        1st Qu.:27708      1st Qu.:22998     
##  Median :47222        Median :30620      Median :26438     
##  Mean   :49738        Mean   :31994      Mean   :27823     
##  3rd Qu.:55612        3rd Qu.:36896      3rd Qu.:33483     
##  Max.   :86667        Max.   :50286      Max.   :62400     
##  Number of Rainy Days   Inflation     
##  Min.   : 2.00        Min.   :-0.290  
##  1st Qu.:10.00        1st Qu.: 1.127  
##  Median :13.00        Median : 1.745  
##  Mean   :14.42        Mean   : 2.000  
##  3rd Qu.:19.00        3rd Qu.: 2.615  
##  Max.   :30.00        Max.   : 5.960

Data terdiri dari 96 baris dan 8 kolom, dan tidak ada nilai kosong dalam data.

Dan berikut adalah tampilan dataset yang digunakan

library(DT)
datatable(Dataset_Cabe)

4. Statistik Deskriptif per Variabel

Untuk tiap variabel dihitung mean, median, modus, simpangan baku (SD), serta bulan tertinggi dan terendah. Hasil tiap baris kode muncul secara berurutan: mean, median, modus, SD, SD/Mean (%), bulan tertinggi, bulan terendah. Modus dihitung dengan membagi data menjadi 5 kelas berlebar sama, lalu mengambil kelas yang paling sering muncul. Kolom SD/Mean menunjukkan seberapa besar variasi data dibandingkan rata-ratanya.

4.1 Harga Cabai Rawit

rawit <- Dataset_Cabe$`Cayenne Price (Rp)`

mean(rawit)
## [1] 60704.79
median(rawit)
## [1] 59482
names(which.max(table(cut(rawit, breaks = 5))))   # modus (kelas)
## [1] "(5.37e+04,7.22e+04]"
sd(rawit)
## [1] 14300.57
sd(rawit) / mean(rawit) * 100                  # SD/Mean (%)
## [1] 23.55757
Dataset_Cabe$Month[which.max(rawit)]              # bulan tertinggi
## [1] "2017-02-01 UTC"
Dataset_Cabe$Month[which.min(rawit)]              # bulan terendah
## [1] "2019-12-01 UTC"

4.2 Harga Cabai Merah

merah <- Dataset_Cabe$`Red Chili Price (Rp)`

mean(merah)
## [1] 49738.45
median(merah)
## [1] 47222
names(which.max(table(cut(merah, breaks = 5))))   # modus (kelas)
## [1] "(3.81e+04,5.02e+04]"
sd(merah)
## [1] 12821.29
sd(merah) / mean(merah) * 100                  # SD/Mean (%)
## [1] 25.77743
Dataset_Cabe$Month[which.max(merah)]              # bulan tertinggi
## [1] "2019-10-01 UTC"
Dataset_Cabe$Month[which.min(merah)]              # bulan terendah
## [1] "2017-06-01 UTC"

4.3 Harga Bawang Merah

bawang_merah <- Dataset_Cabe$`Shallot Price (Rp)`

mean(bawang_merah)
## [1] 31993.73
median(bawang_merah)
## [1] 30620
names(which.max(table(cut(bawang_merah, breaks = 5))))   # modus (kelas)
## [1] "(2.56e+04,3.18e+04]"
sd(bawang_merah)
## [1] 6922.853
sd(bawang_merah) / mean(bawang_merah) * 100                  # SD/Mean (%)
## [1] 21.63816
Dataset_Cabe$Month[which.max(bawang_merah)]              # bulan tertinggi
## [1] "2022-07-01 UTC"
Dataset_Cabe$Month[which.min(bawang_merah)]              # bulan terendah
## [1] "2018-10-01 UTC"

4.4 Harga Bawang Putih

bawang_putih <- Dataset_Cabe$`Garlic Price  (Rp)`

mean(bawang_putih)
## [1] 27822.91
median(bawang_putih)
## [1] 26437.5
names(which.max(table(cut(bawang_putih, breaks = 5))))   # modus (kelas)
## [1] "(2.38e+04,3.35e+04]"
sd(bawang_putih)
## [1] 7271.638
sd(bawang_putih) / mean(bawang_putih) * 100                  # SD/Mean (%)
## [1] 26.13544
Dataset_Cabe$Month[which.max(bawang_putih)]              # bulan tertinggi
## [1] "2017-05-01 UTC"
Dataset_Cabe$Month[which.min(bawang_putih)]              # bulan terendah
## [1] "2020-07-01 UTC"

4.5 Curah Hujan

hujan <- Dataset_Cabe$`Rainfall (mm)`

mean(hujan)
## [1] 233.776
median(hujan)
## [1] 210.5
names(which.max(table(cut(hujan, breaks = 5))))   # modus (kelas)
## [1] "(163,303]"
sd(hujan)
## [1] 136.3022
sd(hujan) / mean(hujan) * 100                  # SD/Mean (%)
## [1] 58.3046
Dataset_Cabe$Month[which.max(hujan)]              # bulan tertinggi
## [1] "2020-07-01 UTC"
Dataset_Cabe$Month[which.min(hujan)]              # bulan terendah
## [1] "2016-08-01 UTC"

4.6 Hari Hujan

hari_hujan <- Dataset_Cabe$`Number of Rainy Days`

mean(hari_hujan)
## [1] 14.41667
median(hari_hujan)
## [1] 13
names(which.max(table(cut(hari_hujan, breaks = 5))))   # modus (kelas)
## [1] "(7.6,13.2]"
sd(hari_hujan)
## [1] 6.543243
sd(hari_hujan) / mean(hari_hujan) * 100                  # SD/Mean (%)
## [1] 45.38666
Dataset_Cabe$Month[which.max(hari_hujan)]              # bulan tertinggi
## [1] "2022-06-01 UTC"
Dataset_Cabe$Month[which.min(hari_hujan)]              # bulan terendah
## [1] "2019-08-01 UTC"

4.7 Inflasi

inflasi <- Dataset_Cabe$Inflation

mean(inflasi)
## [1] 2.000417
median(inflasi)
## [1] 1.745
names(which.max(table(cut(inflasi, breaks = 5))))   # modus (kelas)
## [1] "(0.96,2.21]"
sd(inflasi)
## [1] 1.33084
sd(inflasi) / mean(inflasi) * 100                  # SD/Mean (%)
## [1] 66.52813
Dataset_Cabe$Month[which.max(inflasi)]              # bulan tertinggi
## [1] "2022-12-01 UTC"
Dataset_Cabe$Month[which.min(inflasi)]              # bulan terendah
## [1] "2021-03-01 UTC"

5. Plot

Visualisasi grafik dari setiap variabel menggunakan plot line. Alasan plot line dipilih adalah untuk melihat perbedaan setiap variabel dari waktu ke waktu. Dari hasil grafik dapat terlihat tren data setiap variabel tersebar.

5.1 Grafik Curah Hujan per Bulan

library(ggplot2)

ggplot(Dataset_Cabe, aes(x = Month, y = `Rainfall (mm)`)) +
  geom_line(color = "blue", linewidth = 1) +
  labs(
    x = "Tahun",
    y = "Curah Hujan (mm)"
  )

5.2 Grafik Harga Cabai Rawit

library(ggplot2)

ggplot(Dataset_Cabe, aes(x = Month, y = `Cayenne Price (Rp)`)) +
  geom_line(color = "red", linewidth = 1) +
  labs(
    x = "Tahun",
    y = "Harga (Rp)"
  )

5.3 Grafik Harga Cabai Merah

library(ggplot2)

ggplot(Dataset_Cabe, aes(x = Month, y = `Red Chili Price (Rp)`)) +
  geom_line(color = "darkred", linewidth = 1) +
  labs(
    x = "Tahun",
    y = "Harga (Rp)"
  )

5.4 Grafik Harga Bawang Merah

library(ggplot2)

ggplot(Dataset_Cabe, aes(x = Month, y = `Shallot Price (Rp)`)) +
  geom_line(color = "purple", linewidth = 1) +
  labs(
    x = "Tahun",
    y = "Harga (Rp)"
  )

5.5 Grafik Harga Bawang Putih

library(ggplot2)

ggplot(Dataset_Cabe, aes(x = Month, y = `Garlic Price  (Rp)`)) +
  geom_line(color = "black", linewidth = 1) +
  labs(
    x = "Tahun",
    y = "Harga (Rp)"
  )

5.6 Grafik Jumlah Hari Hujan

library(ggplot2)

ggplot(Dataset_Cabe, aes(x = Month, y = `Number of Rainy Days`)) +
  geom_line(color = "cyan", linewidth = 1) +
  labs(
    x = "Tahun",
    y = "Hari Hujan dalam 1 Bulan"
  )

5.7 Grafik Inflasi(%)

library(ggplot2)

ggplot(Dataset_Cabe, aes(x = Month, y = `Inflation`)) +
  geom_line(color = "green", linewidth = 1) +
  labs(
    x = "Tahun",
    y = "Inflasi (%)"
  )

6. Interpretasi

6.1 Perbandingan Harga Antar Komoditas

Cabai rawit dan cabai merah berada pada tingkat harga yang jauh lebih tinggi daripada bawang merah dan bawang putih. Cabai rawit menjadi komoditas termahal dengan rata-rata Rp60.705, sedangkan bawang putih paling murah dengan rata-rata Rp27.823.

6.2 Rata-rata, Median, dan Modus

Pada ketujuh variabel, rata-rata sedikit lebih besar daripada median. Artinya ada beberapa bulan ketika nilainya melonjak tinggi dan menarik rata-rata ke atas. Kelas modus pada semua variabel juga memuat nilai mediannya, jadi titik pusat data cukup konsisten. Pada hari hujan, kelas modusnya 7,6 sampai 13,2 hari, sementara rata-ratanya 14,4 hari, yang menunjukkan adanya bulan-bulan dengan hari hujan sangat banyak.

6.3 Kestabilan Harga

Dalam rupiah, simpangan baku cabai (Rp12.821 sampai Rp14.301) sekitar dua kali lipat simpangan baku bawang (Rp6.923 sampai Rp7.272). Namun jika dibandingkan dengan harga rata-ratanya, variasi keempat komoditas berdekatan, yaitu 21,6% sampai 26,1%. Jadi harga cabai bergerak lebih lebar dalam rupiah karena tingkat harganya memang lebih tinggi, bukan karena naik turunnya jauh lebih tajam secara relatif. Bawang putih bahkan memiliki variasi relatif tertinggi (26,1%) di antara keempat komoditas.

Lonjakan harga tertinggi tiap komoditas tidak terjadi bersamaan. Cabai rawit memuncak pada Februari 2017, bawang putih pada Mei 2017, cabai merah pada Oktober 2019, dan bawang merah pada Juli 2022.

6.4 Faktor Cuaca

Curah hujan bervariasi sangat besar antar bulan. Rata-ratanya 233,8 mm per bulan, tetapi simpangan baku 136,3 mm (sekitar 58% dari rata-rata) menunjukkan perbedaan tajam antara bulan kering dan bulan basah. Curah hujan tertinggi terjadi pada Juli 2020 dan terendah pada Agustus 2016.

Singkawang rata-rata mengalami 14,4 hari hujan per bulan, atau sekitar separuh bulan. Hari hujan terbanyak tercatat pada Juni 2022 dan tersedikit pada Agustus 2019.

6.5 Inflasi

Inflasi rata-rata 2,00% dengan kelas modus 0,96% sampai 2,21%, sehingga tergolong rendah. Simpangan baku 1,33 poin persen (sekitar 66% dari rata-rata) menunjukkan laju inflasi bulanan cukup berubah-ubah. Inflasi tertinggi tercatat pada Desember 2022. Pada Maret 2021 inflasi turun ke nilai terendah, yaitu negatif (deflasi).

7. Kesimpulan

Berdasarkan data Kota Singkawang periode 2016 sampai 2023, harga cabai lebih tinggi daripada harga bawang, dan secara nominal bergerak lebih lebar. Jika dibandingkan dengan harga rata-ratanya, tingkat fluktuasi cabai dan bawang tidak jauh berbeda. Curah hujan, hari hujan, dan inflasi juga menunjukkan variasi bulanan yang besar.

Rata-rata yang sedikit di atas median pada semua variabel menunjukkan adanya bulan-bulan dengan lonjakan nilai. Karena itu, rata-rata saja tidak cukup untuk menggambarkan kondisi data. Median, modus, dan ukuran sebaran perlu dibaca bersama.