Data suhu udara rata-rata bulanan Kota Cilegon periode Januari 2023 hingga Desember 2024 (dalam \(^\circ\text{C}\)):
# Input data bulanan
suhu_2023 <- 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)
suhu_2024 <- c(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 <- c("Jan", "Feb", "Mar", "Apr", "Mei", "Jun", "Jul", "Agu", "Sep", "Okt", "Nov", "Des")
# Tabel data
tabel_suhu <- rbind("2023" = suhu_2023, "2024" = suhu_2024)
colnames(tabel_suhu) <- bulan
kable(tabel_suhu)
| Jan | Feb | Mar | Apr | Mei | Jun | Jul | Agu | Sep | Okt | Nov | Des | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 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 |
ts dan Plot Runtun WaktuObjek deret waktu (ts) dibuat dengan menggabungkan data
tahun 2023 dan 2024, dimulai dari Januari 2023 dengan frekuensi 12
(bulanan).
# Membuat objek time series
suhu_ts <- ts(c(suhu_2023, suhu_2024), start = c(2023, 1), frequency = 12)
# Membuat plot runtun waktu
plot(suhu_ts,
type = "o",
pch = 19,
col = "#1e40af",
lwd = 2,
ylim = c(27.5, 29.8),
main = "Runtun Waktu Suhu Udara Kota Cilegon (2023–2024)",
xlab = "Bulan",
ylab = "Suhu Udara (°C)",
xaxt = "n")
# Label sumbu X per bulan
waktu_label <- c("Jan 23", "Feb", "Mar", "Apr", "Mei", "Jun", "Jul", "Agu", "Sep", "Okt", "Nov", "Des",
"Jan 24", "Feb", "Mar", "Apr", "Mei", "Jun", "Jul", "Agu", "Sep", "Okt", "Nov", "Des")
axis(1, at = seq(2023, 2024 + 11/12, by = 1/12), labels = waktu_label, las = 2, cex.axis = 0.8)
grid(col = "#cbd5e1", lty = "dotted")
# Garis tren linear
abline(lm(suhu_ts ~ time(suhu_ts)), col = "#dc2626", lty = 2, lwd = 2)
# Legenda
legend("topleft", legend = c("Data Aktual", "Garis Tren"),
col = c("#1e40af", "#dc2626"), pch = c(19, NA), lty = c(1, 2), lwd = 2, bty = "n")
Dari grafik runtun waktu di atas terlihat bahwa: 1. Suhu udara rata-rata bulanan Kota Cilegon berfluktuasi antara \(27{,}8^\circ\text{C}\) hingga \(29{,}4^\circ\text{C}\). 2. Pola pergerakan suhu antar-tahun sangat konsisten dan berulang teratur: suhu terendah terjadi di awal tahun (Januari–Februari), kemudian meningkat mencapai puncak tertinggi pada bulan Mei (\(29{,}1^\circ\text{C}\) di 2023 dan \(29{,}4^\circ\text{C}\) di 2024), sedikit menurun di pertengahan tahun (Juli), lalu mengalami kenaikan sekunder di bulan Oktober (\(28{,}7^\circ\text{C}\) di 2023 dan \(28{,}9^\circ\text{C}\) di 2024). 3. Garis tren menunjukkan sedikit kemiringan positif yang sangat landai, di mana suhu tahun 2024 hanya bergeser naik tipis sekitar \(0{,}2^\circ\text{C}\) dibandingkan tahun 2023.
Perhitungan nilai rata-rata dan variansi data suhu udara untuk masing-masing tahun:
# Menghitung rata-rata dan variansi per tahun
tahun <- rep(2023:2024, each = 12)
rata_rata <- tapply(c(suhu_2023, suhu_2024), tahun, mean)
variansi <- tapply(c(suhu_2023, suhu_2024), tahun, var)
# Tabel ringkasan
ringkasan_tahunan <- data.frame(
Tahun = c("2023", "2024"),
Rata_Rata = round(rata_rata, 4),
Variansi = round(variansi, 4)
)
kable(ringkasan_tahunan)
| Tahun | Rata_Rata | Variansi | |
|---|---|---|---|
| 2023 | 2023 | 28.325 | 0.1784 |
| 2024 | 2024 | 28.550 | 0.2045 |
Apakah keduanya relatif stabil?
Ya, keduanya relatif sangat stabil.
Perhitungan fungsi autokorelasi (ACF) dan visualisasi correlogram hingga lag 12:
# Menghitung dan memplot ACF hingga lag 12
acf_suhu <- acf(suhu_ts, lag.max = 12,
main = "Correlogram (Plot ACF) Suhu Udara Kota Cilegon",
col = "#1e40af", lwd = 2)
grid(col = "#cbd5e1", lty = "dotted")
# Tabel nilai ACF
tabel_acf <- data.frame(
Lag = 0:12,
ACF = round(as.vector(acf_suhu$acf), 4)
)
kable(tabel_acf)
| Lag | ACF |
|---|---|
| 0 | 1.0000 |
| 1 | 0.5405 |
| 2 | -0.1946 |
| 3 | -0.4994 |
| 4 | -0.2503 |
| 5 | 0.1263 |
| 6 | 0.1747 |
| 7 | -0.0559 |
| 8 | -0.2895 |
| 9 | -0.3097 |
| 10 | -0.0336 |
| 11 | 0.3074 |
| 12 | 0.4303 |
Apakah pola ACF turun cepat, lambat, atau berulang periodik?
Pola ACF tersebut adalah berulang secara periodik (bergelombang / osilasi).
Alasannya: 1. Nilai ACF tidak langsung turun cepat menuju nol (seperti pada proses white noise murni). 2. Nilai ACF juga tidak meluruh sangat lambat secara linear dari 1 menuju 0 (bukan non-stasioner akibat tren kuat/akar unit). 3. Nilai ACF membentuk pola gelombang periodik yang khas: bernilai positif tinggi di lag 1 (\(0{,}5405\)), kemudian turun ke nilai negatif di lag 3 (\(-0{,}4994\)), berangsur naik kembali mendekati nol di sekitar lag 6, lalu berayun naik hingga kembali positif signifikan pada lag 12 (\(0{,}4303\)). Pola berulang tiap 12 lag ini mencerminkan adanya komponen musiman tahunan (periode 12 bulan) yang berulang secara teratur.
Pengujian signifikansi individual nilai \(r_k\) dilakukan dengan membandingkan nilai autokorelasi terhadap batas kritis \(\pm 1{,}96/\sqrt{n}\), di mana \(n = 24\) sehingga batas signifikansinya adalah \(\pm 1{,}96/\sqrt{24} \approx \pm 0{,}4001\).
# Uji signifikansi individual r_k
n <- length(suhu_ts)
batas_kritis <- 1.96 / sqrt(n)
r_k <- as.vector(acf_suhu$acf)[-1] # lag 1 sampai 12
uji_rk <- data.frame(
Lag = 1:12,
r_k = round(r_k, 4),
Batas_Kritis = round(batas_kritis, 4),
Signifikan = ifelse(abs(r_k) > batas_kritis, "Ya (Signifikan)", "Tidak")
)
kable(uji_rk)
| Lag | r_k | Batas_Kritis | Signifikan |
|---|---|---|---|
| 1 | 0.5405 | 0.4001 | Ya (Signifikan) |
| 2 | -0.1946 | 0.4001 | Tidak |
| 3 | -0.4994 | 0.4001 | Ya (Signifikan) |
| 4 | -0.2503 | 0.4001 | Tidak |
| 5 | 0.1263 | 0.4001 | Tidak |
| 6 | 0.1747 | 0.4001 | Tidak |
| 7 | -0.0559 | 0.4001 | Tidak |
| 8 | -0.2895 | 0.4001 | Tidak |
| 9 | -0.3097 | 0.4001 | Tidak |
| 10 | -0.0336 | 0.4001 | Tidak |
| 11 | 0.3074 | 0.4001 | Tidak |
| 12 | 0.4303 | 0.4001 | Ya (Signifikan) |
Uji Box-Pierce digunakan untuk menguji signifikansi autokorelasi hingga lag 12 secara serentak:
# Uji Box-Pierce pada lag 12
Box.test(suhu_ts, lag = 12, type = "Box-Pierce")
##
## Box-Pierce test
##
## data: suhu_ts
## X-squared = 27.653, df = 12, p-value = 0.006215
Hasil Uji Signifikansi \(r_k\): Terdapat 3 lag yang signifikan (menembus batas kritis \(\pm 0{,}4001\)), yaitu:
Hasil Uji Box-Pierce: Diperoleh nilai statistik \(X\text{-squared} = 27{,}653\) dengan \(df = 12\) dan \(p\text{-value} = 0{,}006215\). Karena \(p\text{-value} < 0{,}05\), maka keputusan adalah Tolak \(H_0\). Ini berarti data tidak bersifat white noise dan secara keseluruhan memiliki autokorelasi serial yang signifikan.
Kesimpulan Kestasioneran: > Data suhu udara Kota Cilegon dapat dikategorikan sebagai DATA STASIONER LEMAH (WEAKLY STATIONARY) DENGAN POLA MUSIMAN.
Alasannya: