Analisis Time Series Jumlah Kendaraan Merak - Bakahuni JANUARI 2023 - DESEMBER 2024

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

# Buat objek time series
data_ts <- ts(data_vec, start = c(2023, 1), frequency = 12)

label_bulan = c(
    "Jan-23", "Feb-23", "Mar-23", "Apr-23", "Mei-23", "Jun-23",
    "Jul-23", "Agu-23", "Sep-23", "Okt-23", "Nov-23", "Des-23",
    "Jan-24", "Feb-24", "Mar-24", "Apr-24", "Mei-24", "Jun-24",
    "Jul-24", "Agu-24", "Sep-24", "Okt-24", "Nov-24", "Des-24"
  )

plot(
  data_ts,
  type = "l",   
  col = "blue",
  main = "Plot Time Series Kendaraan Merak-Bakauheni (Januari 2023 - Desember 2024)",
  xlab = "Bulan",
  ylab = "Jumlah Kendaraan (Ribu)",
  xaxt = "n"
)

axis(1, at = time(data_ts), labels = label_bulan, las = 2)
abline(v = 2023.91667, col = "gray30", lwd = 2)
mtext("2023", side = 3, at = 2023.4, col = "gray30", font = 2)
mtext("2024", side = 3, at = 2024.4, col = "gray30", font = 2)

Plot ts menunjukkan pada bulan April dan Desember baik di tahun 2023 dan 2024 mengalami peningkatan jumlah kendaraan. Pola yang terulang ditahun 2023 ke 2025 ini bisa diindikasi sebagai komponen musiman.

# 2
model_trend <- lm(data_ts ~ time(data_ts))
summary(model_trend)
## 
## Call:
## lm(formula = data_ts ~ time(data_ts))
## 
## 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
## time(data_ts)     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
plot(
  data_ts,
  type = "l",   
  col = "blue",
  main = "Plot Time Series Kendaraan Merak-Bakauheni (Januari 2023 - Desember 2024)",
  xlab = "Bulan",
  ylab = "Jumlah Kendaraan (Ribu)",
  xaxt = "n"
)

axis(1, at = time(data_ts), labels = label_bulan, las = 2)
abline(v = 2023.91667, col = "gray30", lwd = 2)
mtext("2023", side = 3, at = 2023.4, col = "gray30", font = 2)
mtext("2024", side = 3, at = 2024.4, col = "gray30", font = 2)

abline(model_trend, col = "red", lwd = 2, lty = 2)

cat("kemiringan tren/tahun:", coef(model_trend)[2])
## kemiringan tren/tahun: 34.04348
cat("R2:", summary(model_trend)$ r.squared)
## R2: 0.03689454

Kemiringan pertahun mencapai 34,04, menunjukkan tren positif. Namun nilai R-squared hanya 0,037 dan p-valuenya 0,369 kurang dari 0,05.

# 3
bulan <- factor(rep(month.abb, 2), levels = month.abb)
tahun <- rep(c("2023", "2024"), each = 12)
df <- data.frame(Periode = label_bulan, Tahun = tahun, Bulan = bulan, Kendaraan = data_vec)
df
##    Periode Tahun Bulan Kendaraan
## 1   Jan-23  2023   Jan       420
## 2   Feb-23  2023   Feb       410
## 3   Mar-23  2023   Mar       430
## 4   Apr-23  2023   Apr       780
## 5   Mei-23  2023   May       460
## 6   Jun-23  2023   Jun       470
## 7   Jul-23  2023   Jul       460
## 8   Agu-23  2023   Aug       480
## 9   Sep-23  2023   Sep       440
## 10  Okt-23  2023   Oct       450
## 11  Nov-23  2023   Nov       460
## 12  Des-23  2023   Dec       600
## 13  Jan-24  2024   Jan       450
## 14  Feb-24  2024   Feb       440
## 15  Mar-24  2024   Mar       460
## 16  Apr-24  2024   Apr       820
## 17  Mei-24  2024   May       490
## 18  Jun-24  2024   Jun       500
## 19  Jul-24  2024   Jul       495
## 20  Agu-24  2024   Aug       510
## 21  Sep-24  2024   Sep       470
## 22  Okt-24  2024   Oct       480
## 23  Nov-24  2024   Nov       490
## 24  Des-24  2024   Dec       640
# Puncak tunggal tertinggi
max(data_ts)
## [1] 820
which.max(data_ts)
## [1] 16
time(data_ts)[which.max(data_ts)]
## [1] 2024.25
# Semua bulan puncak (bukan cuma satu titik maksimum global)
df_urut <- df[order(-df$Kendaraan), ]
head(df_urut, 4)
##    Periode Tahun Bulan Kendaraan
## 16  Apr-24  2024   Apr       820
## 4   Apr-23  2023   Apr       780
## 24  Des-24  2024   Dec       640
## 12  Des-23  2023   Dec       600

Lonjakan jumlah kendaraan yang terjadi pada bulan April dan Desember disebabkan oleh long weekend april (libur lebaran/arus mudik) dan desember libur nataharu.

# 4
library(forecast)
ggseasonplot(
  data_ts, year.labels = TRUE, year.labels.left = TRUE,
  main = "Seasonal Plot Jumlah Kendaraan",
  xlab = "Bulan", ylab = "Jumlah Kendaraan (ribu)"
)

boxplot(
  Kendaraan ~ Bulan, data = df,
  main = "Boxplot Jumlah Kendaraan per Bulan",
  xlab = "Bulan", ylab = "Jumlah Kendaraan (ribu)", col = "lightblue"
)

pola yang di tampilkan pada seasonal plot terlihat konsisten antar tahun, berarti lonjakan jumlah kendaraan tidak muncul secara acak.

Pola yang sama terlihat pada boxplot lonjakan jumlah kendaraan terlihat dibulan april dan desember. karna lonjakan kendaraan ini bisa dijelaskan oleh peristiwa berulang (kalender/liburan).

dari seasonal plot dan boxplot pola yang terbentuk bersifat musiman, bukan pola siklis yang periodenya tidak tetap