Penerapan Model ARIMA pada Data Hasil Ekspor Indonesia
Data
Library
Import Data
Data yang digunakan adalah data hasil ekspor bulanan di Indonesia (dalam juta USD) dari Bulan Januari tahun 2011 sampai Desember tahun 2022 yang merupakan data deret waktu. Sumber data : https://www.bi.go.id.
ekspor <- read_excel("D:/Data Indikator - 2022.xlsx",sheet = "ekspor")
data.table::data.table(ekspor)
## Time Ekspor
## <POSc> <num>
## 1: 2011-01-01 14606.2
## 2: 2011-02-01 14415.3
## 3: 2011-03-01 16366.0
## 4: 2011-04-01 16554.2
## 5: 2011-05-01 18287.4
## ---
## 140: 2022-08-01 27862.1
## 141: 2022-09-01 24777.2
## 142: 2022-10-01 24728.4
## 143: 2022-11-01 24094.0
## 144: 2022-12-01 23828.1
Plot Data
ekspor$Time <- as.Date(ekspor$Time, "%Y-%M-%D")
ggplot(ekspor, aes(x=Time, y = Ekspor)) + geom_line()
Berdasarkan plot deret waktu diatas, terlihat bahwa data memiliki pola tidak stasioner.
Partisi Data
Data hasil ekspor di partisi menjadi dua bagian yaitu data training (Januari 2011-Desember 2020) dan data testing (Januari 2021-Desember 2022).
## Time Series:
## Start = 1
## End = 120
## Frequency = 1
## [1] 14606.20 14415.30 16366.00 16554.20 18287.40 18386.90 17418.50 18647.80
## [9] 17543.40 16957.70 17235.50 17077.70 15570.20 15695.40 17251.50 16173.20
## [17] 16829.50 15441.50 16090.60 14047.00 15898.10 15324.00 16316.90 15393.90
## [25] 15375.50 15015.60 15024.60 14760.90 16133.40 14758.80 15087.90 13083.70
## [33] 14706.80 15698.30 15938.60 16967.80 14472.30 14634.09 15192.60 14292.50
## [41] 14823.60 15409.50 14124.10 14481.70 15275.80 15349.00 13616.20 14621.30
## [49] 13355.80 12172.80 13634.30 13103.70 12690.20 13506.10 11465.80 12726.80
## [57] 12588.40 12122.10 11111.20 11916.10 10480.60 11312.00 11810.02 11475.86
## [65] 11514.28 12974.40 9530.80 12748.34 12568.50 12742.61 13503.60 13828.70
## [73] 13397.68 12615.98 14718.48 13269.69 14333.86 11661.38 13611.06 15187.99
## [81] 14580.22 15252.56 15334.74 14864.55 14576.30 14132.40 15510.60 14496.20
## [89] 16198.30 12941.70 16284.70 15865.10 14956.30 15909.10 14851.70 14290.10
## [97] 14028.10 12788.60 14447.80 13068.10 14751.80 11763.30 15238.40 14262.00
## [105] 14080.10 14881.50 13944.50 14428.80 13632.00 14060.90 14067.90 12163.10
## [113] 10454.30 12009.30 13702.70 13095.80 13960.50 14362.20 15259.30 16538.30
## Time Series:
## Start = 121
## End = 144
## Frequency = 1
## [1] 15293.7 15256.2 18354.4 18490.7 16932.9 18542.4 19385.8 21427.1 20605.6
## [10] 22029.7 22844.4 22359.5 19173.7 20472.9 26497.5 27322.3 21509.8 26150.1
## [19] 25563.2 27862.1 24777.2 24728.4 24094.0 23828.1
Plot Data Partisi
Berdasarkan plot deret waktu diatas, terlihat bahwa data training dan testing cenderung memiliki pola trend.
Stasioneritas Data
Plot ACF
Berdasarkan plot ACF di atas terlihat bahwa nilai autokorelasi turun secara perlahan yang mengindikasikan bahwa data tidak stasioner.
Uji ADF
##
## Augmented Dickey-Fuller Test
##
## data: ekspor.training
## Dickey-Fuller = -1.8636, Lag order = 4, p-value = 0.6332
## alternative hypothesis: stationary
Berdasarkan hasil uji ADF diperoleh p-value sebesar 0.6332 > 0.05 yang berarti bahwa \(H_0\) gagal ditolak atau data tidak stasioner. Karena data tidak stasioner maka selanjutnya dilakukan differencing untuk membuat data stasioner sebelum dilakukan identifikasi model tentatif.
Differencing
# Differencing Ordo 1
ekspor.dif1 <- diff(ekspor.training, difference=1)
plot.ts(ekspor.dif1, lty=1, xlab="Waktu", ylab="Data Ekspor Diff Ordo 1")
points(ekspor.dif1)
## Warning in adf.test(ekspor.dif1): p-value smaller than printed p-value
##
## Augmented Dickey-Fuller Test
##
## data: ekspor.dif1
## Dickey-Fuller = -6.3914, Lag order = 4, p-value = 0.01
## alternative hypothesis: stationary
Berdasarkan plot data dan ACF yang tidak turun secara melandai, menunjukkan bahwa data stasioner. Selanjutnya, berdasarkan hasil uji ADF, diperoleh nilai p-value < 0.05 yang berarti \(H_0\) ditolak, sehingga dapat disimpulkan bahwa Data Ekspor telah stasioner setelah dilakukan differencing ordo 1. Karena data telah stasioner selanjutnya akan dilakukan identifikasi model tentatif.
Identifikasi Model Tentatif
EACF
## AR/MA
## 0 1 2 3 4 5 6 7 8 9 10
## 0 x x o o o o o o o o o
## 1 x o o o o o o o o o o
## 2 o o o o o o o o o o o
## 3 x o o o o o o o o o o
## 4 x x x o o o o o o o o
## 5 o x o o o o o o o o o
## 6 x o x o o o o o o o o
## 7 x o x o o o o o o o o
## 8 x x x o o o o o o o o
## 9 x o o o o o o o o o o
## 10 x o o o o o o o o o o
Kandidat Model
Berdasarkan plot ACF (cut off setelah lag ke-2), PACF (cut off setelah lag ke-1), dan EACF, diperoleh kandidat model:
ARIMA (1,1,1)
ARIMA (0,1,2)
ARIMA (1,1,2)
ARIMA (2,1,1)
Pendugaan Parameter dan Penentuan Model Terbaik
arima111<-arima(ekspor.dif1, order=c(1,0,1),include.mean=FALSE, method="ML") #ARIMA (1,1,1)
arima012<-arima(ekspor.dif1, order=c(0,0,2),include.mean=FALSE, method="ML") #ARIMA (0,1,2)
arima112<-arima(ekspor.dif1, order=c(1,0,2),include.mean=FALSE, method="ML") #ARIMA (1,1,2)
arima211<-arima(ekspor.dif1, order=c(2,0,1),include.mean=FALSE, method="ML") #ARIMA (2,1,1)
Uji Signifikansi Parameter
##
## Call:
## arima(x = ekspor.dif1, order = c(1, 0, 1), include.mean = FALSE, method = "ML")
##
## Coefficients:
## ar1 ma1
## -0.3589 -0.2467
## s.e. 0.1658 0.1803
##
## sigma^2 estimated as 1195003: log likelihood = -1001.66, aic = 2007.32
##
## z test of coefficients:
##
## Estimate Std. Error z value Pr(>|z|)
## ar1 -0.35889 0.16581 -2.1645 0.03043 *
## ma1 -0.24666 0.18031 -1.3680 0.17131
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Call:
## arima(x = ekspor.dif1, order = c(0, 0, 2), include.mean = FALSE, method = "ML")
##
## Coefficients:
## ma1 ma2
## -0.5885 0.1562
## s.e. 0.0896 0.0923
##
## sigma^2 estimated as 1205365: log likelihood = -1002.16, aic = 2008.33
##
## z test of coefficients:
##
## Estimate Std. Error z value Pr(>|z|)
## ma1 -0.588470 0.089604 -6.5674 5.119e-11 ***
## ma2 0.156233 0.092307 1.6925 0.09054 .
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Call:
## arima(x = ekspor.dif1, order = c(1, 0, 2), include.mean = FALSE, method = "ML")
##
## Coefficients:
## ar1 ma1 ma2
## -0.4114 -0.1953 -0.0377
## s.e. 0.3423 0.3468 0.2251
##
## sigma^2 estimated as 1194686: log likelihood = -1001.65, aic = 2009.29
##
## z test of coefficients:
##
## Estimate Std. Error z value Pr(>|z|)
## ar1 -0.411440 0.342339 -1.2019 0.2294
## ma1 -0.195301 0.346847 -0.5631 0.5734
## ma2 -0.037739 0.225090 -0.1677 0.8669
##
## Call:
## arima(x = ekspor.dif1, order = c(2, 0, 1), include.mean = FALSE, method = "ML")
##
## Coefficients:
## ar1 ar2 ma1
## 0.4006 0.4679 -1.0000
## s.e. 0.0819 0.0818 0.0346
##
## sigma^2 estimated as 1159869: log likelihood = -1000.81, aic = 2007.62
##
## z test of coefficients:
##
## Estimate Std. Error z value Pr(>|z|)
## ar1 0.400643 0.081881 4.8930 9.933e-07 ***
## ar2 0.467908 0.081810 5.7195 1.069e-08 ***
## ma1 -1.000000 0.034565 -28.9312 < 2.2e-16 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
AIC
aic.arima<-data.frame(
"Model"=c("ARIMA(1,1,1)", "ARIMA(0,1,2)", "ARIMA(1,1,2)", "ARIMA(2,1,1)"),
"AIC"=c(arima111$aic, arima012$aic, arima112$aic,arima211$aic))
aic.arima
## Model AIC
## 1 ARIMA(1,1,1) 2007.323
## 2 ARIMA(0,1,2) 2008.329
## 3 ARIMA(1,1,2) 2009.294
## 4 ARIMA(2,1,1) 2007.618
Berdasarkan hasil di atas dapat disimpulkan bahwa ARIMA (2,1,1) merupakan model terbaik karena model tersebut memiliki koefisien parameter yang signifikan terhadap model dan nilai AIC terkecil yaitu 2007.618.
Model ARIMA (2,1,1) dapat dituliskan sebagai berikut:
\(Y_{t}=1.4006Y_{t-1}+0.0673Y_{t-2}-0.4679Y_{t-3}+e_{t}+e_{t-1}\)
Diagnostik Model
Diagnostik model dilakukan untuk mengetahui apakah sisaan dari model yang dibangun telah memenuhi asumsi pemodelan. Asumsi sisaan yang harus terpenuhi pada model ARIMA(p,d,q) adalah sebagai berikut:
Sisaan saling bebas (tidak ada autokorelasi) dan identik
Sisaan mengikuti sebaran Normal (0, \(\sigma^2\))
Eksploratif
Berikut dilakukan pemeriksaan asumsi model secara eksploratif melalui Normal Q-Q Plot, Plot ACF, dan PACF.
arima.211y<-arima(ekspor.training, order=c(2,1,1), include.mean = FALSE,method="ML") #ARIMA (2,1,1)
sisaan211 <- arima.211y$residuals
# Eksplorasi
par(mfrow=c(2,2))
qqnorm(sisaan211)
qqline(sisaan211, col = "blue", lwd = 2)
plot(c(1:length(sisaan211)),sisaan211)
acf(sisaan211,lag.max = 10)
pacf(sisaan211,lag.max = 10)
Berdasarkan hasil diatas, secara eksploratif Normal Q-Q Plot menunjukkan bahwa sisaan mengikuti sebaran normal karena titik-titik berada di sekitar garis. Selanjutnya, apabila dilihat dari plot ACF dan PACF terlihat bahwa tidak ada lag yang signifikan. Hal ini menunjukkan bahwa tidak ada gejala autokorelasi pada sisaan. Selanjutnya, untuk memastikan kembali dilakukan uji asumsi secara formal.
Uji Non-Autokorelasi dengan Ljung-Box test
##
## Box-Ljung test
##
## data: sisaan211
## X-squared = 0.29143, df = 1, p-value = 0.5893
Berdasarkan hasil uji Ljung-Box di atas dapat disimpulkan bahwa \(H_0\) tidak ditolak karena p-value=0.5893 > 0.05 yang berarti tidak terdapat gejala autokorelasi pada sisaan dari model ARIMA (2,1,1) atau antar \(e_t\) tidak berkorelasi.
Uji Normalitas dengan Shapiro-Wilk test
##
## Shapiro-Wilk normality test
##
## data: sisaan211
## W = 0.98971, p-value = 0.5087
Berdasarkan hasil uji Shapiro-Wilk di atas dapat disimpulkan bahwa \(H_0\) tidak ditolak karena p-value = 0.5087 > 0.05 sehingga sisaan dari model ARIMA (2,1,1) mengikuti sebaran Normal.
Ukuran keakuratan ramalan Model ARIMA (2,1,1)
## Time Series:
## Start = 1
## End = 120
## Frequency = 1
## ekspor.training dugaan
## 1 14606.20 14591.59
## 2 14415.30 14573.24
## 3 16366.00 14557.22
## 4 16554.20 15314.88
## 5 18287.40 16367.81
## 6 18386.90 17211.50
## 7 17418.50 18072.58
## 8 18647.80 17735.62
## 9 17543.40 17786.98
## 10 16957.70 17899.61
## 11 17235.50 17134.19
## 12 17077.70 16974.69
## 13 15570.20 17020.80
## 14 15695.40 16311.90
## 15 17251.50 15670.50
## 16 16173.20 16372.25
## 17 16829.50 16667.81
## 18 15441.50 16415.42
## 19 16090.60 16152.84
## 20 14047.00 15741.23
## 21 15898.10 15213.51
## 22 15324.00 15011.00
## 23 16316.90 15658.60
## 24 15393.90 15790.85
## 25 15375.50 15875.54
## 26 15015.60 15426.23
## 27 15024.60 15266.38
## 28 14760.90 15095.50
## 29 16133.40 15002.23
## 30 14758.80 15433.44
## 31 15087.90 15513.98
## 32 13083.70 14980.09
## 33 14706.80 14316.63
## 34 15698.30 14048.18
## 35 15938.60 15226.66
## 36 16967.80 15803.80
## 37 14472.30 16322.60
## 38 14634.09 15778.25
## 39 15192.60 14670.00
## 40 14292.50 14968.22
## 41 14823.60 14862.99
## 42 15409.50 14660.36
## 43 14124.10 15141.51
## 44 14481.70 14889.41
## 45 15275.80 14434.55
## 46 15349.00 14929.68
## 47 13616.20 15320.95
## 48 14621.30 14648.07
## 49 13355.80 14233.36
## 50 12172.80 14175.91
## 51 13634.30 13099.31
## 52 13103.70 13134.85
## 53 12690.20 13599.64
## 54 13506.10 13181.69
## 55 11465.80 13304.94
## 56 12726.80 12856.19
## 57 12588.40 12407.05
## 58 12122.10 12937.56
## 59 11111.20 12670.84
## 60 11916.10 12037.02
## 61 10480.60 11877.06
## 62 11312.00 11667.78
## 63 11810.02 11329.92
## 64 11475.86 11918.71
## 65 11514.28 12012.29
## 66 12974.40 11874.82
## 67 9530.80 12467.20
## 68 12748.34 11759.56
## 69 12568.50 11449.25
## 70 12742.61 12888.20
## 71 13503.60 12876.46
## 72 13828.70 13269.30
## 73 13397.68 13756.73
## 74 12615.98 13728.29
## 75 14718.48 13215.47
## 76 13269.69 13697.70
## 77 14333.86 14100.03
## 78 11661.38 13838.52
## 79 13611.06 13256.47
## 80 15187.99 12800.87
## 81 14580.22 14357.96
## 82 15252.56 14855.38
## 83 15334.74 14844.69
## 84 14864.55 15193.01
## 85 14576.30 15039.29
## 86 14132.40 14698.91
## 87 15510.60 14388.79
## 88 14496.20 14737.36
## 89 16198.30 14980.32
## 90 12941.70 15182.95
## 91 16284.70 14671.78
## 92 15865.10 14500.68
## 93 14956.30 15898.71
## 94 15909.10 15336.63
## 95 14851.70 15293.70
## 96 14290.10 15309.56
## 97 14028.10 14583.02
## 98 12788.60 14206.87
## 99 14447.80 13585.32
## 100 13068.10 13671.18
## 101 14751.80 13895.82
## 102 11763.30 13919.46
## 103 15238.40 13508.21
## 104 14262.00 13512.17
## 105 14080.10 14747.37
## 106 14881.50 14217.60
## 107 13944.50 14454.18
## 108 14428.80 14451.67
## 109 13632.00 14204.95
## 110 14060.90 14109.92
## 111 14067.90 13909.34
## 112 12163.10 14106.06
## 113 10454.30 13328.01
## 114 12009.30 11742.32
## 115 13702.70 11574.65
## 116 13095.80 12988.96
## 117 13960.50 13540.11
## 118 14362.20 13606.84
## 119 15259.30 14179.01
## 120 16538.30 14736.72
plot.ts(ekspor.training, xlab="Month", ylab="Data")
points(ekspor.training)
par(col="red")
lines(dugaan)
Berdasarkan plot data aktual vs dugaan di atas terlihat bahwa nilai dan pola dugaan yang dihasilkan dari model ARIMA (2,1,1) mendekati nilai aktualnya.
#forecast
ramalan_arima211<- forecast::forecast(ekspor.training,model=arima.211y, h=24)
ramalan_arima211
## Point Forecast Lo 80 Hi 80 Lo 95 Hi 95
## 121 15675.33 14290.23 17060.43 13557.00 17793.66
## 122 15928.05 14432.28 17423.82 13640.47 18215.63
## 123 15625.51 13888.02 17363.00 12968.24 18282.77
## 124 15622.55 13775.06 17470.03 12797.06 18448.03
## 125 15479.80 13512.94 17446.65 12471.75 18487.85
## 126 15421.22 13372.44 17470.00 12287.88 18554.56
## 127 15330.96 13208.37 17453.55 12084.74 18577.18
## 128 15267.39 13086.73 17448.05 11932.36 18602.41
## 129 15199.69 12969.16 17430.21 11788.40 18610.97
## 130 15142.82 12871.08 17414.55 11668.49 18617.14
## 131 15088.35 12781.51 17395.19 11560.34 18616.36
## 132 15039.92 12703.45 17376.39 11466.60 18613.24
## 133 14995.04 12633.27 17356.80 11383.02 18607.05
## 134 14954.39 12571.02 17337.76 11309.35 18599.44
## 135 14917.10 12515.19 17319.01 11243.70 18590.51
## 136 14883.15 12465.29 17301.01 11185.35 18580.95
## 137 14852.10 12420.46 17283.73 11133.23 18570.96
## 138 14823.77 12380.21 17267.33 11086.66 18560.87
## 139 14797.89 12343.97 17251.81 11044.95 18550.83
## 140 14774.27 12311.33 17237.20 11007.54 18540.99
## 141 14752.69 12281.89 17223.49 10973.93 18531.45
## 142 14733.00 12255.31 17210.68 10943.71 18522.28
## 143 14715.01 12231.29 17198.73 10916.49 18513.53
## 144 14698.59 12209.56 17187.62 10891.94 18505.23
gabungan2<- cbind(ekspor.test,ramalan_arima211)
df.gab<- as.data.frame(gabungan2, digits=3)
df.gab %>%
rename(
"Data Aktual ekspor Emas"=ekspor.test,
Ramalan="ramalan_arima211.Point Forecast",
"Lo 80"="ramalan_arima211.Lo 80",
"Hi 80"="ramalan_arima211.Hi 80",
"Lo 95"="ramalan_arima211.Lo 95",
"Hi 95"="ramalan_arima211.Hi 95"
)
## Data Aktual ekspor Emas Ramalan Lo 80 Hi 80 Lo 95 Hi 95
## 1 15293.7 15675.33 14290.23 17060.43 13557.00 17793.66
## 2 15256.2 15928.05 14432.28 17423.82 13640.47 18215.63
## 3 18354.4 15625.51 13888.02 17363.00 12968.24 18282.77
## 4 18490.7 15622.55 13775.06 17470.03 12797.06 18448.03
## 5 16932.9 15479.80 13512.94 17446.65 12471.75 18487.85
## 6 18542.4 15421.22 13372.44 17470.00 12287.88 18554.56
## 7 19385.8 15330.96 13208.37 17453.55 12084.74 18577.18
## 8 21427.1 15267.39 13086.73 17448.05 11932.36 18602.41
## 9 20605.6 15199.69 12969.16 17430.21 11788.40 18610.97
## 10 22029.7 15142.82 12871.08 17414.55 11668.49 18617.14
## 11 22844.4 15088.35 12781.51 17395.19 11560.34 18616.36
## 12 22359.5 15039.92 12703.45 17376.39 11466.60 18613.24
## 13 19173.7 14995.04 12633.27 17356.80 11383.02 18607.05
## 14 20472.9 14954.39 12571.02 17337.76 11309.35 18599.44
## 15 26497.5 14917.10 12515.19 17319.01 11243.70 18590.51
## 16 27322.3 14883.15 12465.29 17301.01 11185.35 18580.95
## 17 21509.8 14852.10 12420.46 17283.73 11133.23 18570.96
## 18 26150.1 14823.77 12380.21 17267.33 11086.66 18560.87
## 19 25563.2 14797.89 12343.97 17251.81 11044.95 18550.83
## 20 27862.1 14774.27 12311.33 17237.20 11007.54 18540.99
## 21 24777.2 14752.69 12281.89 17223.49 10973.93 18531.45
## 22 24728.4 14733.00 12255.31 17210.68 10943.71 18522.28
## 23 24094.0 14715.01 12231.29 17198.73 10916.49 18513.53
## 24 23828.1 14698.59 12209.56 17187.62 10891.94 18505.23
## ME RMSE MAE MPE MAPE MASE
## Training set -60.56983 1072.476 847.6623 -0.9777788 6.126916 0.8173218
## Test set 6699.29754 7749.066 6787.0875 28.4247325 28.999660 6.5441566
## ACF1 Theil's U
## Training set -0.0486709 NA
## Test set 0.7233516 2.95274
Interpretasi nilai MAPE :
## Nilai MAPE Interpretasi
## 1 <10% Kemampuan peramalan sangat baik
## 2 10%-20% Kemampuan peramalan baik
## 3 20%-50% Kemampuan peramalan layak
## 4 >50% Kemampuan peramalan buruk
Berdasarkan hasil di atas diperoleh nilai MAPE pada data testing sebesar 28.99% yang berarti model ARIMA (2,1,1) memiliki kemampuan peramalan yang layak.
Peramalan Hasil Ekspor Indonesia
Berikut merupakan hasil ramalan data ekspor Indonesia untuk 12 bulan ke depan (tahun 2023):
## Point Forecast Lo 80 Hi 80 Lo 95 Hi 95
## 145 22933.32 21548.94 24317.71 20816.08 25050.56
## 146 22450.43 20955.96 23944.90 20164.83 24736.02
## 147 21838.28 20103.14 23573.42 19184.61 24491.95
## 148 21367.08 19522.87 23211.29 18546.60 24187.56
## 149 20891.87 18929.37 22854.37 17890.48 23893.26
## 150 20481.00 18437.60 22524.41 17355.89 23606.12
## 151 20094.04 17977.89 22210.19 16857.66 23330.41
## 152 19746.75 17573.55 21919.96 16423.13 23070.38
## 153 19426.55 17204.48 21648.62 16028.19 22824.92
## 154 19135.77 16873.44 21398.10 15675.84 22595.71
## 155 18869.45 16572.94 21165.96 15357.23 22381.66
## 156 18626.69 16301.42 20951.96 15070.50 22182.88