#Input Library yang akan digunakan
library(forecast)
## Warning: package 'forecast' was built under R version 4.3.3
## Registered S3 method overwritten by 'quantmod':
## method from
## as.zoo.data.frame zoo
library(ggplot2)
set.seed(123)
data = ts(rnorm(120), frequency = 12)
plot(data, main="Time Series Plot", ylab="Nilai", xlab="Waktu")

#Terlihat bahwa grafik menunjukkan fluktuasi yang cukup signifikan, dengan perubahan nilai yang cepat dan tajam pada beberapa titik. Ini menunjukkan adanya fluktuasi tinggi atau variabilitas dalam data yang terukur. Bisa jadi ini adalah data yang sangat tidak stabil atau mengandung banyak noise.
acf(data, main="ACF tanpa Differencing")

pacf(data, main="PACF tanpa Differencing")

#ACF
#Pada grafik ini, tampak bahwa korelasi pada lag pertama sangat tinggi, sementara korelasi pada lag lainnya relatif rendah atau mendekati nol. Hal ini menunjukkan bahwa ada ketergantungan jangka pendek yang kuat, tetapi korelasi jangka panjang antara nilai-nilai deret waktu ini sangat lemah atau tidak ada sama sekali. Nilai-nilai di bawah batas bawah (dalam grafik ini berupa garis putus-putus biru) menunjukkan bahwa korelasi pada lag-lag tersebut tidak signifikan.
#PACF
#Dalam grafik ini, nilai PACF pada lag pertama menunjukkan korelasi yang signifikan. Namun, setelah itu, tidak ada korelasi signifikan di lag-lag berikutnya (nilai PACF mendekati nol). Ini menunjukkan bahwa hanya lag pertama yang relevan dalam model deret waktu, dan setelah itu, pengaruh lag lebih tinggi tidak signifikan.
model <- arima(data, order=c(0,0,3), seasonal=list(order=c(0,0,3), period=12))
summary(model)
##
## Call:
## arima(x = data, order = c(0, 0, 3), seasonal = list(order = c(0, 0, 3), period = 12))
##
## Coefficients:
## ma1 ma2 ma3 sma1 sma2 sma3 intercept
## 0.0510 -0.1237 0.1382 -0.1041 0.0524 -0.0362 0.0140
## s.e. 0.0947 0.1054 0.0935 0.0980 0.0959 0.1298 0.0783
##
## sigma^2 estimated as 0.7589: log likelihood = -153.88, aic = 323.76
##
## Training set error measures:
## ME RMSE MAE MPE MAPE MASE
## Training set 0.0009640423 0.8711682 0.6979481 151.7217 166.0645 0.7159475
## ACF1
## Training set -0.01295148
#Model ARIMA(0, 0, 3) dengan komponen musiman SARIMA(0, 0, 3) memberikan gambaran yang baik tentang fluktuasi data dengan kesalahan yang relatif rendah, meskipun ada beberapa kesalahan besar yang terlihat dalam MAPE dan MPE. AIC dan log-likelihood menunjukkan bahwa model ini cukup baik, tetapi masih dapat diperbaiki untuk mengurangi kesalahan relatif lebih lanjut, khususnya dalam prediksi jangka panjang.
residuals = model$residuals
acf(residuals, main="ACF dari Residuals")

pacf(residuals, main="PACF dari Residuals")

#ACF
#Grafik ACF menunjukkan bahwa korelasi pada lag pertama sangat tinggi, namun setelah itu, korelasi turun dan mendekati nol. Hal ini mengindikasikan bahwa residual pada lag pertama memiliki keterkaitan yang lebih besar, tetapi setelah itu, tidak ada korelasi yang signifikan. Artinya, model sudah cukup baik dalam menangkap pola data asli, karena korelasi pada lag lebih tinggi menunjukkan adanya pola yang tidak tertangkap oleh model. Jika ACF menunjukkan korelasi yang tinggi di banyak lag, itu bisa berarti model ARIMA yang diterapkan belum cukup baik dan masih ada pola yang perlu ditangkap oleh model.
#PACF
#Grafik PACF menunjukkan nilai yang berfluktuasi, dengan beberapa lag yang memiliki korelasi yang cukup signifikan (baik positif maupun negatif). Beberapa nilai pada lag pertama hingga beberapa lag berikutnya menunjukkan bahwa ada pengaruh residual yang masih tersisa pada beberapa lag, meskipun sebagian besar berada dalam batas ketidakberartian (batas biru putus-putus). Ini mengindikasikan bahwa model belum sepenuhnya menangkap semua dinamika dalam data, dan ada beberapa lag yang masih memiliki pengaruh yang signifikan terhadap model residual.
forecasted_values = forecast(model, h=12)
plot(forecasted_values, main="Forecasting dengan Model ARIMA(0,0,3)(0,0,3)[12]")

#Penjelasan Elemen Grafik:
#Data Asli (Black Line)
#Garis hitam yang menunjukkan data asli dari deret waktu yang dianalisis. Data ini memiliki fluktuasi yang cukup besar dan menunjukkan pola yang tidak mudah diprediksi.
#Forecast (Blue Line)
#Garis biru menunjukkan hasil peramalan untuk periode yang akan datang. Dalam hal ini, garis biru melanjutkan pola data yang ada, mencerminkan proyeksi masa depan berdasarkan model ARIMA yang digunakan.
#Confidence Interval (Shaded Region)
#Area berbayang (shaded area) di sekitar garis biru menunjukkan interval kepercayaan (confidence interval) dari peramalan. Area ini menggambarkan rentang kemungkinan nilai yang dapat dicapai oleh peramalan, dengan interval yang lebih lebar menunjukkan ketidakpastian yang lebih besar. Semakin lebar area ini, semakin besar ketidakpastian dalam prediksi, terutama pada periode yang lebih jauh dari data historis.
#Model ARIMA(0, 0, 3)(0, 0, 3)[12]
#(0, 0, 3) menunjukkan bahwa model ini tidak menggunakan komponen autoregressive (AR) atau differencing (I), tetapi menggunakan 3 komponen moving average (MA) untuk bagian non-musiman. (0, 0, 3) untuk komponen musiman juga menunjukkan 3 komponen seasonal moving average (SMA), yang artinya model ini mengidentifikasi adanya pola musiman dengan periode 12 (misalnya, data tahunan atau bulanan).
#Periode Musiman [12]
#Periode musiman adalah 12, yang berarti data menunjukkan pola musiman dengan siklus tahunan atau bulanan, dan model ini menganggap ada pengulangan pola setiap 12 unit waktu.
ndiffs(data)
## [1] 0
differenced_data <- diff(data, differences=1)
#Karena order differencing = 0 maka tidak dilakukan diffrencing