Data

Data suhu udara rata-rata bulanan Kota Cilegon periode Januari 2023 - Desember 2024 (°C):

# Data suhu udara rata-rata bulanan Kota Cilegon (°C)
suhu <- c(27.8,27.9,28.3,28.9,29.1,28.6,28.0,28.1,28.4,28.7,28.2,27.9,
          28.0,28.1,28.6,29.2,29.4,28.8,28.2,28.3,28.6,28.9,28.4,28.1)

bulan  <- rep(month.abb, 2)
tahun  <- rep(2023:2024, each = 12)

data.frame(Tahun = tahun, Bulan = bulan, Suhu = suhu)
##    Tahun Bulan Suhu
## 1   2023   Jan 27.8
## 2   2023   Feb 27.9
## 3   2023   Mar 28.3
## 4   2023   Apr 28.9
## 5   2023   May 29.1
## 6   2023   Jun 28.6
## 7   2023   Jul 28.0
## 8   2023   Aug 28.1
## 9   2023   Sep 28.4
## 10  2023   Oct 28.7
## 11  2023   Nov 28.2
## 12  2023   Dec 27.9
## 13  2024   Jan 28.0
## 14  2024   Feb 28.1
## 15  2024   Mar 28.6
## 16  2024   Apr 29.2
## 17  2024   May 29.4
## 18  2024   Jun 28.8
## 19  2024   Jul 28.2
## 20  2024   Aug 28.3
## 21  2024   Sep 28.6
## 22  2024   Oct 28.9
## 23  2024   Nov 28.4
## 24  2024   Dec 28.1

1: Buat objek ts dan plot runtun waktu dari data suhu tersebut.

suhu_ts <- ts(suhu, start = c(2023, 1), frequency = 12)
suhu_ts
##       Jan  Feb  Mar  Apr  May  Jun  Jul  Aug  Sep  Oct  Nov  Dec
## 2023 27.8 27.9 28.3 28.9 29.1 28.6 28.0 28.1 28.4 28.7 28.2 27.9
## 2024 28.0 28.1 28.6 29.2 29.4 28.8 28.2 28.3 28.6 28.9 28.4 28.1
plot(suhu_ts,
     main = "Suhu Udara Rata-rata Bulanan Kota Cilegon (2023-2024)",
     ylab = "Suhu (\u00B0C)", xlab = "Tahun",
     type = "o", col = "darkred", pch = 16, lwd = 2)
grid()

Interpretasi Plot menunjukkan:

2: Hitung rata-rata dan variansi data per tahun. Apakah keduanya relatif stabil

rata_tahun    <- tapply(suhu, tahun, mean)
variansi_tahun <- tapply(suhu, tahun, var)

data.frame(
  Tahun    = names(rata_tahun),
  Rata2    = round(rata_tahun, 3),
  Variansi = round(variansi_tahun, 4)
)
##      Tahun  Rata2 Variansi
## 2023  2023 28.325   0.1784
## 2024  2024 28.550   0.2045

Interpretasi:

Karena perbedaan rata-rata dan variansi antar tahun kecil, kedua besaran ini dapat dikatakan relatif stabil, memberikan indikasi awal yang mendukung stasioneritas pada mean dan variansi.

3: Hitung dan plot ACF hingga lag 12. Apakah pola ACF turun cepat, lambat, atau berulang periodik?

Perhitungan manual (opsional, untuk verifikasi)

n    <- length(suhu)
Zbar <- mean(suhu)

acf_manual <- function(Z, k) {
  n   <- length(Z)
  num <- sum((Z[1:(n-k)] - mean(Z)) * (Z[(1+k):n] - mean(Z)))
  den <- sum((Z - mean(Z))^2)
  num / den
}

rk <- sapply(1:12, function(k) acf_manual(suhu, k))
names(rk) <- paste0("r", 1:12)
round(rk, 4)
##      r1      r2      r3      r4      r5      r6      r7      r8      r9     r10 
##  0.5405 -0.1946 -0.4994 -0.2503  0.1263  0.1747 -0.0559 -0.2895 -0.3097 -0.0336 
##     r11     r12 
##  0.3074  0.4303

Plot ACF menggunakan fungsi acf()

acf_result <- acf(suhu_ts, lag.max = 12,
                   main = "Correlogram Suhu Kota Cilegon (Lag 1-12)")

