Library:
> library(knitr)
> library(rmarkdown)
> library(prettydoc)
> library(equatiomatic)1 PENDAHULUAN
1.1 Latar Belakang
Perdagangan Internasional adalah sesuatu yang tidak terpisahkan bagi negara yang menganut perekonomian terbuka. Umumnya sebuah negara berpenduduk banyak merupakan negara yang potensiial untuk melakukan perdagangan. Indonesia meruapakan salah satu negara yang potensial untuk melakukan perdagangan internasional, karena jumlah penduduknya yang besar.
Indonesia merupakan negara yang konsumtif, sehingga permintaan terhadap barang-barag impor akan semakin meningkat namun, di satu sisi Indonesia harus mempertahakan neraca perdagangannya, salah saatunya adalah kegiatan ekspor yang mendorong neraca perdagangannya.
Salah satu komoditas holtikultura pada kelompok umbi yang dapat memberikan kesempatan ekspor adalah kentang, karena produksinya yang cukup konstan dan menempati urutan ke-4 pada tahun 2020 dengan produksi mencapai 1,282,768 ton. Pada tahun 2016-2020 sebanyak 19,657,96 kg telah di ekspor ke berbagai negara, tujuan dari studi kasus ini adalah memprediksi jumlah permintaan kentang pada masa mendatang dengan cara melakukan pemodelan pada kuantitas ekspor kentang pada pasar internasional.
1.2 Langkah - lagkah Analisis
- Membuat plot data amatan deret waktuu untuk mengidentifikasi apakah bersifat acak, mengndung unsur tren, musiman atau siklus.
- Mmebuat plot ACF dan PACF unntuk menentukan model tentatif yang sesuai.
- Melakukan pendugaan parameter terhadap semua model tentatif,
- Melakukan diagnostik model. Model terbaik adalah model yang memenuhi asumsi dan memiliki nilai AIC dan BIC terkecil.
- Melakukan peramalan menggunnakan model terbaik yang telah dipilih.
1.3 Stasioneritas Data Deret Waktu
1.3.1 Stasionneritas Terhadap Ragam
Data dikatakan stasioer terhadap ragam apabila ragamnya konstan dari waktu ke waktu. Hal ini dapat dilihat menggunakan function BoxCox dari library forecast dengan menetapkan λ = ‘auto’. Apabila kondisi tersebut tidak terpenuhi λ ≠ 1 maka dapat dilakuakan Transformasi Box-Cox didefinisikan sebagai berikut: \[
g(x)=
\begin{cases}
\frac{y^{\lambda}_{t}-1}{\lambda},\ \lambda = 0 \\
log(x),\ \lambda\neq 0
\end{cases}
\] atau pada Rstudio dapat menetapkan λ = 1 pada *function yang sama.
1.3.2 Stasioneritas pada Rata-rata
Data ditakatakan stasioner terhadap rata-rata apabila berflkutuasi disekitar garis sejaajr dengan sumbu waktu (t) atau disekitar nilai rata-rata yang konstan. Pemeriksaan stasioneritas rata-rata daspat dilakukan dengan menggunakan function adf.test dari library ‘tseries’. Jika tidak terpenuhi maka dapat dilakukan proses diferensisasi(differencing)
1.4 Penentuan Model dengan plot ACF dan PACF
| Plot | AR(p) | MA(q) | ARMA(p,q) |
|---|---|---|---|
| ACF | Tails off | Cuts off after q | Tails off |
| PACF | Cuts off after p | Tails off | Tails off |
1.4.1 AR(Autoregressive)
suatu bentuk regresi yang menghubungkan nilai-nilai seelumnya pada lag time (selang waktu) yang bermacam-macam. Jadi sautu model AR akan menyatakan suatu ramalan sebagai fungsi nilai-nilai sebelumnya dari time series tertentu dinyatakan sebagai berikut: \[ y_{t}=\phi_{1}y_{t-1}+\phi_{2}y_{t-2}...+\phi_{p}y_{t-p}+\epsilon_t \] ### MA(Moving Average) Metode ini dilakukan dengan mengambil sekelompok nilai pengamatan, mecari rata-ratanya yang kemdian digunakan untuk ramalan periode yang akan datang. Bentuk umum model MA adalah: \[ y_{t}=\theta_{0}+\epsilon_{t}-\theta_{1}\epsilon_{t-1}-...-\theta_{q}\epsilon_{t-q} \] ### ARMA (Autoregressive Moving Average) Model ARMA adalah model ramalan univariat deret waktu yang memadukan anara model AR dan MA untuk proses yang stasioner, dapat ditulis sebagai berikut: \[ y_{t}=\phi_{1}y_{t-1}+...+\phi_{p}y_{t-p}+\epsilon_{t}-\theta_{1}\epsilon_{t-1}-...-\theta_{q}\epsilon_{t-q} \] ### ARIMA (Autoregressive Integrated Moving Average) Model ARIMA adalah model peramalan univariat deret waktu yang memadukan model AR dan MA untuk data yang tidak stasioner, dapat ditulis sebagai berikut: \[ y_{t}=(1+\phi_{1})y_{t-1}+(\phi_{2}-\phi_{1})y_{t-2}+...+(\phi_{p}-\phi_{p-1})y_{t-p}+\epsilon_{t}-\theta_{1}\epsilon_{t-1}-\theta_{2}\epsilon_{t-2}-..-\theta_{q}\epsilon_{t-q} \]
1.5 Diagnostik Model
Dilakukan dengan untuk memenuhi asumsi normalitas dan autokorelasi dengan cara menguji model yang telah dispesifikasi secara benar.
1.5.1 Normalitas Residual
Normalitas Residual/sisaan dapat dilihat menggunakan qqplot
1.5.2 Uji Autokorelasi atau White Noise
Menggunakan uji Ljung-Box, dengan hipotesis yang akan diuji: H0: Tidak ada korelasi antar lag H1: Terdapat korelasi antar lag
1.6 Pemilihan Model Terbaik
Pada Rstudio pemilihan model terbaik untuk pemilihan bertahap dapat menggunakan kriteria model AIC (Akaike Information Criterion) sebagai berikut: \[ AIC=n*ln(\frac{SSE}{n})+2p \]
1.7 Data
Data yang digunakan adalah data ekspor kentang (segar atau didinginkan) dari Indonesia ke berbaga negara dari tahun 1989 - 2020, data ini diperoleh dari situs UN Comtrade.
2 SOURCE CODE
2.1 Library yang Dibutuhkan
> # Library
> library(aTSA)
> library(forecast)
> library(lmtest)
> library(nortest)
> library(TSstudio)2.2 Membangkitkan Data
> library(readxl)
> Potato <- read_excel("C:/Users/Muhammad Ariq Deriz/Downloads/Potato.xlsx")2.3 Data View
> library(rmarkdown)
> paged_table(as.data.frame(Potato))2.4 Mengambil kolom Quantity pada data
> Ptt <- Potato[-1]
> Ptt
# A tibble: 32 x 1
`Qty (Kg)`
<dbl>
1 71416536
2 76774688
3 98176824
4 96498584
5 126741552
6 88968968
7 102971120
8 79681504
9 36758980
10 31219260
# ... with 22 more rows2.5 Mengubah data menjadi Time series
> Ptt_ts <-ts(Ptt,start=c(1989),frequency=1)2.6 Plot Data Time Series
Identifikasi pola dan stasioneritas data menggunakan visualisi dari function ‘ts_plot’
> TSstudio::ts_plot(Ptt_ts,
+ title = "Indonesia's Potato Exports",
+ Xtitle = "Year",
+ Ytitle = "Quantity(kg)")Plot diatas menunjukkan bahwa data tidak stasioner terhadap rata-rata (ada tren) dan ragam (pola acak) maka harus distasionerkan terhadap ragam terlebih dahulu.
2.7 Uji Stasioneritas terhadap ragam
> Ptt_ts1=forecast::BoxCox(Ptt_ts,lambda="auto")function BoxCox pada library forecast menghasilkan output berupa transformasi pada variabel input menggunakan transformasi Box-Cox.
2.8 Uji Stationeritas terhadap Rata-rata
> aTSA::adf.test(Ptt_ts)
Augmented Dickey-Fuller Test
alternative: stationary
Type 1: no drift no trend
lag ADF p.value
[1,] 0 -1.65 0.0936
[2,] 1 -1.49 0.1392
[3,] 2 -1.85 0.0642
[4,] 3 -2.06 0.0412
Type 2: with drift no trend
lag ADF p.value
[1,] 0 -1.77 0.414
[2,] 1 -1.26 0.595
[3,] 2 -1.47 0.522
[4,] 3 -1.64 0.460
Type 3: with drift and trend
lag ADF p.value
[1,] 0 -3.31 0.0886
[2,] 1 -2.26 0.4556
[3,] 2 -2.03 0.5481
[4,] 3 -2.02 0.5510
----
Note: in fact, p.value = 0.01 means p.value <= 0.01 Karena p-value > 0.05 maka perlu dilakukan diferensisasi
> datadiff = diff(Ptt_ts1)
> aTSA::adf.test(datadiff)
Augmented Dickey-Fuller Test
alternative: stationary
Type 1: no drift no trend
lag ADF p.value
[1,] 0 -7.27 0.0100
[2,] 1 -4.08 0.0100
[3,] 2 -3.28 0.0100
[4,] 3 -2.15 0.0337
Type 2: with drift no trend
lag ADF p.value
[1,] 0 -7.83 0.0100
[2,] 1 -4.79 0.0100
[3,] 2 -4.33 0.0100
[4,] 3 -3.25 0.0292
Type 3: with drift and trend
lag ADF p.value
[1,] 0 -7.73 0.0100
[2,] 1 -4.70 0.0100
[3,] 2 -4.28 0.0119
[4,] 3 -3.12 0.1383
----
Note: in fact, p.value = 0.01 means p.value <= 0.01 2.9 Melihat ACF dan PACF untuk menentukan ordo
> acf(datadiff)> pacf(datadiff) ## Mebentuk model Tentatif
> model1 = forecast::Arima(datadiff,order=c(0,1,1))
> model2 = forecast::Arima(datadiff,order=c(1,1,0))
> model3 = forecast::Arima(datadiff,order=c(1,1,1))
> model4 = forecast::Arima(datadiff,order=c(2,1,0))
> model5 = forecast::Arima(datadiff,order=c(2,1,1))2.10 Signifikansi Parameter
> lmtest::coeftest(model1)
z test of coefficients:
Estimate Std. Error z value Pr(>|z|)
ma1 -0.999999 0.094333 -10.601 < 2.2e-16 ***
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
> lmtest::coeftest(model2)
z test of coefficients:
Estimate Std. Error z value Pr(>|z|)
ar1 -0.65644 0.13755 -4.7723 1.821e-06 ***
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
> lmtest::coeftest(model3)
z test of coefficients:
Estimate Std. Error z value Pr(>|z|)
ar1 -0.39327 0.17426 -2.2568 0.02402 *
ma1 -1.00000 0.13011 -7.6859 1.52e-14 ***
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
> lmtest::coeftest(model4)
z test of coefficients:
Estimate Std. Error z value Pr(>|z|)
ar1 -0.88491 0.17483 -5.0617 4.156e-07 ***
ar2 -0.33690 0.17203 -1.9584 0.05019 .
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
> lmtest::coeftest(model5)
z test of coefficients:
Estimate Std. Error z value Pr(>|z|)
ar1 -0.435300 0.191317 -2.2753 0.02289 *
ar2 -0.097291 0.189657 -0.5130 0.60796
ma1 -0.999998 0.155771 -6.4197 1.366e-10 ***
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 12.11 Diagnostik Model
> #Model 1
> forecast::checkresiduals(model1)
Ljung-Box test
data: Residuals from ARIMA(0,1,1)
Q* = 7.8172, df = 5, p-value = 0.1666
Model df: 1. Total lags used: 6
> qqnorm(model1$residuals)
> qqline(model1$residuals)
> #Model 2
> forecast::checkresiduals(model2)
Ljung-Box test
data: Residuals from ARIMA(1,1,0)
Q* = 8.9292, df = 5, p-value = 0.1119
Model df: 1. Total lags used: 6
> qqnorm(model2$residuals)
> qqline(model2$residuals)
> #Model 3
> forecast::checkresiduals(model3)
Ljung-Box test
data: Residuals from ARIMA(1,1,1)
Q* = 3.5019, df = 4, p-value = 0.4776
Model df: 2. Total lags used: 6
> qqnorm(model3$residuals)
> qqline(model3$residuals)
### Berdasarkan AIC
> #Melihat AIC
> AIC(model1)
[1] -525.0194
> AIC(model2)
[1] -515.2973
> AIC(model3)
[1] -527.55462.12 Forecast
> fit<- forecast::auto.arima(Ptt_ts)
> futval=forecast::forecast(fit,h=10)
> futval
Point Forecast Lo 80 Hi 80 Lo 95 Hi 95
2021 3949526 -23945200 31844252 -38711776 46610827
2022 4099442 -28906058 37104942 -46378114 54576998
2023 4044341 -35297372 43386054 -56123617 64212299
2024 4064593 -40080500 48209686 -63449501 71578687
2025 4057150 -44630169 52744468 -70403679 78517978
2026 4059885 -48708210 56827981 -76641952 84761723
2027 4058880 -52521080 60638840 -82472702 90590462
2028 4059249 -56082920 64201419 -87920261 96038760
2029 4059114 -59448745 67566972 -93067775 101186002
2030 4059164 -62643733 70762060 -97954113 106072441
> plot(futval, xlab='Years',ylab='Quantity(kg)',main='Forecast 10 years ahead')3 HASIL DAN PEMBAHASAN
3.1 ACF dan PACF
Setalah data distasionerkan dapat dilihat pada plot ACF bahwa terdapat cut off setalah lag 1 dan plot PACF cut off setelah lag 2 sehingga dapat ditentuka ordo untuk membetuk model tentatif adalah p=2, d=1 dan q=1
3.2 Signifikansi Parameter
Setelah model dibentuk menggunakan function Arima pada library forecast dapat dilihat bahwa model 4 dan model 5 tidak signfikan sehingga selanjutnya dilakukan diganostik model untuk model 1, 2 dan 3.
3.3 Diagnostik Model
Ketiga model memiliki qqplot residual yang terlihat normal, dan tidak terdapat autokorelasi antar lag maka penentuan model terbaik dapat menggunakan alternatif lain yaitu AIC.
AIC yang kecil merupakan indikasi model yang baik, sehingga dapat ditentukan bahwa model terbaik adalah model 2 atau ARI(1,1) dengan AIC sebesar -515.2973 maka langkah selanjutnya adalah melakukan forecasting dengan model ARI(1,1), hasil model terbaik yang didapatkan sama ketika menggunakan auto.arima yaitu ARI(1,1)
3.4 Forecast
Pada plot forecast dapat dilihat bahwa prediksi 10 tahun kedepan bahwa ekspor kentang indonesia cenderung tidak berfluktuasi dan cenderung konstan di angka 4,050,000 kg # DAFTAR PUSTAKA * As’ad, Mohamad. 2017. Peramalan Jumlah Mahasiswa Baru dengan Model Autoregressive Integrated Moving Average (ARIMA), Jurnal Informatika Merdeka Pasuruan,2(3): 20-33 * Setiawan, dkk. 2019. Pemodelan Data Penjualan Mobil Menggunakan Model Autoregressive Moving Average Berdasarkan Metode Bayersian, Jurnal Sains dan Edukasi Sains,2(1): 26-35 * Wei, W. W. S. 2006. Time Series Analysis: Univariate and Multivariate Methods. California: Pearson Education, Inc.