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
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:
Pola naik-turun berulang tiap tahun (musiman)
Puncak: sekitar Mei
Titik terendah: sekitar Jan/Feb
Pola sama di 2023 dan 2024
Tidak ada tren jangka panjang (naik/turun terus)
Level suhu relatif stabil di kisaran 28–29°C
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:
Rata-rata naik dari 28,325°C (2023) ke 28,550°C (2024), selisih kecil (0,225°C)
Variansi naik dari 0,1784 (2023) ke 0,2045 (2024), selisih kecil (0,0261)
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.
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
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
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
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:
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.
| 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.