data_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

## 1. Buat objek ts dan plot runtun waktunya
ts_kendaraan <- ts(data_kendaraan, start = c(2023, 1), frequency = 12)

# Plot dasar 

plot.ts(ts_kendaraan,
     main = "Jumlah Kendaraan Penyeberangan Merak-Bakauheni (2023-2024)",
     ylab = "Jumlah Kendaraan (ribuan)", xlab = "Tahun")

Interpretasi: Data menunjukan pola yang tajam dan berulang. Pada tahun 2023 maupun 2024 pola sama-sama menunjukkan adanya lonjakan besar dan pada akhir tahun terjadi lonjakan sedang di semua tahun.

## 2. Identifikasi komponen tren

library(forecast)
## Warning: package 'forecast' was built under R version 4.4.3
dekomposisi <- decompose(ts_kendaraan)   # additive decomposition
plot(dekomposisi)

# Uji arah tren secara sederhana lewat regresi linier terhadap waktu
waktu <- as.numeric(time(ts_kendaraan))
model_tren <- lm(ts_kendaraan ~ waktu)
summary(model_tren)
## 
## Call:
## lm(formula = ts_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
# Overlay garis tren pada plot data asli
plot(ts_kendaraan, main = "Data dan Garis Tren", col = "darkblue", lwd = 2)
lines(waktu, fitted(model_tren), col = "red", lwd = 2)
legend("topleft", legend = c("Data", "Tren (regresi)"),
       col = c("darkblue", "red"), lty = 1, lwd = 2)

Interpretasi: Data Kendaraan yang menyebrang di pelabuhan Merak-Bakauheni pada tahun 2023 dan 2024 menunjukkan komponen tren setiap tahunnya. Terlihat adanya lonjakan pola pada pertangahan tahun dan lonjakkan pola sedang di akhir tahun.

## 3. Identifikasi bulan-bulan puncak kunjungan

bulan  <- rep(month.abb, times = 2)
tahun  <- rep(c(2023, 2024), each = 12)
df     <- data.frame(tahun, bulan, nilai = data_kendaraan)
 
df_urut <- df[order(-df$nilai), ]
cat("\n5 nilai tertinggi (bulan-tahun):\n")
## 
## 5 nilai tertinggi (bulan-tahun):
print(head(df_urut, 5))
##    tahun bulan nilai
## 16  2024   Apr   820
## 4   2023   Apr   780
## 24  2024   Dec   640
## 12  2023   Dec   600
## 20  2024   Aug   510
# Rata-rata per bulan (gabungan 2023 & 2024) untuk melihat pola umum
rata_per_bulan <- tapply(data_kendaraan, rep(month.abb, 2), mean)
rata_per_bulan <- rata_per_bulan[month.abb]  # urutkan Jan-Des
print(round(rata_per_bulan, 1))
##   Jan   Feb   Mar   Apr   May   Jun   Jul   Aug   Sep   Oct   Nov   Dec 
## 435.0 425.0 445.0 800.0 475.0 485.0 477.5 495.0 455.0 465.0 475.0 620.0

Interpretasi: Kunjungan meningkat drastis pada sekitar bulan april, pada pola ini apat dikaitkan dengan arus mudik lebara. Selain itu, pada akhir tahun pola menunjukkan peningkatan sedang yang dapat dikaitkan dengan libur akhir tahun dan natal.

## 4. Seasonal plot & boxplot per bulan

library(ggplot2); library(forecast)
## Warning: package 'ggplot2' was built under R version 4.4.3
autoplot(ts_kendaraan) + theme_minimal()

ggseasonplot(ts_kendaraan, year.labels = TRUE)

boxplot(ts_kendaraan ~ cycle(ts_kendaraan), names = month.abb)

Interpretasi: Berdasarkan seasonal plot dan boxplot per bulan, terlihat bahwa terjadi lonjakan berulang yang konsisten pada bulan april dan desember setiap tahunnya. Dapat disimpulkan bahwa data menunjukkan tren musiman.