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)
## Warning: package 'forecast' was built under R version 4.5.3
## Registered S3 methods overwritten by 'forecast':
## method from
## fitted.Arima TSA
## plot.Arima TSA
Coba bangkitkan data time series dengan model ARIMA(1,1,1) dengan nilai AR = 0.7 dan MA = -0.5 serta panjang data n = 200.
# Set seed untuk reprodusibilitas
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
Dikarenakan nilai p-value = 0.1578 > 0.05 sehingga disimpulkan data tidak stasioner dan harus dilakukan proses differencing.
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
Karena nilai p-value = 0.01 < 0.05 sehingga dapat disimpulkan data telah stasioner.
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
Penentuan Model Terbaik berdasar AIC
Kandidat Model ARIMA(1,1,1), ARIMA(0,1,1), ARIMA(0,0,0)
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(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(0,0,0), method="ML")
##
## Call:
## arima(x = data.ts, order = c(0, 0, 0), method = "ML")
##
## Coefficients:
## intercept
## -0.0155
## s.e. 0.0673
##
## sigma^2 estimated as 0.9066: log likelihood = -273.99, aic = 549.98
Berdasarkan hasil pemodelan, diperoleh model dengan nilai AIC terkecil adalah ARIMA(0,0,0), hal ini dikarenakan data yang terbaca adalah data hasil differencing. Diperoleh pembelajaran bahwa, data time series yang dibangkitkan dengan model tertentu, belum tentu akan sama dengan hasil pemodelan terbaiknya. Hal ini diduga karena adanya faktor-faktor lain yang mempengaruhi proses pemodelan.
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.
Membangkitkan data dengan parameter baru: AR = 0.5 dan MA = 0.4 dengan panjang data n = 200.
# Set seed untuk reprodusibilitas
set.seed(456)
n <- 200
# Parameter baru (berbeda dari contoh ar=0.7, ma=-0.5)
ar_new <- 0.5
ma_new <- 0.4
# Simulasi data ARIMA(1,1,1)
ts_simulasi <- arima.sim(model = list(order = c(1,1,1), ar = ar_new, ma = ma_new), n = n)
ts.plot(ts_simulasi, main = "Simulasi Data ARIMA(1,1,1) Baru")
acf(ts_simulasi)
pacf(ts_simulasi)
adf.test(ts_simulasi)
##
## Augmented Dickey-Fuller Test
##
## data: ts_simulasi
## Dickey-Fuller = -2.5155, Lag order = 5, p-value = 0.3602
## alternative hypothesis: stationary
Dikarenakan nilai p-value = 0.6539 > 0.05 sehingga disimpulkan data tidak stasioner dan harus dilakukan proses differencing.
diffs <- diff(ts_simulasi)
acf(diffs)
pacf(diffs)
adf.test(diffs)
## Warning in adf.test(diffs): p-value smaller than printed p-value
##
## Augmented Dickey-Fuller Test
##
## data: diffs
## Dickey-Fuller = -5.0627, Lag order = 5, p-value = 0.01
## alternative hypothesis: stationary
Karena nilai p-value = 0.01 < 0.05 sehingga dapat disimpulkan data telah stasioner.
data_ts <- ts(diffs)
head(data_ts)
## Time Series:
## Start = 1
## End = 6
## Frequency = 1
## [1] 1.0129714 2.0196510 3.0592447 0.7503886 1.7462286 3.3889931
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 o x 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 x o x 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
auto.arima(data_ts)
## Series: data_ts
## ARIMA(5,0,1) with zero mean
##
## Coefficients:
## ar1 ar2 ar3 ar4 ar5 ma1
## 1.2425 -0.5815 0.2023 -0.2500 0.1590 -0.3265
## s.e. 0.3876 0.3644 0.1584 0.1147 0.0771 0.3893
##
## sigma^2 = 0.9478: log likelihood = -275.9
## AIC=565.8 AICc=566.38 BIC=588.88
auto.arima(ts_simulasi)
## Series: ts_simulasi
## ARIMA(5,1,1)
##
## Coefficients:
## ar1 ar2 ar3 ar4 ar5 ma1
## 1.2425 -0.5815 0.2023 -0.2500 0.1590 -0.3265
## s.e. 0.3876 0.3644 0.1584 0.1147 0.0771 0.3893
##
## sigma^2 = 0.9478: log likelihood = -275.9
## AIC=565.8 AICc=566.38 BIC=588.88
Penentuan Model Terbaik berdasar AIC
Kandidat Model ARIMA(1,1,2), ARIMA(0,1,1), ARIMA(0,0,2)
arima(data_ts, order=c(1,1,2), method="ML")
##
## Call:
## arima(x = data_ts, order = c(1, 1, 2), method = "ML")
##
## Coefficients:
## ar1 ma1 ma2
## 0.5609 -0.6278 -0.3591
## s.e. 0.0829 0.0960 0.0892
##
## sigma^2 estimated as 0.9633: log likelihood = -279.94, aic = 565.89
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.1441
## s.e. 0.0835
##
## sigma^2 estimated as 1.178: log likelihood = -298.65, aic = 599.29
arima(data_ts, order=c(0,0,2), method="ML")
##
## Call:
## arima(x = data_ts, order = c(0, 0, 2), method = "ML")
##
## Coefficients:
## ma1 ma2 intercept
## 0.8620 0.2978 0.0281
## s.e. 0.0646 0.0582 0.1531
##
## sigma^2 estimated as 1.011: log likelihood = -285.3, aic = 576.59
Berdasarkan hasil perbandingan ketiga kandidat model menunjukkan bahwa model ARIMA(0,0,2) memiliki nilai AIC terendah yaitu 613.33. Meskipun data awalnya dibangkitkan menggunakan model ARIMA(1,1,1), hasil identifikasi akhir menunjukkan perbedaan yang disebabkan oleh pengaruh karakteristik data sampel, ukuran data, serta unsur acak dalam proses pembangkitan yang memengaruhi estimasi parameter secara empiris.