# 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
)
ts <- ts(suhu, start = c(2023, 1), frequency = 12)
label_bulan = c(
"Jan-23", "Feb-23", "Mar-23", "Apr-23", "Mei-23", "Jun-23",
"Jul-23", "Agu-23", "Sep-23", "Okt-23", "Nov-23", "Des-23",
"Jan-24", "Feb-24", "Mar-24", "Apr-24", "Mei-24", "Jun-24",
"Jul-24", "Agu-24", "Sep-24", "Okt-24", "Nov-24", "Des-24"
)
plot(
ts,
type = "o",
pch = 16,
main = "Suhu Udara Rata-rata Bulanan Kota Cilegon",
xlab = "Bulan",
ylab = "Suhu(°C)",
xaxt = "n"
)
axis(1, at = time(ts), labels = label_bulan, las = 2)
abline(v = 2023.91667, col = "gray30", lwd = 2)
mtext("2023", side = 3, at = 2023.4, col = "gray30", font = 2)
mtext("2024", side = 3, at = 2024.4, col = "gray30", font = 2)
Dari plot time series menunjukkan bahwa suhu rata-rata bulanan Kota Cilegon memiliki pola yang hampir sama di tahun 2023 dan 2024.`Suhu cenderung meningkat pada awal tahun hingga sekitar bulan April - Mei dan menurun setelah bulan tersebut. kemudian suhu menurun pada pertengahan tahun, dan mengalami kenaikan kembali sekitar bulan September–Oktober, dan kembali menurun menjelang akhir tahun. Pola tahun 2024 berada sedikit lebih tinggi dibandingkan tahun 2023.
suhu_2023 <- window(
ts,
start = c(2023, 1),
end = c(2023, 12)
)
suhu_2024 <- window(
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
Rata-rata suhu pada tahun 2023 sebesar 28,325°C, sedangkan pada tahun 2024 rata-rata suhu sebesar 28,550°C. Ini menunjukkan adanya peningkatan rata-rata suhu sebesar 0,225°C pada tahun 2024. Variansi suhu tahun 2023 sebesar 0,1784 dan tahun 2024 sebesar 0,2045.
# No 3
acf(
ts,
lag.max = 12,
main = "ACF Suhu Udara Kota Cilegon"
)
acf_hasil <- acf(
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
Plot ACF menunjukkan bahwa nilai autokoreelasi tidka mengalami penurunan secara cepat maupun lambat mendekati nol. Nilai ACF berubah dari positif ke negatif dan kemudia kembali naik menjadi positif.
# No 4a
n <- length(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
# No 4b
box_pierce <- Box.test(
ts,
lag = 12,
type = "Box-Pierce"
)
box_pierce
##
## Box-Pierce test
##
## data: ts
## X-squared = 27.653, df = 12, p-value = 0.006215
Berdasarkan uji signifikansi autokorelasi, terdapat 3 lag yang memiliki rk di luar batas ±0,4001, yaitu lag ke-1, ke-3 dan ke-12. dengan demikian, terdapat, auto korelasi yang signifikan pada ketiga lag tersebut. Signifikansi pada lag ke-12 juga memperkuat indikasi adanya pola musiman tahunan pada data suhu.
Berdasarkan uji Box-Pierce diperoleh nilai statistik uji sebesar 27,653 dengan p-value sebesar 0,006215. Karena p-value lebih kecil dari taraf signifikansi 0,05, maka \(H_0\) ditolak. Artinya, secara bersamaan masih terdapat autokorelasi yang signifikan hingga lag ke-12 sehingga data bukan merupakan deret yang bersifat acak atau white noise.
library(tseries)
## Registered S3 method overwritten by 'quantmod':
## method from
## as.zoo.data.frame zoo
hasil_adf <- adf.test(
ts,
alternative = "stationary"
)
hasil_adf
##
## Augmented Dickey-Fuller Test
##
## data: ts
## Dickey-Fuller = -2.6421, Lag order = 2, p-value = 0.3278
## alternative hypothesis: stationary
# Keputusan ADF
if (hasil_adf$p.value < 0.05) {
cat(
"p-value =", hasil_adf$p.value,
"\nKeputusan: Tolak H0",
"\nKesimpulan: Data stasioner."
)
} else {
cat(
"p-value =", hasil_adf$p.value,
"\nKeputusan: Gagal menolak H0",
"\nKesimpulan: Data belum stasioner."
)
}
## p-value = 0.3277814
## Keputusan: Gagal menolak H0
## Kesimpulan: Data belum stasioner.
Hasil uji ADF menunjukkan bahwa data belum stasioner, meskipun rata-rata dan variansi tahunan terlihat relatif stabil. Hal ini berarti kestabilan secara visual dan deskriptif belum cukup untuk menyimpulkan stasioneritas secara formal. Dengan p-value sebesar 0,3278, belum terdapat bukti yang cukup untuk menyatakan bahwa data sudah stasioner.