SOAL

Berikut data suhu udara rata-rata bulanan kota Cilegon periode Januari 2023 - Desember 2024 (°C), Tentukan:

  1. Buat objek ts dan plot runtun waktu dari data suhu tersebut.
  2. Hitung rata-rata dan variansi data per tahun. Apakah keduanya relatif stabil?
  3. Hitung dan plot ACF hingga lag 12. Apakah pola ACF turun cepat, lambat, atau berulang periodik?
  4. Terapkan uji signifikansi 𝑟𝑘 dan Box-Pierce. Simpulkan apakah data ini dapat dikategorikan stasioner, dan jelaskan alasannya
#1. Membuat objek timeseries dan plot runtun waktu dari data suhu tersebut:

#import data
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 data menjadi time series bulanan
ts.suhu <- ts(suhu, start = c(2023, 1), frequency = 12)

print(ts.suhu)
##       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(ts.suhu,
     main = "Runtun Waktu Suhu Udara Kota Cilegon",
     xlab = "Tahun",
     ylab = "Suhu (°C)",
     type = "o")

Berdasarkan grafiknya, suhu udara Kota Cilegon selama tahun 2023–2024 mengalami pola naik dan turun setiap bulannya. Terlihat adanya pola yang berulang setiap tahun.

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

#memisahkan data tahun 2023 dan 2024
suhu2023 <- window(ts.suhu, start = c(2023, 1), end = c(2023, 12))
suhu2024 <- window(ts.suhu, start = c(2024, 1), end = c(2024, 12))

#rata-rata
mean2023 <- mean(suhu2023)
mean2024 <- mean(suhu2024)

#variansi 
var2023 <- var(suhu2023)
var2024 <- var(suhu2024)

cat("Rata-rata Tahun 2023:", mean2023)
## Rata-rata Tahun 2023: 28.325
cat("Rata-rata Tahun 2024:", mean2024)
## Rata-rata Tahun 2024: 28.55
cat("Varians Tahun 2023:", var2023)
## Varians Tahun 2023: 0.1784091
cat("Varians Tahun 2024:", var2024)
## Varians Tahun 2024: 0.2045455

Rata-rata suhu tahun 2023 sebesar 28,325°C, sedangkan tahun 2024 sebesar 28,55°C. Variansinya juga relatif kecil, yaitu 0,178 pada 2023 dan 0,205 pada 2024. Jadi, rata-rata dan variansi suhu antar tahun relatif stabil, meskipun tahun 2024 sedikit lebih tinggi dan lebih bervariasi.

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

#menghitung ACF sampai lag 12
acf.suhu <- acf(ts.suhu,
                lag.max = 12,
                main = "ACF Suhu Udara Kota Cilegon")

#melihat hasil perhitungan ACF:
data.acf <- data.frame(
  Lag = 0:12,
  ACF = as.numeric(acf.suhu$acf[1:13])
)

data.acf
##    Lag         ACF
## 1    0  1.00000000
## 2    1  0.54051342
## 3    2 -0.19464434
## 4    3 -0.49941185
## 5    4 -0.25034597
## 6    5  0.12631470
## 7    6  0.17471630
## 8    7 -0.05587462
## 9    8 -0.28951010
## 10   9 -0.30974952
## 11  10 -0.03355937
## 12  11  0.30739690
## 13  12  0.43025187

Lag 0 memiliki nilai ACF sebesar 1 karena merupakan korelasi data dengan dirinya sendiri. Untuk lag 1–12, nilai ACF berfluktuasi dari positif ke negatif, dengan nilai cukup tinggi pada lag 1 sebesar 0,541 dan kembali meningkat pada lag 12 sebesar 0,430. Hal ini menunjukkan adanya autokorelasi serta indikasi pola musiman tahunan.

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

#a. uji signifikansi 𝑟𝑘:
n <- length(ts.suhu)

#batas signifikansi ACF
batas <- 1.96 / sqrt(n)
cat("Batas Signifikansi:", batas)
## Batas Signifikansi: 0.4000833
#membuat tabel nilai ACF dan status signifikansinya:
nilai.acf <- as.numeric(acf.suhu$acf[2:13])

