1. Membuat objek time series dan plot runtun waktunya

Objek ts di bahasa pemrograman R adalah struktur data khusus berbentuk vektor atau matriks yang digunakan untuk merepresentasikan data deret waktu (time series).

kendaraan <- c(420, 410, 430, 780, 460, 470, 460, 480, 440, 450, 460, 600,   # 2023
               450, 440, 460, 820, 490, 500, 495, 510, 470, 480, 490, 640)   # 2024

# objek ts
ts_kendaraan <- ts(kendaraan, start = c(2023, 1), frequency = 12)
print(ts_kendaraan)
##      Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec
## 2023 420 410 430 780 460 470 460 480 440 450 460 600
## 2024 450 440 460 820 490 500 495 510 470 480 490 640
# plot
plot(ts_kendaraan,
     main = "Jumlah Kendaraan Penyeberangan Merak-Bakauheni (2023-2024)",
     xlab = "Tahun", ylab = "Jumlah Kendaraan (ribuan)",
     col = "darkred", lwd = 2)

2. Identifikasi apakah data menunjukkan komponen tren, jelaskan alasannya

Untuk cek data ini punya tren atau nggak, lm() dipakai buat narik garis lurus di atas data aslinya

# plot data asli
plot(ts_kendaraan,
     main = "Jumlah Kendaraan Penyeberangan Merak-Bakauheni (2023-2024)",
     xlab = "Tahun", ylab = "Jumlah Kendaraan (ribuan)",
     col = "darkred", lwd = 2, xaxt = "n")

label_waktu <- seq(as.Date("2023-01-01"), as.Date("2024-12-01"), by = "1 month")
posisi_waktu <- 2023 + (0:23)/12
axis(1, at = posisi_waktu, labels = format(label_waktu, "%Y-%b"),
     cex.axis = 0.6, las = 2)

waktu <- as.numeric(time(ts_kendaraan))
model_tren <- lm(kendaraan ~ waktu)
abline(model_tren, col = "blue", lwd = 2, lty = 2)

legend("topleft", legend = c("Data asli", "Garis tren (lm)"),
       col = c("darkred", "blue"), lty = c(1, 2), lwd = 2, cex = 0.8)

summary(model_tren)
## 
## Call:
## lm(formula = kendaraan ~ waktu)
## 
## Residuals:
##    Min     1Q Median     3Q    Max 
## -68.63 -51.54 -34.45 -15.86 305.70 
## 
## Coefficients:
##              Estimate Std. Error t value Pr(>|t|)
## (Intercept) -68398.21   75055.08  -0.911    0.372
## waktu           34.04      37.08   0.918    0.369
## 
## Residual standard error: 104.8 on 22 degrees of freedom
## Multiple R-squared:  0.03689,    Adjusted R-squared:  -0.006883 
## F-statistic: 0.8428 on 1 and 22 DF,  p-value: 0.3686

Dari grafik, garis putus-putus biru hasil lm() memang terlihat naik. Namun kalau dilihat dari hasil summary(model_tren), koefisien waktu bernilai 34.04 dengan p-value sebesar 0.369 itu jauh di atas ambang signifikansi 0.05. Artinya, secara statistik kenaikan ini tidak signifikan, sehingga tidak cukup bukti untuk menyatakan bahwa tren naiknya benar-benar ada secara statistik. Hal ini juga didukung oleh nilai R-squared yang sangat rendah (0.037), yang berarti garis tren linear ini hanya mampu menjelaskan sekitar 3.7% variasi data dan sisanya didominasi oleh faktor lain, terutama lonjakan tajam di bulan April yang nilainya jauh di luar pola bulan-bulan lainnya.

Jadi kesimpulannya, meskipun dilihat dari grafik garis tren terlihat sedikit naik, secara statistik tren ini tidak signifikan. Perubahan naik-turun pada data lebih banyak didominasi oleh lonjakan musiman (terutama bulan April) dibanding oleh kecenderungan naik yang konsisten dari waktu ke waktu.

3. Identifikasi bulan-bulan puncak kunjungan

Untuk mengidentifikasi bulan-bulan puncak, data diurutkan dari nilai tertinggi ke terendah supaya langsung terlihat bulan mana saja yang menonjol dibanding bulan lainnya.

data_bulanan <- data.frame(
  tahun = rep(c(2023, 2024), each = 12),
  bulan = rep(month.abb, 2),
  nilai = kendaraan
)

# 3 nilai tertinggi di tahun 2023 dan 2024
head(data_bulanan[order(-data_bulanan$nilai), ], 6)
##    tahun bulan nilai
## 16  2024   Apr   820
## 4   2023   Apr   780
## 24  2024   Dec   640
## 12  2023   Dec   600
## 20  2024   Aug   510
## 18  2024   Jun   500

Dari hasil pengurutan ini, dua bulan yang paling menonjol adalah April (780 di 2023, 820 di 2024) dan Desember (600 di 2023, 640 di 2024), yang nilainya cukup jauh di atas bulan-bulan lain yang cenderung stabil di kisaran 400–500 an.

Lonjakan di bulan April berkaitan dengan arus mudik Lebaran (Idul Fitri), karena pada 2023 dan 2024 Lebaran memang jatuh di sekitar bulan tersebut. Pada periode ini, banyak masyarakat yang melakukan perjalanan untuk pulang kampung, termasuk melalui jalur penyeberangan Merak–Bakauheni. Sementara itu, lonjakan di bulan Desember berkaitan dengan libur Natal dan Tahun Baru (Nataru), di mana masyarakat juga cenderung melakukan perjalanan untuk liburan atau pulang ke daerah asal.

Jadi, dari hasil tersebut dapat dilihat bahwa April dan Desember menjadi dua bulan dengan jumlah kunjungan yang paling tinggi. Kenaikan pada kedua bulan tersebut kemungkinan besar berkaitan dengan adanya periode libur panjang yang menyebabkan mobilitas masyarakat melalui penyeberangan Merak–Bakauheni meningkat.

4. Seasonal plot dan boxplot per bulan

library(forecast)

seasonplot(ts_kendaraan, year.labels = TRUE, col = c("blue", "red"),
           main = "Seasonal Plot Kendaraan per Bulan",
           ylab = "Jumlah Kendaraan (ribuan)")

boxplot(kendaraan ~ factor(rep(month.abb, 2), levels = month.abb),
        xlab = "Bulan", ylab = "Jumlah Kendaraan (ribuan)",
        main = "Boxplot Kendaraan per Bulan (2023-2024)",
        col = "lightblue")

Dari seasonal plot, garis tahun 2023 dan 2024 akan menunjukkan bentuk pola yang cukup mirip, yaitu sama-sama mengalami lonjakan yang cukup tinggi di bulan April, kemudian turun lagi, dan naik kembali di bulan Desember. Dari boxplot per bulan juga terlihat bahwa bulan April dan Desember memiliki posisi kotak yang jauh lebih tinggi dibandingkan bulan-bulan lainnya yang cenderung berada di kisaran 400–500 an.

Kesimpulannya, pola ini tergolong musiman (seasonal), bukan siklis. Alasannya karena lonjakan terjadi berulang pada bulan yang sama secara konsisten setiap tahun (April dan Desember) dan berkaitan langsung dengan periode kalender tertentu, yaitu Lebaran dan libur Nataru. Pola siklis biasanya tidak terikat pada bulan/kalender tertentu dan rentang waktunya bisa lebih dari satu tahun serta tidak selalu tetap, sedangkan di data ini pola berulangnya jelas terikat kalender tahunan dan penyebabnya sudah bisa diidentifikasi secara pasti.