Model ARIMA
Tugas Minggu 12 Model ARIMA
Data
Data yang digunakan dalam tugas ini adalah data time series yang digenerate berdasarkan model ARIMA(2,2,2) dengan \(\phi_1=0.5\), \(\phi_2=-0.7\), \(\theta_1=-0.3\), \(\theta_2=-0.5\), dan \(e_t \sim \mathcal{N}(0, 1.01)\).
Sehingga model yang terbentuk adalah \[ \scriptstyle \begin{aligned} \phi_p(B)(1-B)^dY_t &= \mu+\theta_q(B)e_t \\ \phi_2(B)(1-B)^2Y_t &= \mu+\theta_2(B)e_t \\ (1-\phi_1B-\phi_2B^2)(1-2B+B^2)Y_t &= \mu+(1-\theta_1B-\theta_2B)e_t \\ (1-(2+\phi_1)B+(1+2\phi_1-\phi_2)B^2-(\phi_1-2\phi_2)B^3-\phi_2B^4)Y_t &= \mu+e_t-\theta_1e_{t-1}-\theta_2e_{t-2} \\ Y_t-(2+\phi_1)Y_{t-1}+(1+2\phi_1-\phi_2)Y_{t-2}-(\phi_1-2\phi_2)Y_{t-3}-\phi_2Y_{t-4} &= \mu+e_t-\theta_1e_{t-1}-\theta_2e_{t-2} \\ Y_t-2.5Y_{t-1}+2.7Y_{t-2}-1.9Y_{t-3}+0.7Y_{t-4} &= \mu+e_t+0.3e_{t-1}+0.5e_{t-2} \\ Y_t &= \mu+e_t+2.5Y_{t-1}-2.7Y_{t-2}+1.9Y_{t-3}-0.7Y_{t-4}+0.3e_{t-1}+0.5e_{t-2} \\ \end{aligned} \] Kemudian data digenerate berdasarkan model yang terbentuk. Kemudian 50 data pertama dibuang dan diambil data yang ke 51-200 untuk analisis.
set.seed(123)
n <- 200
# Parameter
phi1 <- 0.5
phi2 <- -0.7
teta1 <- -0.3
teta2 <- -0.5
ar <- numeric(4)
ar[1] <- phi1 + 2
ar[2] <- phi2 - 2*phi1 - 1
ar[3] <- phi1 - 2*phi2
ar[4] <- phi2
ma <- numeric(2)
ma[1] <- -teta1
ma[2] <- -teta2
et <- rnorm(n, mean = 0, sd = sqrt(1.01))
Yt <- numeric(n)
for (t in 5:n) {
Yt[t] <- ar[1] * Yt[t-1] +
ar[2] * Yt[t-2] +
ar[3] * Yt[t-3] +
ar[4] * Yt[t-4] +
et[t] +
ma[1] * et[t-1] +
ma[2] * et[t-2]
}
# Buang 50 data pertama
data <- ts(Yt[-(1:50)])
# Plot data
plot(data, type="l", col="blue",
main="Time Series Data",
ylab="Y_t", xlab="Waktu")Splitting Data
Sebelum dilakukan analisis lebih lanjut, dilakukan splitting data terlebih dahulu yaitu dengan membagi data menjadi dua bagian bagian pertama yaitu sebagai data training sebesar 80% dan bagian kedua sebagai data testing sebesar 20%.
Uji Stasioner
Uji stasioner dilakukan menggunakan uji Augmented Dickey-Fuller (ADF) dengan hipotesis sebagai berikut: \(H_0\) : Data tidak stasioner
\(H_1\) : Data stasioner
##
## Augmented Dickey-Fuller Test
##
## data: train
## Dickey-Fuller = -2.3354, Lag order = 4, p-value = 0.4373
## alternative hypothesis: stationary
Berdasarkan hasil uji ADF diperoleh nilai p-value = 0.4373 > 0.05, maka terima \(H_0\) artinya data tidak stasioner. Sehingga perlu dilakukan differencing.
Differencing
##
## Augmented Dickey-Fuller Test
##
## data: d1
## Dickey-Fuller = -1.7984, Lag order = 4, p-value = 0.6603
## alternative hypothesis: stationary
Setelah dilakukan differencing orde 1, diperoleh nilai p-value = 0.66 > 0.05, maka data masih belum stasioner. Sehingga dilanjutkan differencing orde 2.
## Warning in adf.test(d2): p-value smaller than printed p-value
##
## Augmented Dickey-Fuller Test
##
## data: d2
## Dickey-Fuller = -4.2162, Lag order = 4, p-value = 0.01
## alternative hypothesis: stationary
Setelah dilakukan differencing orde 2, diperoleh nilai p-value = 0.01 < 0.05, maka data sudah stasioner.
Identifikasi Kandidat Model
Identifikasi kandidat model diperoleh berdasarkan nilai \(p\) dan \(q\) dimana nilai \(d=0\).
Berdasarkan plot ACF model yang diperoleh adalah \(ARIMA(2,0,0)\)
Berdasarkan plot PACF model yang diperoleh adalah \(ARIMA(2,0,0)\).
## AR/MA
## 0 1 2 3 4 5 6 7 8 9 10 11 12 13
## 0 x o x x o x o o o o o o o o
## 1 x x x x x x o o o o o o o o
## 2 o x o o o o o o o o o o o o
## 3 x x o o o o o o o o o o o o
## 4 x x o o o o o o o o o o o o
## 5 x x o o o o o o o o o o o o
## 6 x x o o o o o o o o o o o o
## 7 x o o o o o o o o o o o o o
knitr::include_graphics("C:/Users/User/OneDrive/Dokumen/SEMESTER 6/Topik Statistika I/plot.eacf.png")Berdasarkan hasil EACF model yang diperoleh adalah \(ARIMA(2,0,2)\), \(ARIMA(2,0,3)\), \(ARIMA(3,0,2)\), \(ARIMA(3,0,3)\).
Karena data yang digunakan sudah stasioner maka \(d=0\). Oleh karena itu dapat ditentukan beberapa kandidat model yaitu \(ARIMA(2,0,0)\), \(ARIMA(2,0,2)\), \(ARIMA(2,0,3)\), \(ARIMA(3,0,2)\), dan \(ARIMA(3,0,3)\).
##
## Call:
## arima(x = d2, order = c(2, 0, 0), include.mean = TRUE, method = "ML")
##
## Coefficients:
## ar1 ar2 intercept
## 0.7566 -0.5476 -0.0325
## s.e. 0.0777 0.0772 0.1151
##
## sigma^2 estimated as 0.9712: log likelihood = -166.21, aic = 338.41
##
## Call:
## arima(x = d2, order = c(2, 0, 2), include.mean = TRUE, method = "ML")
##
## Coefficients:
## ar1 ar2 ma1 ma2 intercept
## 0.6972 -0.7064 -0.0006 0.3732 -0.0287
## s.e. 0.1220 0.0893 0.1449 0.1329 0.1204
##
## sigma^2 estimated as 0.9226: log likelihood = -163.29, aic = 336.58
##
## Call:
## arima(x = d2, order = c(2, 0, 3), include.mean = TRUE, method = "ML")
##
## Coefficients:
## ar1 ar2 ma1 ma2 ma3 intercept
## 0.6866 -0.7534 0.0276 0.4222 0.0848 -0.0286
## s.e. 0.1209 0.1157 0.1572 0.1561 0.1582 0.1271
##
## sigma^2 estimated as 0.9202: log likelihood = -163.15, aic = 338.29
##
## Call:
## arima(x = d2, order = c(3, 0, 2), include.mean = TRUE, method = "ML")
##
## Coefficients:
## ar1 ar2 ar3 ma1 ma2 intercept
## 0.8267 -0.8322 0.0977 -0.1198 0.4073 -0.0284
## s.e. 0.3237 0.2991 0.2266 0.3095 0.1522 0.1254
##
## sigma^2 estimated as 0.9211: log likelihood = -163.2, aic = 338.4
##
## Call:
## arima(x = d2, order = c(3, 0, 3), include.mean = TRUE, method = "ML")
##
## Coefficients:
## ar1 ar2 ar3 ma1 ma2 ma3 intercept
## -0.1776 -0.1503 -0.6166 0.9280 0.4142 0.4324 -0.0313
## s.e. 0.1520 0.1390 0.0987 0.1688 0.2099 0.1245 0.1240
##
## sigma^2 estimated as 0.8891: log likelihood = -161.37, aic = 336.73
AICKandidatModel <- c(353.73, 351.9, 353.61, 353.72, 352.05)
KndidatModelARIMA <- c("ARIMA(2,0,0)", "ARIMA(2,0,2)", "ARIMA(2,0,3)", "ARIMA(3,0,2)", "ARIMA(3,0,3)")
compmodelARIMA <- cbind(KndidatModelARIMA, AICKandidatModel)
colnames(compmodelARIMA) <- c("Kandidat Model", "Nilai AIC")
compmodelARIMA <- as.data.frame(compmodelARIMA)
compmodelARIMA## Kandidat Model Nilai AIC
## 1 ARIMA(2,0,0) 353.73
## 2 ARIMA(2,0,2) 351.9
## 3 ARIMA(2,0,3) 353.61
## 4 ARIMA(3,0,2) 353.72
## 5 ARIMA(3,0,3) 352.05
Model terbaik adalah model dengan nilai AIC terkecil yaitu model \(ARIMA(2,0,2)\), maka diperoleh \(Y_t\) dari penjabaran operator backshift dari model \(ARIMA(2,0,2)\) adalah \[ \scriptstyle \begin{aligned} \phi_p(B)(1-B)^dY_t &= \mu+\theta_q(B)e_t \\ \phi_2(B)(1-B)^0Y_t &= \mu+\theta_2(B)e_t \\ (1-\phi_1B-\phi_2B^2)(1)Y_t &= \mu+(1-\theta_1B-\theta_2B)e_t \\ Y_t-\phi_1Y_{t-1}-\phi_2Y_{t-2} &= \mu+e_t-\theta_1e_{t-1}-\theta_2e_{t-2}\\ Y_t &= \mu +e_t+\phi_1Y_{t-1}+\phi_2Y_{t-2}-\theta_1e_{t-1}-\theta_2e_{t-2}\\ \end{aligned} \]
Penduga parameter \(\hat{\mu}=-0.0306\), \(\hat{\phi_1}=0.6972\), \(\hat{\phi_2}=-0.7064\), \(\hat{\theta_1}=-0.0006\), \(\hat{\theta_2}=0.3732\) dengan nilai dugaan \(\sigma_e^2\) sebesar 1.05. Sehingga model yang diperoleh adalah \[ \begin{aligned} Y_t &= -0.0306+0.6972Y_{t-1}-0.7064Y_{t-2}+0.0006e_{t-1}-0.3732e_{t-2}+e_t\\ \end{aligned} \]
Diagnostik Model
ARIMA202diag <- stats::arima(d2, order = c(2,0,2), method = "ML")
forecast::checkresiduals(ARIMA202diag)## Registered S3 methods overwritten by 'forecast':
## method from
## fitted.Arima TSA
## plot.Arima TSA
##
## Ljung-Box test
##
## data: Residuals from ARIMA(2,0,2) with non-zero mean
## Q* = 1.5853, df = 6, p-value = 0.9536
##
## Model df: 4. Total lags used: 10
Berdasarkan plot ACF dan PACF terlihat bahwa tidak ada lag yang signifikan. Hal tersebut menunjukkan bahwa tidak ada gejala autokorelasi pada sisaan.
Uji Formal Normalitas Data
\(H_0\) : sisaan menyebar normal
\(H_1\) : sisaan tidak menyebar normal
##
## Asymptotic one-sample Kolmogorov-Smirnov test
##
## data: sisaan
## D = 0.049117, p-value = 0.9384
## alternative hypothesis: two-sided
Berdasarkan hasil uji formal normalitas diperoleh nilai \(p-value=0.9979>0.05\), maka terima \(H_0\) artinya sisaan menyebar normal.
Uji Nilai Tengah Sisaan
\(H_0\) : \(\mu=0\)
\(H_1\) : \(\mu\neq0\)
##
## One Sample t-test
##
## data: sisaan
## t = 0.032496, df = 117, p-value = 0.9741
## alternative hypothesis: true mean is not equal to 0
## 95 percent confidence interval:
## -0.1729765 0.1787476
## sample estimates:
## mean of x
## 0.00288558
Berdasarkan hasil uji nilai tengah sisaan diperoleh nilai \(p-value=0.9741>0.05\), maka terima \(H_0\) artinya nilai tengah sisaan sama dengan 0.
Uji Autokorelasi
\(H_0\) : tidak ada autokorelasi
\(H_1\) : terdapat autokorelasi
##
## Box-Ljung test
##
## data: sisaan
## X-squared = 8.7533, df = 23, p-value = 0.9967
Berdasarkan hasil uji autokorelasi diperoleh nilai \(p-value=0.9967>0.05\), maka terima \(H_0\) artinya tidak ada gejala autokorelasi.
Kesimpulan
Sehingga dapat disimpulkan bahwa semua asumsi terpenuhi