Berikut data suhu udara rata-rata bulanan kota Cilegon periode Januari 2023 - Desember 2024 (°C), Tentukan:
#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.