1. Buat objek ts dan plot runtun waktu

# 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)" )

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

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.

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

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.

4a. uji signifikansi rk

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.

4b. Box Pierce

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.

Uji ADF

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.