Interpretasi pola ACF:

  • Pola ACF tidak turun cepat ke nol di lag 2-3, dan tidak turun secara lambat/linear

  • ACF naik-turun berulang: tinggi di lag 1 (0,54) dan lag 12 (0,43)

  • Turun ke negatif di lag 3 (-0,50) dan lag 8-9 (sekitar -0,29 sampai -0,31)

  • Pola tersebut mengikuti siklus 12 bulan

  • Menunjukkan ciri khas data musiman, serupa dengan contoh curah hujan Kota Serang, hanya dengan amplitudo yang lebih kecil karena fluktuasi suhu tidak sedrastis curah hujan

4: Terapkan uji signifikansi 𝑟𝑘 dan Box-Pierce. Simpulkan apakah data ini dapat dikategorikan stasioner, dan jelaskan alasannya.

Uji Signifikansi \(r_k\) secara individual (taraf nyata 5%)

batas <- 1.96 / sqrt(n)
cat("Batas signifikansi (+/-):", round(batas, 4), "\n\n")
## Batas signifikansi (+/-): 0.4001
sig_table <- data.frame(
  Lag = 1:12,
  rk  = round(rk, 4),
  Signifikan = ifelse(abs(rk) > batas, "Ya", "Tidak")
)
sig_table
##     Lag      rk Signifikan
## r1    1  0.5405         Ya
## r2    2 -0.1946      Tidak
## r3    3 -0.4994         Ya
## r4    4 -0.2503      Tidak
## r5    5  0.1263      Tidak
## r6    6  0.1747      Tidak
## r7    7 -0.0559      Tidak
## r8    8 -0.2895      Tidak
## r9    9 -0.3097      Tidak
## r10  10 -0.0336      Tidak
## r11  11  0.3074      Tidak
## r12  12  0.4303         Ya

Interpretasi:

  • Batas signifikansi: ±0,40

  • Lag 1 (0,5405), lag 3 (-0,4994), dan lag 12 (0,4303) signifikan (Ya)

  • Lag 2, 4, 5, 6, 7, 8, 9, 10, 11 tidak signifikan (nilai masih di dalam batas ±0,40)

  • Hasil ini konsisten dengan pola ACF sebelumnya: autokorelasi kuat muncul di lag-lag yang berkaitan dengan siklus musiman

Uji Box-Pierce (m = 12)

box_test <- Box.test(suhu, lag = 12, type = "Box-Pierce")
box_test
## 
##  Box-Pierce test
## 
## data:  suhu
## X-squared = 27.653, df = 12, p-value = 0.006215
Q_manual <- n * sum(rk^2)
chi2_crit <- qchisq(0.95, df = 12)

cat("Q hitung  :", round(Q_manual, 3), "\n")
## Q hitung  : 27.653
cat("Chi-sq kritis (df=12, alpha=5%):", round(chi2_crit, 3), "\n")
## Chi-sq kritis (df=12, alpha=5%): 21.026
cat("Keputusan :", ifelse(Q_manual > chi2_crit,
                           "Tolak H0 (bukan white noise)",
                           "Gagal tolak H0 (white noise)"), "\n")
## Keputusan : Tolak H0 (bukan white noise)

Hipotesis:

  • \(H_0\): data bersifat white noise (tidak berautokorelasi)
  • \(H_1\): data tidak white noise (ada autokorelasi)

Karena \(Q \approx 27{,}65 > \chi^2_{0.95,12} \approx 21{,}03\) (p-value ≈ 0,006), maka tolak \(H_0\), jadi data ini bukan white noise, terdapat autokorelasi/pola musiman yang nyata.

Kesimpulan

Aspek Hasil
Uji r_k individual Lag 1 (0,5405), lag 3 (-0,4994), dan lag 12 (0,4303) signifikan (batas ±0,4001)
Uji Box-Pierce Q hitung (27,653) > Chi-sq kritis (21,026), p-value = 0,006 -> tolak H0

Kedua uji menunjukkan adanya autokorelasi yang signifikan, terutama di lag 1, 3, dan 12. Pola ini konsisten dengan siklus musiman (12 bulanan), bukan tanda non-stasioneritas pada mean atau variansi.

Karena rata-rata dan variansi tahunan (Soal 2) sebelumnya sudah relatif stabil, data suhu Kota Cilegon ini tetap dapat dikategorikan stasioner secara lemah (weak stationarity), meskipun mengandung komponen musiman yang nyata.