hasil.acf <- data.frame(
  Lag = 1:12,
  ACF = nilai.acf,
  Batas = batas
)

hasil.acf$Signifikan <- ifelse(
  abs(hasil.acf$ACF) > batas,
  "Signifikan",
  "Tidak signifikan"
)

print(hasil.acf)
##    Lag         ACF     Batas       Signifikan
## 1    1  0.54051342 0.4000833       Signifikan
## 2    2 -0.19464434 0.4000833 Tidak signifikan
## 3    3 -0.49941185 0.4000833       Signifikan
## 4    4 -0.25034597 0.4000833 Tidak signifikan
## 5    5  0.12631470 0.4000833 Tidak signifikan
## 6    6  0.17471630 0.4000833 Tidak signifikan
## 7    7 -0.05587462 0.4000833 Tidak signifikan
## 8    8 -0.28951010 0.4000833 Tidak signifikan
## 9    9 -0.30974952 0.4000833 Tidak signifikan
## 10  10 -0.03355937 0.4000833 Tidak signifikan
## 11  11  0.30739690 0.4000833 Tidak signifikan
## 12  12  0.43025187 0.4000833       Signifikan
#b. uji Box-Pierce
# Uji Box-Pierce sampai lag 12
box.test <- Box.test(ts.suhu,
                     lag = 12,
                     type = "Box-Pierce")

box.test
## 
##  Box-Pierce test
## 
## data:  ts.suhu
## X-squared = 27.653, df = 12, p-value = 0.006215
#c. uji stasioneritas (Dickey-Fuller)

library(tseries)
## Registered S3 method overwritten by 'quantmod':
##   method            from
##   as.zoo.data.frame zoo
adf.test(ts.suhu)
## 
##  Augmented Dickey-Fuller Test
## 
## data:  ts.suhu
## Dickey-Fuller = -2.6421, Lag order = 2, p-value = 0.3278
## alternative hypothesis: stationary
#atau menggunakan
library(urca)

uji.adf <- ur.df(ts.suhu, type = "none", lags = 2)
summary(uji.adf)
## 
## ############################################### 
## # Augmented Dickey-Fuller Test Unit Root Test # 
## ############################################### 
## 
## Test regression none 
## 
## 
## Call:
## lm(formula = z.diff ~ z.lag.1 - 1 + z.diff.lag)
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -0.49008 -0.20188  0.04623  0.16786  0.49602 
## 
## Coefficients:
##               Estimate Std. Error t value Pr(>|t|)    
## z.lag.1      0.0003946  0.0022362   0.176 0.861904    
## z.diff.lag1  0.6402176  0.1656333   3.865 0.001134 ** 
## z.diff.lag2 -0.7112845  0.1730099  -4.111 0.000656 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.2891 on 18 degrees of freedom
## Multiple R-squared:  0.5651, Adjusted R-squared:  0.4926 
## F-statistic: 7.797 on 3 and 18 DF,  p-value: 0.001528
## 
## 
## Value of test-statistic is: 0.1765 
## 
## Critical values for test statistics: 
##       1pct  5pct 10pct
## tau1 -2.66 -1.95  -1.6

Berdasarkan uji signifikansi \(r_k\), terdapat autokorelasi signifikan pada beberapa lag, yaitu lag 1, 3, dan 12. Hasil tersebut kemudian diperkuat oleh uji Box-Pierce yang menunjukkan bahwa data masih memiliki autokorelasi secara keseluruhan. Selanjutnya, berdasarkan uji ADF menggunakan dua pendekatan, keduanya memberikan kesimpulan yang sama, yaitu data suhu Kota Cilegon tidak stasioner. Pada adf.test() diperoleh \(\tau=-2,6421\) dengan p-value 0,3278, sedangkan pada ur.df() diperoleh \(\tau=0,1765\), yang lebih besar dari nilai kritis McKinnon 5% sebesar -1,95. Dengan demikian, meskipun nilai statistik kedua model berbeda karena spesifikasi pengujiannya berbeda, kesimpulan keduanya tetap sama bahwa data belum stasioner.