# Input data suhu
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 )
# Membuat objek time series
suhu_ts <- ts( suhu, start = c(2023, 1), frequency = 12 )
# Menampilkan objek time series
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 runtun waktu
plot( suhu_ts, type = "o", pch = 16, main = "Suhu Udara Rata-rata Bulanan Kota Cilegon", xlab = "Tahun", ylab = "Suhu (°C)" )
suhu_2023 <- window(
suhu_ts,
start = c(2023, 1),
end = c(2023, 12)
)
suhu_2024 <- window(
suhu_ts,
start = c(2024, 1),
end = c(2024, 12)
)
mean_2023 <- mean(suhu_2023)
mean_2024 <- mean(suhu_2024)
var_2023 <- var(suhu_2023)
var_2024 <- var(suhu_2024)
hasil_tahunan <- data.frame(
Tahun = c(2023, 2024),
Rata_rata = c(mean_2023, mean_2024),
Variansi = c(var_2023, var_2024)
)
hasil_tahunan
## Tahun Rata_rata Variansi
## 1 2023 28.325 0.1784091
## 2 2024 28.550 0.2045455
suhu Cilegon naik cuman sedikit dari tahun 2023 ke 2024, dari rata-rata 28,3°C jadi 28,55°C. Variansinya juga naik sedikit, dari 0,178 ke 0,204. Tapi kenaikan ini kecil banget, jadi bisa dibilang kondisi suhunya memang relatif stabil dari tahun ke tahun, tidak ada perubahan drastis.
acf(as.numeric(suhu_ts), lag.max = 12, main = "ACF Suhu Udara Kota Cilegon")
acf_hasil <- acf(
suhu_ts,
lag.max = 12,
plot = FALSE
)
acf_table <- data.frame(
Lag = 1:12,
ACF = as.numeric(acf_hasil$acf[2:13])
)
acf_table
## Lag ACF
## 1 1 0.54051342
## 2 2 -0.19464434
## 3 3 -0.49941185
## 4 4 -0.25034597
## 5 5 0.12631470
## 6 6 0.17471630
## 7 7 -0.05587462
## 8 8 -0.28951010
## 9 9 -0.30974952
## 10 10 -0.03355937
## 11 11 0.30739690
## 12 12 0.43025187
Kalau dilihat dari plot dan tabel ACF nya, nilainya tidak turun secara teratur, tapi naik turun bentuk gelombang. Lag 1 tinggi (0,54), kemudian turun hingga lag 3 (-0,49), terus naik lagi hingga lag 12 (0,43). Kenaikan pada lag 12 cukup penting karena data yang digunakan merupakan data bulanan. Lag 12 menunjukkan jarak satu tahun, sehingga hal ini dapat menjadi indikasi adanya pola musiman yang berulang setiap tahun.
Dari 12 lag yang diuji, hanya 3 lag yang signifikan, yaitu lag 1, lag 3, dan lag 12. Jadi, ACF menunjukkan adanya kecenderungan pola berulang yang mengarah pada unsur musiman.
n <- length(suhu_ts)
# Batas signifikansi 95%
batas <- 1.96 / sqrt(n)
batas
## [1] 0.4000833
rk <- as.numeric(acf_hasil$acf[2:13])
uji_rk <- data.frame(
Lag = 1:12,
r_k = rk,
Batas_Bawah = -batas,
Batas_Atas = batas
)
uji_rk$Keputusan <- ifelse(
abs(uji_rk$r_k) > batas,
"Signifikan",
"Tidak signifikan"
)
uji_rk
## Lag r_k Batas_Bawah Batas_Atas Keputusan
## 1 1 0.54051342 -0.4000833 0.4000833 Signifikan
## 2 2 -0.19464434 -0.4000833 0.4000833 Tidak signifikan
## 3 3 -0.49941185 -0.4000833 0.4000833 Signifikan
## 4 4 -0.25034597 -0.4000833 0.4000833 Tidak signifikan
## 5 5 0.12631470 -0.4000833 0.4000833 Tidak signifikan
## 6 6 0.17471630 -0.4000833 0.4000833 Tidak signifikan
## 7 7 -0.05587462 -0.4000833 0.4000833 Tidak signifikan
## 8 8 -0.28951010 -0.4000833 0.4000833 Tidak signifikan
## 9 9 -0.30974952 -0.4000833 0.4000833 Tidak signifikan
## 10 10 -0.03355937 -0.4000833 0.4000833 Tidak signifikan
## 11 11 0.30739690 -0.4000833 0.4000833 Tidak signifikan
## 12 12 0.43025187 -0.4000833 0.4000833 Signifikan
Dari 12 lag yang diuji dengan batas signifikansi 95% (±0,4001), terdapat 3 lag yang melewati batas tersebut, yaitu Lag 1 (0,54), Lag 3 (-0,49), dan Lag 12 (0,43). Sementara itu, 9 lag lainnya masih berada dalam batas signifikansi sehingga tidak menunjukkan autokorelasi yang signifikan. Hal ini menunjukkan adanya hubungan pada beberapa waktu tertentu, terutama pada Lag 1 dan Lag 12 yang menunjukkan keterkaitan antarperiode berdekatan dan pola tahunan.
box_pierce <- Box.test(
suhu_ts,
lag = 12,
type = "Box-Pierce"
)
box_pierce
##
## Box-Pierce test
##
## data: suhu_ts
## X-squared = 27.653, df = 12, p-value = 0.006215
Hipotesis:
H0: data bersifat white noise (tidak ada autokorelasi hingga lag k)
H1: data tidak bersifat white noise (ada autokorelasi hingga lag k)
Keputusan: Hasil uji menunjukkan X kuadrat sebesar 27,65 dengan p value 0,0062. Karena p value ini jauh lebih kecil dari 0,05, maka H0 ditolak
Kesimpulan: Data memiliki autokorelasi yang signifikan hingga lag 12, sehingga tidak dapat dikategorikan sebagai white noise.
library(tseries)
## Registered S3 method overwritten by 'quantmod':
## method from
## as.zoo.data.frame zoo
adf_test <- adf.test(suhu_ts)
adf_test
##
## Augmented Dickey-Fuller Test
##
## data: suhu_ts
## Dickey-Fuller = -2.6421, Lag order = 2, p-value = 0.3278
## alternative hypothesis: stationary
Hipotesis:
H0: data tidak stasioner (mengandung unit root)
H1: data stasioner
Keputusan: Hasil uji menunjukkan nilai Dickey Fuller sebesar -2,6421 dengan p value 0,3278. Karena p value ini jauh lebih besar dari 0,05, maka gagal tolak H0
Kesimpulan: Tidak cukup bukti untuk menyatakan bahwa data ini stasioner, sehingga data tetap dikategorikan sebagai tidak stasioner menurut uji ADF.
Apakah data ini dapat dikategorikan stasioner?, dan jelaskan alasannya!
Dari rata rata dan variansi tahunan sebenernya kelihatan datanya stabil, jadi sekilas dapat dianggap udah stasioner. Tapi begitu dicek pake ACF, ternyata ada pola musiman yang keliatan, apalagi lag 1 dan lag 12 nya sama sama signifikan. Uji Box Pierce juga nolak asumsi white noise, jadi semakin kuat kalau ada autokorelasi yang nyata di data ini.
Buat mastiin lagi biar tidak cuma ngandelin ACF sama Box Pierce, di tambahkan juga uji ADF sebagai penguat. Uji ADF menghasilkan p value 0,3278 yang jauh di atas 0,05, jadi gagal tolak H0, artinya emang data ini tidak stasioner. Dengan demikian, data suhu udara Kota Cilegon belum stasioner dan menunjukkan adanya pola musiman.