library(tseries)
## Warning: package 'tseries' was built under R version 4.5.3
## Registered S3 method overwritten by 'quantmod':
## method from
## as.zoo.data.frame zoo
library(TSA)
## Warning: package 'TSA' was built under R version 4.5.3
##
## Attaching package: 'TSA'
## The following objects are masked from 'package:stats':
##
## acf, arima
## The following object is masked from 'package:utils':
##
## tar
library(forecast)
## Registered S3 methods overwritten by 'forecast':
## method from
## fitted.Arima TSA
## plot.Arima TSA
set.seed(123)
# Panjang data
n <- 200
# Parameter ARIMA(p=1, d=1, q=1)
ar <- 0.7
# AR(1)
ma <- -0.5
# MA(1)
# Simulasi data
ts_arima <- arima.sim(model = list(order = c(1,1,1), ar = ar, ma = ma), n =
n)
# Plot
ts.plot(ts_arima, main = "Simulasi Data ARIMA(1,1,1)")
acf(ts_arima)
pacf(ts_arima)
adf.test(ts_arima)
##
## Augmented Dickey-Fuller Test
##
## data: ts_arima
## Dickey-Fuller = -2.449, Lag order = 5, p-value = 0.388
## alternative hypothesis: stationary
diff1 <- diff(ts_arima)
acf(diff1)
pacf(diff1)
adf.test(diff1)
## Warning in adf.test(diff1): p-value smaller than printed p-value
##
## Augmented Dickey-Fuller Test
##
## data: diff1
## Dickey-Fuller = -5.4572, Lag order = 5, p-value = 0.01
## alternative hypothesis: stationary
data.ts<-ts(diff1)
head(data.ts)
## Time Series:
## Start = 1
## End = 6
## Frequency = 1
## [1] -0.4362295 -1.1367886 -0.4798151 -1.2528876 -1.0929103 -1.0256309
acf(data.ts)
pacf(data.ts)
eacf(data.ts)
## AR/MA
## 0 1 2 3 4 5 6 7 8 9 10 11 12 13
## 0 x o o o o o o o o o o o o o
## 1 x o o o o o o o o o o o o o
## 2 x 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 o o o o o o o o o o o o o
## 6 x o o x o o o o o o o o o o
## 7 o x x x x o o o o o o o o o
auto.arima(data.ts)
## Series: data.ts
## ARIMA(2,0,2) with zero mean
##
## Coefficients:
## ar1 ar2 ma1 ma2
## -0.1116 0.6336 0.3108 -0.6250
## s.e. 0.2175 0.1701 0.2294 0.2122
##
## sigma^2 = 0.8631: log likelihood = -267.28
## AIC=544.57 AICc=544.88 BIC=561.06
auto.arima(ts_arima)
## Series: ts_arima
## ARIMA(2,1,2)
##
## Coefficients:
## ar1 ar2 ma1 ma2
## -0.1116 0.6336 0.3108 -0.6250
## s.e. 0.2175 0.1701 0.2294 0.2122
##
## sigma^2 = 0.8631: log likelihood = -267.28
## AIC=544.57 AICc=544.88 BIC=561.06
arima(data.ts, order=c(1,1,1), method="ML")
##
## Call:
## arima(x = data.ts, order = c(1, 1, 1), method = "ML")
##
## Coefficients:
## ar1 ma1
## 0.1488 -1.0000
## s.e. 0.0706 0.0164
##
## sigma^2 estimated as 0.8926: log likelihood = -273.56, aic = 551.13
arima(data.ts, order=c(1,1,3), method="ML")
##
## Call:
## arima(x = data.ts, order = c(1, 1, 3), method = "ML")
##
## Coefficients:
## ar1 ma1 ma2 ma3
## -0.8559 0.0335 -0.9642 -0.0693
## s.e. 0.0800 0.1018 0.0443 0.0772
##
## sigma^2 estimated as 0.8611: log likelihood = -270.25, aic = 548.49
arima(data.ts, order=c(0,1,1), method="ML")
##
## Call:
## arima(x = data.ts, order = c(0, 1, 1), method = "ML")
##
## Coefficients:
## ma1
## -0.9294
## s.e. 0.1078
##
## sigma^2 estimated as 0.93: log likelihood = -276.14, aic = 554.28
arima(data.ts, order=c(2,0,2), method="ML")
##
## Call:
## arima(x = data.ts, order = c(2, 0, 2), method = "ML")
##
## Coefficients:
## ar1 ar2 ma1 ma2 intercept
## -0.1096 0.6350 0.3087 -0.6269 -0.0214
## s.e. 0.2164 0.1692 0.2283 0.2112 0.0931
##
## sigma^2 estimated as 0.8456: log likelihood = -267.26, aic = 544.51
Lakukan simulasi pembangkitan data time series menggunakan model ARIMA(1,1,1) dengan nilai parameter AR dan MA yang berbeda dari contoh, kemudian lakukan seluruh tahapan pemodelan mulai dari identifikasi melalui plot ACF dan PACF, pengujian kestasioneran menggunakan ADF test, proses differencing, hingga penentuan kandidat model dan pemilihan model terbaik berdasarkan nilai AIC. Selanjutnya, bandingkan model hasil pembangkitan dengan model terbaik yang diperoleh dari proses pemodelan, kemudian jelaskan apakah keduanya sama atau berbeda serta berikan analisis mengenai kemungkinan penyebab perbedaan tersebut.
library(tseries)
library(TSA)
library(forecast)
# Reproduksibilitas
set.seed(456)
# Panjang data
n <- 200
# Parameter
ar <- 0.5
ma <- 0.3
# Simulasi data ARIMA(1,1,1)
ts_arima <- arima.sim(
model = list(order = c(1,1,1),
ar = ar,
ma = ma),
n = n)
# Plot data
ts.plot(ts_arima,
main="Simulasi Data ARIMA(1,1,1)",
ylab="Nilai")
acf(ts_arima,
main="ACF Data Awal")
pacf(ts_arima,
main="PACF Data Awal")
adf.test(ts_arima)
##
## Augmented Dickey-Fuller Test
##
## data: ts_arima
## Dickey-Fuller = -2.5036, Lag order = 5, p-value = 0.3652
## alternative hypothesis: stationary
diff1 <- diff(ts_arima)
ts.plot(diff1,
main="Data Setelah Differencing")
acf(diff1,
main="ACF Setelah Differencing")
pacf(diff1,
main="PACF Setelah Differencing")
adf.test(diff1)
## Warning in adf.test(diff1): p-value smaller than printed p-value
##
## Augmented Dickey-Fuller Test
##
## data: diff1
## Dickey-Fuller = -5.0984, Lag order = 5, p-value = 0.01
## alternative hypothesis: stationary
data.ts <- ts(diff1)
head(data.ts)
## Time Series:
## Start = 1
## End = 6
## Frequency = 1
## [1] 1.0461694 1.9051402 2.9031167 0.5069317 1.7685807 3.2054335
acf(data.ts)
acf(data.ts)
pacf(data.ts)
eacf(data.ts)
## AR/MA
## 0 1 2 3 4 5 6 7 8 9 10 11 12 13
## 0 x x o o o o o o o o o x x o
## 1 x x x x o o o o o o o o o o
## 2 x o x o o o o o o o o o o o
## 3 x x x o o o o o o o o o o o
## 4 x x x o o o o o o o o o o o
## 5 x o o x o o o o o o o o o o
## 6 x o o x o o o o o o o o o o
## 7 x o o x o o o o o o o o o o
auto.arima(ts_arima)
## Series: ts_arima
## ARIMA(3,1,3)
##
## Coefficients:
## ar1 ar2 ar3 ma1 ma2 ma3
## 1.6192 -1.4093 0.3985 -0.8142 0.5980 0.2433
## s.e. 0.1650 0.2112 0.1363 0.1716 0.1594 0.1298
##
## sigma^2 = 0.9429: log likelihood = -275.43
## AIC=564.86 AICc=565.44 BIC=587.95
fit1 <- arima(ts_arima,
order=c(1,1,1),
method="ML")
fit2 <- arima(ts_arima,
order=c(0,1,2),
method="ML")
fit3 <- arima(ts_arima,
order=c(2,1,1),
method="ML")
fit4 <- arima(ts_arima,
order=c(2,1,3),
method="ML")
fit5 <- arima(ts_arima,
order=c(3,1,3),
method="ML")
## Warning in stats::arima(x = x, order = order, seasonal = seasonal, xreg = xreg,
## : possible convergence problem: optim gave code = 1
AICs <- c(
fit1$aic,
fit2$aic,
fit3$aic,
fit4$aic,
fit5$aic
)
data.frame(
Model=c(
"ARIMA(1,1,1)",
"ARIMA(0,1,2)",
"ARIMA(2,1,1)",
"ARIMA(2,1,3)",
"ARIMA(3,1,3)"
),
AIC=AICs
)
## Model AIC
## 1 ARIMA(1,1,1) 562.6964
## 2 ARIMA(0,1,2) 573.1460
## 3 ARIMA(2,1,1) 562.1744
## 4 ARIMA(2,1,3) 561.9736
## 5 ARIMA(3,1,3) 562.8608
fit1
##
## Call:
## arima(x = ts_arima, order = c(1, 1, 1), method = "ML")
##
## Coefficients:
## ar1 ma1
## 0.5629 0.2569
## s.e. 0.0813 0.0950
##
## sigma^2 estimated as 0.9531: log likelihood = -279.35, aic = 562.7
fit2
##
## Call:
## arima(x = ts_arima, order = c(0, 1, 2), method = "ML")
##
## Coefficients:
## ma1 ma2
## 0.7617 0.2826
## s.e. 0.0662 0.0606
##
## sigma^2 estimated as 1.005: log likelihood = -284.57, aic = 573.15
fit3
##
## Call:
## arima(x = ts_arima, order = c(2, 1, 1), method = "ML")
##
## Coefficients:
## ar1 ar2 ma1
## 1.1712 -0.4395 -0.3554
## s.e. 0.2199 0.1505 0.2341
##
## sigma^2 estimated as 0.941: log likelihood = -278.09, aic = 562.17
fit4
##
## Call:
## arima(x = ts_arima, order = c(2, 1, 3), method = "ML")
##
## Coefficients:
## ar1 ar2 ma1 ma2 ma3
## 1.0183 -0.5456 -0.206 0.2095 0.2585
## s.e. 0.2568 0.1909 0.266 0.1062 0.1068
##
## sigma^2 estimated as 0.9209: log likelihood = -275.99, aic = 561.97
Data time series berhasil dibangkitkan menggunakan model ARIMA(1,1,1) dengan parameter AR = 0,5 dan MA = 0,3. Hasil uji ADF menunjukkan bahwa data awal tidak stasioner sehingga dilakukan differencing satu kali. Setelah differencing, data menjadi stasioner dan dapat dimodelkan menggunakan ARIMA. Berdasarkan identifikasi menggunakan ACF, PACF, EACF, serta perbandingan nilai AIC, diperoleh model terbaik yaitu ARIMA(2,1,3) dengan nilai AIC sebesar 561,9736. Model terbaik yang diperoleh berbeda dengan model pembangkitan, yang menunjukkan bahwa proses estimasi dipengaruhi oleh karakteristik sampel dan unsur acak dalam data simulasi.