penerapan model arima ii...2020/03/07 · nilai p dan q dari model arima( p , d, q ) uji...
TRANSCRIPT
Dr. Kusman Sadik, M.Si
Sekolah Pascasarjana Departemen Statistika IPB
Semester Genap 2019/2020
Analisis Deret Waktu (STK651)
IPB University─ Bogor Indonesia ─ Inspiring Innovation with Integrity
Penerapan Model ARIMA – II(Uji Diagnostik, Peramalan, dan AUTO.ARIMA)
1. Lakukan proses pembedaan (differencing) sebanyak
dua kali pada data asal Yt sehingga menjadi Wt
dengan persamaan Wt = (1 – B)2Yt.
2. Lakukan pendugaan parameter dengan model AR(1)
berdasarkan data yang yang sudah di-differencing
pada poin (1) di atas yaitu Wt.
2
Analisis Sisaan
Analisis diagnostik dilakukan terhadap sisaan, yang mana
Sisaan = Nilai Aktual – Nilai Prediksi.
Apabila model ARIMA(p, d, q) benar dan dugaan parameter
sangat dekat ke nilai yang sebenarnya maka sisaan akan
memiliki sifat seperti yang diasumsikan pada et, yaitu:
menyebar bebas (independent) dan identik
et ~ N(0, e2)
3
Pemeriksaan asumsi tersebut dapat dilakukan secara deskriptif
maupun analitik. Secara deskriptif dapat dilakukan sebagai
berikut:
Kebebasan / independent : plot te dengan t
Kenormalan / normality : plot te dengan normal score
(quantile-quantile plot)
4
Uji Ljung-Box-Pierce (modified Box-Pierce)
Secara analitik, uji ini dapat digunakan untuk memeriksa asumsi
kebebasan antar et (independence) berdasarkan autokorelasi
pada et.
H0 : antar et tidak berkorelasi (bebas)
H1 : antar et berkorelasi
Apabila H0 diterima maka dapat dikatakan bahwa model
ARIMA yang digunakan adalah layak.
5
H0 : antar et tidak berkorelasi (bebas)
H1 : antar et berkorelasi
Q* =
K
k
ke
kn
rnn
1
2
)(ˆ
)2(
n = banyaknya data sisaan, te
)(ˆ
ker = autokorelasi te dengan kte ˆ
Tolak H0 jika Q* > 2(db = K – p – q)
Nilai p dan q dari model ARIMA(p, d, q)
Uji Ljung-Box-Pierce (modified Box-Pierce)
6
Overfitting
Diagnostik model dapat pula dilakukan melalui overfitting.
Misalnya : Jika teridentifikasi AR(2) mungkin bisa dilakukan
overfitting dengan AR(3).
Pada kasus tersebut, AR(2) dipilih jika :
Penduga parameter tambahan (3) tidak nyata / tidak
signifikan.
Penduga parameter 1 dan 2 tidak mengalami perubahan
secara signifikan antara AR(2) dengan AR(3).
7
# Pemodelan ARIMA(1,1,1)
library("tseries")
library("forecast")
library("TTR")
library("TSA")
library("graphics")
# Membangkitkan y, ARIMA(1,1,1): mu = 0.15, phi = 0.55, tetha = -0.75
set.seed(1001)
e <- rnorm(150,0,1)
n <- length(e)
mu <- 0.15
phi <- 0.55
tetha <- -0.75
y <- c(1:n)
for (i in 3:n)
{ y[i] <- mu + (1+phi)*y[i-1] - phi*y[i-2] + e[i] - tetha*e[i-1]}
# Membuang 50 Data Pertama
y <- y[-c(1:50)]
plot.ts(y, lty=1, xlab="Waktu", ylab="Data Asal (y)")
points(y)
8
# Cek Kestasioneran
acf(y, lag.max=20)
adf.test(y, alternative = c("stationary"),
k = trunc((length(y)-1)^(1/3))) #Augmented Dickey-Fuller
# Differencing Ordo 1
y.dif1 <- diff(y, difference=1)
plot.ts(y.dif1, lty=1, xlab="Waktu", ylab="Data Y.Diff Ordo 1")
points(y.dif1)
# Cek Kestasioneran
acf(y.dif1, lag.max=20)
adf.test(y.dif1, alternative = c("stationary"),
k = trunc((length(y)-1)^(1/3))) #Augmented Dickey-Fuller
# Pengidentifikasian Model
acf(y.dif1, lag.max=20)
pacf(y.dif1, lag.max=20)
eacf(y.dif1)
9
# Pendugaan Parameter dan Penentuan Model Terbaik
# Berdasarkan Kandidat Model Hasil Identifikasi
arima(y.dif1, order=c(0,0,2),method="ML") # ARIMA(0,1,2)
arima(y.dif1, order=c(3,0,0),method="ML") # ARIMA(3,1,0)
arima(y.dif1, order=c(1,0,1),method="ML") # ARIMA(1,1,1)
# Diagnostik Pada Model Terbaik
# Model ARIMA(1,1,1) Menggunakan Data Awal Y
modelku <- arima(y, order=c(1,1,1),method="ML")
sisaan <- residuals(modelku)
qqnorm(sisaan)
qqline(sisaan)
# Uji Ljung-Box
tsdiag(modelku,gof=16,omit.initial=F)
10
# Peramalan Berdasarkan Model Terbaik
dugaan <- fitted(modelku)
cbind(y,dugaan)
plot.ts(y, xlab="Waktu", ylab="Data Y")
points(y)
par(col="red")
lines(dugaan)
par(col="black")
ramalan <- predict(modelku, n.ahead=5)
ramalan
plot(modelku,n.ahead=5,type='b',xlab="Waktu",ylab="Data Y")
par(col="red")
lines(dugaan)
par(col="black")
11
12
13
14
Augmented Dickey-Fuller Test
data: y
Dickey-Fuller = -2.3358,
Lag order = 4, p-value = 0.4375
alternative hypothesis: stationary
15
16
17
Augmented Dickey-Fuller Test
data: y.dif1
Dickey-Fuller = -3.4633,
Lag order = 4, p-value = 0.049
alternative hypothesis: stationary
18
19
> eacf(y.dif1)
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 x x x x
1 x o o o o o o o o o o x o o
2 x x o o o o o o o o o x o o
3 x x o o o o o o o o o x o o
4 x x o x o o o o o o o x o o
5 x o o o o o o o o o o x o o
6 x o o o o o o o o o o x o o
7 x o o o o o o o o o o o o o
20
> arima(y.dif1, order=c(0,0,2),method="ML") # ARIMA(0,1,2)
Call:
arima(x = y.dif1, order = c(0, 0, 2), method = "ML")
Coefficients:
ma1 ma2 intercept
1.2345 0.3810 0.3195
s.e. 0.0910 0.0936 0.2525
sigma^2 estimated as 0.9365: log likelihood = -138.18,
aic = 282.37
21
> arima(y.dif1, order=c(3,0,0),method="ML") # ARIMA(3,1,0)
Call:
arima(x = y.dif1, order = c(3, 0, 0), method = "ML")
Coefficients:
ar1 ar2 ar3 intercept
1.2249 -0.7571 0.2688 0.3249
s.e. 0.0987 0.1438 0.1016 0.3662
sigma^2 estimated as 0.9572: log likelihood = -139.08,
aic = 286.16
22
> arima(y.dif1, order=c(1,0,1),method="ML") # ARIMA(1,1,1)
Call:
arima(x = y.dif1, order = c(1, 0, 1), method = "ML")
Coefficients:
ar1 ma1 intercept
0.5423 0.7580 0.3183
s.e. 0.0894 0.0668 0.3585
sigma^2 estimated as 0.8906: log likelihood = -135.69,
aic = 277.37
23
> arima(y.dif1, order=c(1,0,1),method="ML") # ARIMA(1,1,1)
Call:
arima(x = y.dif1, order = c(1, 0, 1), method = "ML")
Coefficients:
ar1 ma1 intercept
0.5423 0.7580 0.3183
s.e. 0.0894 0.0668 0.3585
sigma^2 estimated as 0.8906: log likelihood = -135.69,
aic = 277.37
package arima di R, tetha bertanda positif, kebalikan dari Cryer. Berarti penduga bagi tetha adalah −0.7580
24
25
26
Standardized Residuals
Time
0 20 40 60 80 100
-20
2
0 5 10 15 20
-0.2
0.4
1.0
Lag
AC
F
ACF of Residuals
5 10 15
0.0
0.4
0.8
p values for Ljung-Box statistic
lag
p v
alu
e
> ramalan <- predict(modelku, n.ahead=5)
$pred (Ramalan)
Time Series:
Start = 101
End = 105
Frequency = 1
[1] 48.50978 48.41641 48.36469 48.33604 48.32017
$se (Galat Baku atau Standard Error)
Time Series:
Start = 101
End = 105
Frequency = 1
[1] 0.9472748 2.3843231 3.7353442 4.9552922 6.0477132
27
28
Waktu
Da
ta Y
0 20 40 60 80 100
20
30
40
50
60
a. Berdasarkan hasil Program R di atas, uraikan persamaan
modelnya secara lengkap untuk model terbaik yang diperoleh,
yaitu ARIMA(1, 1, 1).
b. Berdasarkan persamaan model pada poin (a) di atas,
tentukan ramalan 3 waktu ke depan, yaitu Y101, Y102, Y103.
c. Bandingkan hasil jawaban Anda pada poin (b) di atas dengan
hasil keluaran Program R.
29
30
a. Program R dapat melakukan proses pemodelan ARIMA
secara otomatis melalui pendekatan teknik machine
learning.
b. Dapat langsung diperoleh model terbaik (best model)
berdasarkan nilai AIC, AICc, dan BIC.
c. Pada model terbaik yang diperoleh tersebut harus
dilakukan analisis diagnostik seperti pada pembahasan
sebelumnya, sebab analisis diagnostik tidak tercakup
dalam syntax auto.arima.
31
d. Syntax auto.arima hanya berfungsi sebagai alat bantu
memperoleh output akhir. Padahal bagi statistisi yang
lebih diperlukan adalah proses dan konsep
pemodelannya, bukan sekedar output akhir.
e. Karenanya syntax auto.arima hanya berguna bagi
mereka yang telah memahami proses dan konsep
pemodelan data deret waktu.
32
# Pemodelan Menggunakan auto.arima
library("tseries")
library("forecast")
library("TTR")
library("TSA")
library("graphics")
# Membangkitkan y, ARIMA(1,1,1): mu = 0.15, phi = 0.55, tetha = -0.75
set.seed(1001)
e <- rnorm(150,0,1)
n <- length(e)
mu <- 0.15
phi <- 0.55
tetha <- -0.75
y <- c(1:n)
for (i in 3:n)
{ y[i] <- mu + (1+phi)*y[i-1] - phi*y[i-2] + e[i] - tetha*e[i-1]}
# Membuang 50 Data Pertama
y <- y[-c(1:50)]
# Pemodelan dengan auto.arima
auto.arima(y, trace=TRUE)
33
> auto.arima(y, trace=TRUE)
ARIMA(2,1,2) with drift : 283.7934
ARIMA(0,1,0) with drift : 395.8794
ARIMA(1,1,0) with drift : 313.0773
ARIMA(0,1,1) with drift : 305.4258
ARIMA(0,1,0) : 396.6849
ARIMA(1,1,2) with drift : 281.53
ARIMA(0,1,2) with drift : 283.458
ARIMA(1,1,1) with drift : 279.7959
ARIMA(2,1,1) with drift : 281.5255
ARIMA(2,1,0) with drift : 293.313
ARIMA(1,1,1) : 278.3909
ARIMA(0,1,1) : 305.493
ARIMA(1,1,0) : 311.2734
ARIMA(2,1,1) : 280.2021
ARIMA(1,1,2) : 280.1891
ARIMA(0,1,2) : 282.7556
ARIMA(2,1,0) : 292.3145
ARIMA(2,1,2) : 281.4349
Best model: ARIMA(1,1,1)
34
Series: y
ARIMA(1,1,1)
Coefficients:
ar1 ma1
0.5539 0.7559
s.e. 0.0885 0.0673
sigma^2 estimated as 0.9158: log likelihood = -136.07
AIC=278.14 AICc=278.39 BIC=285.92
35
36
1. Melalui Program R, bangkitkan data (n = 175) berupa model
ARIMA(1, 2, 1) dengan = 1.25, Φ = - 0.80 dan θ = 0.65 serta
et ~ Normal(0,1). Gunakan 150 data terakhir sebagai data Yt dan
selanjutnya lakukan proses berikut:
a. Identifikasilah kandidat model berdasarkan ACF, PACF, dan EACF.
b. Berdasarkan kandidat model tersebut, tentukan model terbaik
berdasarkan nilai AIC-nya.
c. Lakukan analisis diagnostik pada model terbaik tersebut. Apa
kesimpulan Anda?
d. Bandingkan penduga parameter yang diperoleh untuk model terbaik
pada poin (b) dan (c) tersebut dengan nilai parameter yang
sesungguhnya. Apa kesimpulan Anda?
e. Gunakan fungsi auto.arima untuk menentukan kandidat model terbaik.
Bandingkan hasilnya dengan poin (b) di atas.
f. Berdasarkan model terbaik tersebut, tentukan nilai ramalan untuk 5
waktu ke depan.37
2. Melalui Program R, bangkitkan data (n = 175) berupa model ARIMA(2, 1, 2)
dengan = 1.35 dan Φ1 = - 0.65, Φ2 = - 0.75, θ1 = 0.40, θ2 = - 0.65
serta et ~ Normal(0,1). Gunakan 150 data terakhir sebagai data Yt dan
selanjutnya lakukan proses berikut:
a. Identifikasilah kandidat model berdasarkan ACF, PACF, dan EACF.
b. Berdasarkan kandidat model tersebut, tentukan model terbaik berdasarkan
nilai AIC-nya.
c. Lakukan analisis diagnostik pada model terbaik tersebut. Apa kesimpulan
Anda?
d. Bandingkan penduga parameter yang diperoleh untuk model terbaik pada
poin (b) dan (c) tersebut dengan nilai parameter yang sesungguhnya. Apa
kesimpulan Anda?
e. Gunakan fungsi auto.arima untuk menentukan kandidat model terbaik.
Bandingkan hasilnya dengan poin (b) di atas.
f. Berdasarkan model terbaik tersebut, tentukan nilai ramalan untuk 5 waktu
ke depan.
38
39
a. Data 10 bulan terakhir tidak digunakan dalam proses pemodelan, namun
nantinya digunakan untuk proses validasi.
b. Identifikasilah kandidat model yang sesuai. Berdasarkan kandidat model
tersebut, tentukan model terbaik berdasarkan nilai AIC-nya.
c. Gunakan auto.arima, kemudian bandingkan hasilnya dengan model
terbaik pada poin (b) di atas berdasarkan nilai AIC-nya. Apa kesimpulan
Anda?
d. Lakukan analisis diagnostik pada model terbaik tersebut. Apa kesimpulan
Anda?
e. Berdasarkan model terbaik tersebut, tentukan nilai ramalan untuk 10
bulan ke depan.
f. Bandingkan nilai ramalan pada poin (e) dengan nilai aktual pada poin (a)
di atas. Apa kesimpulan Anda?
3. Penerapan pada DATA AKTUAL.
Melalui Program R, kerjakan : Exercise 5.20 (Montgomery, hlm. 291):
40
41
42
Montgomery, D.C., et.al. 2008. Forecasting Time Series Analysis
2nd. John Wiley.
Cryer, J.D. and Chan, K.S. 2008. Time Series Analysis with
Application in R. Springer.
Cowpertwait, P.S.P. and Metcalfe, A.V. 2009. Introductory Time
Series with R. Springer New York.
Wei, William, W.S. 1990. Time Series Analysis, Univariate and
Multivariate Methods. Adison-Wesley Publishing Company Inc,
Canada.
43
44
Bisa di-download di
kusmansadik.wordpress.com
45