Pendahuluan
Indonesia termasuk ke dalam negara berkembang dengan jumlah penduduk yang sangat banyak. Hal tersebut membuat Indonesia menjadi negara konsumtif. Dalam pertumbuhan ekonomi di Indonesia, pemerintah harus mengaturnya agar tidak terjadi lonjakan harga yang tinggi (adanya inflasi). Pengendalian inflasi sangat penting untuk dilakukan. Jika kita bisa memperkirakan tingkat inflasi kedepannya, maka tindakan preventif bisa dilakukan untuk menanggulangi inflasi. Data inflasi merupakan data deret waktu, maka salah satu metode yang dapat digunakan dalam pemodelan data inflasi untuk melakukan peramalan adalah Autoregressive Integrated Moving Average (ARIMA). ARIMA adalah singkatan dari Autoregressive Integrated Moving Average yang merupakan bagian dari model peramalan data deret waktu yang umum digunakan untuk memodelkan data deret waktu yang stasioner. ARIMA sangat baik ketepatannya untuk peramalan jangka pendek, sedangkan untuk peramalan jangka panjang ketepatan peramalannya kurang baik karena biasanya plot akan cenderung flat (mendatar/konstan) untuk periode yang cukup panjang (Elvani et al, 2016).
Penelitian yang dilakukan ini memiliki tujuan untuk menganalisis model Autoregressive Integrated Moving Average (ARIMA) terbaik yang digunakan untuk menentukan target inflasi pada beberapa waktu ke depan. Penentuan model terbaik pada penelitian ini menggunakan beberapa indikator, antara lain signifikansi model, nilai AIC dan BIC.Analisis Data
Package dan Library
#Import Library
library(readxl)
library(TTR)
library(forecast)
library(tseries)
library(TSA)
library(dynlm)
library(lmtest)
library(imputeTS)
library(stats)
library(MASS)
library(kableExtra)
library(padr)
library(astsa)
library(tfarima)
library(ggplot2)
Import Data
data <- read_excel("C:/Users/denan/OneDrive/Documents/Kuliah/Kampus/Semester 5/MPDW/Data Inflasi.xlsx", sheet = "Sheet2")
dataMinyak <- read_excel("C:/Users/denan/OneDrive/Documents/Kuliah/Kampus/Semester 5/MPDW/Harga Minyak.xlsx", sheet = "Sheet2")
#Mengubah data ke dalam bentuk time series
data.ts<-ts(data,frequency=12, start=2012)
dataMinyak.ts <- ts(dataMinyak,frequency=12,start=2012)
Eksplorasi Data
Time Series Plot
#Plot semua data
plot(data.ts,xlab ="Waktu", ylab = "Data Inflasi (Persen)", col="black", main = "Plot Data Deret Waktu Data Inflasi")
points(data.ts)
plot(dataMinyak.ts,xlab ="Waktu", ylab = "Rata-Rata Harga Minyak", col="black", main = "Plot Data Deret Waktu Data Harga Minyak")
points(dataMinyak.ts)
Standarisasi pada Data Banyaknya Ekspor Minyak
#Min Max Normalization
min = min(dataMinyak.ts)
max = max(dataMinyak.ts)
stddataMinyak1 = as.data.frame(scale(dataMinyak.ts, center = min, scale = max-min))
stddataMinyak = ts(as.data.frame(scale(dataMinyak.ts, center = min, scale = max-min)), frequency = 12, start = 2012)
stddataMinyak
## Jan Feb Mar Apr May Jun
## 2012 0.88928837 0.94730837 1.00000000 0.95741752 0.85839643 0.72031962
## 2013 0.86887983 0.89510658 0.84223447 0.80429291 0.80961289 0.81349987
## 2014 0.83783272 0.86605220 0.85792058 0.86646567 0.87521750 0.90271341
## 2015 0.26941166 0.34883280 0.32853820 0.37729348 0.42859850 0.41619433
## 2016 0.09030924 0.10323025 0.16845551 0.20370402 0.25731760 0.27540701
## 2017 0.33642863 0.34431906 0.30865708 0.32168145 0.29821690 0.25969506
## 2018 0.46705143 0.43845292 0.44575760 0.49358257 0.54151090 0.52648807
## 2019 0.36737014 0.41440262 0.44182961 0.49134292 0.47332242 0.40020674
## 2020 0.41950211 0.33391334 0.11535877 0.00000000 0.09651133 0.19033508
## 2021 0.33656646 0.40747696 0.44227754 0.43318115 0.46884314 0.52469636
## 2022 0.64994401 0.74941855 0.94430183 0.85144285 0.92052718 0.98981824
## Jul Aug Sep Oct Nov Dec
## 2012 0.78260776 0.87067245 0.88112635 0.85138633 0.82829958 0.82849858
## 2013 0.87050983 0.90048379 0.90668685 0.87225912 0.84330941 0.87282265
## 2014 0.87018692 0.81667672 0.77326212 0.67227151 0.57834439 0.40995779
## 2015 0.34418124 0.25476785 0.26086657 0.26786114 0.22813334 0.16053062
## 2016 0.23860798 0.24636058 0.24808338 0.29201482 0.25032303 0.32640193
## 2017 0.27509691 0.29873374 0.32981308 0.35017659 0.40199845 0.41495392
## 2018 0.53362047 0.51725385 0.56149539 0.57558791 0.42663451 0.34025325
## 2019 0.41795159 0.37860281 0.40310104 0.37450254 0.40685675 0.43735033
## 2020 0.21731415 0.23154449 0.20211905 0.19491774 0.21976053 0.28615729
## 2021 0.53999483 0.49434060 0.53499871 0.63075200 0.60856232 0.53568783
## 2022 0.86870531 0.77453700 0.69439228 0.71616849
Splitting Data (Data Training dan Testing)
#Split Data
data.train <- ts(data[1:96,1])
data.test <- ts(data[97:130,1])
dataMinyak.train <- ts(stddataMinyak[1:96,1])
dataMinyak.test <- ts(stddataMinyak[97:130,1])
#Time Series Data
training.ts<-ts(data.train,frequency=12, start=2012)
testing.ts<-ts(data.test,frequency=12, start=2020)
Minyaktraining.ts<-ts(dataMinyak.train,frequency=12, start=2012)
Minyaktesting.ts<-ts(dataMinyak.test,frequency=12, start=2020)
#Plot Data
plot(training.ts, xlab ="Waktu", ylab = "Data Inflasi (Persen)", col="red", main = "Plot Data Training")
points(training.ts)
plot(testing.ts, xlab ="Waktu", ylab = "Data Inflasi (Persen)", col="red", main = "Plot Data Testing")
points(testing.ts)
plot(Minyaktraining.ts,xlab ="Waktu", ylab = "Rata-Rata Harga Minyak", col="black", main = "Plot Data Deret Waktu Data Harga Minyak")
points(Minyaktraining.ts)
plot(Minyaktesting.ts,xlab ="Waktu", ylab = "Rata-Rata Harga Minyak", col="black", main = "Plot Data Deret Waktu Data Harga Minyak")
points(Minyaktesting.ts)
## Plot Data Training dan testing Inflasi
ts.plot(data.ts, xlab = "Periode", ylab ="Data Inflasi (Persen)",
main = "Plot Data Training dan Data Testing")
lines(training.ts, col = "blue")
lines(testing.ts, col="Red")
legend(2020,9,c("Data Training","Data Testing"),
lty=8, col=c("blue","red"), cex=0.8)
abline(v=2020, col=c("black"), lty=1, lwd=1)
#Plot Training - Testing Data Minyak
ts.plot(stddataMinyak, xlab = "Periode", ylab ="Data Inflasi (Persen)",
main = "Plot Data Training dan Data Testing")
lines(Minyaktraining.ts, col = "blue")
lines(Minyaktesting.ts, col="Red")
legend(2020,9,c("Data Training","Data Testing"),
lty=8, col=c("blue","red"), cex=0.8)
abline(v=2020, col=c("black"), lty=1, lwd=1)
Smoothing Data
Double Moving Average
iterasi_dma <- function(x,min,max,metode=c("SSE","MSE","RMSE","MAD","MAPE")){
tabledma <- data.frame()
z <- max-min+1
temp <- sqrt(z)
a <- round(temp)
b=a
if(a*b<z){
b=b+1
}
par(mfrow=c(a,b))
for(i in min:max) {
df_ts_sma <- SMA(x, n=i)
df_ts_dma <- SMA(df_ts_sma, n=i)
At <- 2*df_ts_sma-df_ts_dma
Bt <- df_ts_sma-df_ts_dma
dmasmoothing <- At+Bt
ramal_dma <- c(NA, dmasmoothing)
df_dma <- cbind(df_aktual=c(x,NA), dmasmoothing=c(dmasmoothing,NA), ramal_dma)
error.dma <- df_dma[, 1] - df_dma[, 3]
SSE.dma <- sum(error.dma^2, na.rm = T)
MSE.dma <- mean(error.dma^2, na.rm = T)
RMSE.dma <- sqrt(mean(error.dma^2, na.rm = T))
MAD.dma <- mean(abs(error.dma), na.rm = T)
r.error.dma <- (error.dma/df_dma[, 1])*100
MAPE.dma <- mean(abs(r.error.dma), na.rm = T)
ak <- data.frame(n=i,SSE=SSE.dma,MSE=MSE.dma,RMSE=RMSE.dma,
MAD=MAD.dma,MAPE=MAPE.dma)
tabledma <- rbind(tabledma,ak)
}
opt <- tabledma$n[which.min(tabledma[,metode])]
return(list(Akurasi=tabledma,n.optimum=paste("Nilai n optimum dengan menggunakan metode Double Moving Average berada pada n =",opt),smoothing=dmasmoothing, ramalan=ramal_dma))
}
dma_iter<-iterasi_dma(data.train,2,30, metode= "MAPE")
dma_iter[[2]]
## [1] "Nilai n optimum dengan menggunakan metode Double Moving Average berada pada n = 2"
#Single Moving Average dengan N=2
df_ts_sma <- SMA(training.ts, n=2)
#Double Moving Average dengan N=2
df_ts_dma <- SMA(df_ts_sma, n=2)
At <- c(2*df_ts_sma-df_ts_dma)
Bt <- c(df_ts_sma-df_ts_dma)
pemulusan_dma <- c(At+Bt)
ramal_dma <- c(NA, pemulusan_dma)
df_dma <- cbind(df_aktual=c(training.ts,NA), pemulusan_dma=c(pemulusan_dma,NA), ramal_dma)
head(df_dma)
## df_aktual pemulusan_dma ramal_dma
## [1,] 3.65 NA NA
## [2,] 3.56 NA NA
## [3,] 3.97 3.925 NA
## [4,] 4.50 4.705 3.925
## [5,] 4.45 4.715 4.705
## [6,] 4.53 4.505 4.715
#Plot
ts.plot(training.ts, xlab="Tahun", ylab="Data Inflasi", col="blue", lty=3, ylim=c(1, 12))
points(training.ts)
pemulusan_dma.ts<-ts(pemulusan_dma,frequency=12, start=2012)
ramal_dma.ts <- ts(ramal_dma, frequency=12, start=2012)
lines(pemulusan_dma.ts,col="red",lwd=2)
lines(ramal_dma.ts,col="black",lwd=2)
title("Double Moving Average N = 2", cex.main=1, font.main=4 ,col.main="black")
legend("topleft", c("Data Aktual","Pemulusan","Ramalan"),lty=3:1,col=c ("blue","red","black"))
### Ukuran Keakuratan Ramalan
# Ukuran Keakuratan
error.dma <- df_dma[, 1] - df_dma[, 3]
## SSE (Sum Square Error)
SSE.dma <- sum(error.dma^2, na.rm = T)
## MSE (Mean Squared Error)
MSE.dma <- mean(error.dma^2, na.rm = T)
## RMSE (Root Mean Square Error)
RMSE.dma <- sqrt(mean(error.dma^2, na.rm = T))
## MAD (Mean Absolute Deviation)
MAD.dma <- mean(abs(error.dma), na.rm = T)
## MAPE (Mean Absolute Percentage Error)
r.error.dma <- (error.dma/df_dma[, 1])*100 # Relative Error
MAPE.dma <- mean(abs(r.error.dma), na.rm = T)
akurasidma <- data.frame(
"Ukuran Keakuratan" = c("SSE", "MSE", "MAPE", "RMSE", "MAD"),
"Double Moving Average N=2" = c(SSE.dma, MSE.dma, MAPE.dma, RMSE.dma, MAD.dma))
kable(akurasidma)
| Ukuran.Keakuratan | Double.Moving.Average.N.2 |
|---|---|
| SSE | 48.4388000 |
| MSE | 0.5208473 |
| MAPE | 10.4800038 |
| RMSE | 0.7216975 |
| MAD | 0.4926882 |
Double Exponential Smoothing
Des <- HoltWinters(training.ts, gamma = FALSE)
## Warning in HoltWinters(training.ts, gamma = FALSE): optimization difficulties:
## ERROR: ABNORMAL_TERMINATION_IN_LNSRCH
Des
## Holt-Winters exponential smoothing with trend and without seasonal component.
##
## Call:
## HoltWinters(x = training.ts, gamma = FALSE)
##
## Smoothing parameters:
## alpha: 1
## beta : 0.003543673
## gamma: FALSE
##
## Coefficients:
## [,1]
## a 2.72000000
## b -0.06851632
tabledes <- data.frame("Alpha Optimum"=c(Des$alpha), "Beta Optimum"=c(Des$beta))
kable(tabledes)
| Alpha.Optimum | Beta.Optimum | |
|---|---|---|
| alpha | 1 | 0.0035437 |
Des1 <- HoltWinters(training.ts, gamma = FALSE, alpha = 0.999)
Des1
## Holt-Winters exponential smoothing with trend and without seasonal component.
##
## Call:
## HoltWinters(x = training.ts, alpha = 0.999, gamma = FALSE)
##
## Smoothing parameters:
## alpha: 0.999
## beta : 0.003504798
## gamma: FALSE
##
## Coefficients:
## [,1]
## a 2.72021211
## b -0.06869918
tabledes1 <- data.frame("Alpha Optimum"=c(Des1$alpha), "Beta Optimum"=c(Des1$beta))
kable(tabledes1)
| Alpha.Optimum | Beta.Optimum |
|---|---|
| 0.999 | 0.0035048 |
Dengan menggunakan metode HoltWinters, diperoleh \(\alpha\) sebesar 0.999 dan \(\beta\) beta sebesar 0.0035048
ramalanDES <- forecast(Des1, h=34)
ramalanDES
## Point Forecast Lo 80 Hi 80 Lo 95 Hi 95
## Jan 2020 2.6515129 1.87166493 3.431361 1.45883834 3.844188
## Feb 2020 2.5828137 1.47856197 3.687066 0.89400640 4.271621
## Mar 2020 2.5141146 1.15954531 3.868684 0.44247965 4.585749
## Apr 2020 2.4454154 0.87868774 4.012143 0.04931222 4.841519
## May 2020 2.3767162 0.62208810 4.131344 -0.30675591 5.060188
## Jun 2020 2.3080170 0.38262729 4.233407 -0.63661247 5.252647
## Jul 2020 2.2393179 0.15608288 4.322553 -0.94671510 5.425351
## Aug 2020 2.1706187 -0.06029182 4.401529 -1.24126450 5.582502
## Sep 2020 2.1019195 -0.26840149 4.472240 -1.52317363 5.727013
## Oct 2020 2.0332203 -0.46963061 4.536071 -1.79455986 5.861000
## Nov 2020 1.9645211 -0.66502255 4.594065 -2.05701890 5.986061
## Dec 2020 1.8958220 -0.85538656 4.647030 -2.31178838 6.103432
## Jan 2021 1.8271228 -1.04136507 4.695611 -2.55985081 6.214096
## Feb 2021 1.7584236 -1.22347807 4.740325 -2.80200147 6.318849
## Mar 2021 1.6897244 -1.40215339 4.781602 -3.03889464 6.418343
## Apr 2021 1.6210252 -1.57774794 4.819798 -3.27107619 6.513127
## May 2021 1.5523261 -1.75056312 4.855215 -3.49900704 6.603659
## Jun 2021 1.4836269 -1.92085612 4.888110 -3.72308056 6.690334
## Jul 2021 1.4149277 -2.08884846 4.918704 -3.94363553 6.773491
## Aug 2021 1.3462285 -2.25473255 4.947190 -4.16096620 6.853423
## Sep 2021 1.2775294 -2.41867670 4.973735 -4.37533000 6.930389
## Oct 2021 1.2088302 -2.58082915 4.998489 -4.58695362 7.004614
## Nov 2021 1.1401310 -2.74132124 5.021583 -4.79603794 7.076300
## Dec 2021 1.0714318 -2.90026996 5.043134 -5.00276189 7.145626
## Jan 2022 1.0027326 -3.05778008 5.063245 -5.20728567 7.212751
## Feb 2022 0.9340335 -3.21394578 5.082013 -5.40975334 7.277820
## Mar 2022 0.8653343 -3.36885214 5.099521 -5.61029504 7.340964
## Apr 2022 0.7966351 -3.52257630 5.115847 -5.80902871 7.402299
## May 2022 0.7279359 -3.67518844 5.131060 -6.00606169 7.461934
## Jun 2022 0.6592367 -3.82675263 5.145226 -6.20149195 7.519965
## Jul 2022 0.5905376 -3.97732752 5.158403 -6.39540922 7.576484
## Aug 2022 0.5218384 -4.12696699 5.170644 -6.58789590 7.631573
## Sep 2022 0.4531392 -4.27572065 5.181999 -6.77902785 7.685306
## Oct 2022 0.3844400 -4.42363430 5.192514 -6.96887511 7.737755
#Plot DES
plot(Des1)
points(training.ts)
legend("topright", c("Data aktual","Pemulusan DES"),lty=1:2,col=c ("black","red"))
Keakuratan Ramalan Pada Data Training
SSEDES<-Des1$SSE
MSEDES<-Des1$SSE/length(data.train)
RMSEDES<-sqrt(MSEDES)
# Mencari MAPE dengan manual
fittedDES<-ramalanDES$fitted
sisaanDES<-ramalanDES$residuals
residDES<-training.ts-ramalanDES$fitted
MAPEDES <-sum(abs(sisaanDES[3:length(data.train)]/data.train[3:length(data.train)])*100)/length(data.train)
akurasiDES <- data.frame(
"Ukuran Keakuratan Data Training" = c("SSE", "MSE", "RMSE", "MAPE"),
"Double Exponential Smoothing" = c(SSEDES, MSEDES, RMSEDES, MAPEDES))
kable(akurasiDES)
| Ukuran.Keakuratan.Data.Training | Double.Exponential.Smoothing |
|---|---|
| SSE | 34.8311655 |
| MSE | 0.3628246 |
| RMSE | 0.6023493 |
| MAPE | 8.0359336 |
Perbandingan keakuratan pada data testing Double Moving Average dengan Double Exponential Smoothing
akurasiDESDMA <- data.frame(
"Ukuran Keakuratan Data Training" = c("SSE", "MSE", "RMSE", "MAPE"),
"Double Exponential Smoothing" = c(SSEDES, MSEDES, RMSEDES, MAPEDES), "Double Moving Average N = 2" = c(SSE.dma, MSE.dma, RMSE.dma, MAPE.dma))
kable(akurasiDESDMA)
| Ukuran.Keakuratan.Data.Training | Double.Exponential.Smoothing | Double.Moving.Average.N…2 |
|---|---|---|
| SSE | 34.8311655 | 48.4388000 |
| MSE | 0.3628246 | 0.5208473 |
| RMSE | 0.6023493 | 0.7216975 |
| MAPE | 8.0359336 | 10.4800038 |
Karena MAPE yang dihasilkan pada metode Double Exponential Smoothing lebih kecil dari MAPE yang dihasilkan oleh metode Double Moving Average, maka metode Double Exponential Smoothing lebih baik digunakan untuk dilakukan smoothing.
Keakuratan Ramalan Pada Data Testing
selisih.test <- c(ramalanDES$mean)-c(data.test)
SSEtesting<-sum(selisih.test^2)
MSEtesting<-SSEtesting/length(data.test)
RMSEtesting<-sqrt(MSEtesting)
MAPEtesting<-sum(abs(selisih.test))/length(data.test)
akurasi.test <- data.frame("Perbandingan Ukuran Keakuratan Data Testing" = c("SSE", "MSE", "RMSE", "MAPE"), "Double Exponential Smoothing" = c(SSEtesting, MSEtesting, RMSEtesting, MAPEtesting))
kable(akurasi.test)
| Perbandingan.Ukuran.Keakuratan.Data.Testing | Double.Exponential.Smoothing |
|---|---|
| SSE | 133.974681 |
| MSE | 3.940432 |
| RMSE | 1.985052 |
| MAPE | 1.224675 |
1. Mencari model ARIMA dari Variabel Independen (Harga Minyak)
Cek Kestasioneran Data
1. ACF & PACF Plot data inflasi dan data ekspor minyak rusia
acf(stddataMinyak, lag.max = 24, main="Plot ACF Data Inflasi")
pacf(stddataMinyak, lag.max = 24, main="Plot PACF Data Inflasi")
tidak stasioner.
2. Uji Formal (ADF-Test)
\(H_{0}\): Data tidak stasioner
\(H_{1}\): Data stasioner
\(\alpha\) = 5% = 0.05
adf.test(dataMinyak.test)
##
## Augmented Dickey-Fuller Test
##
## data: dataMinyak.test
## Dickey-Fuller = -1.7649, Lag order = 3, p-value = 0.6641
## alternative hypothesis: stationary
kpss.test(dataMinyak.test)
## Warning in kpss.test(dataMinyak.test): p-value smaller than printed p-value
##
## KPSS Test for Level Stationarity
##
## data: dataMinyak.test
## KPSS Level = 0.82167, Truncation lag parameter = 3, p-value = 0.01
tak tolak \(H_{0}\). Artinya, cukup bukti untuk
mengatakan bahwa data tidak stasioner pada taraf nyata 5%. Untuk
mengatasi ketidakstasioneran tersebut, perlu dilakukan
differencing.
Pemodelan Data dengan Data Training pada Data Inflasi
Karena data tidak stasioner, maka akan dilakukan differencing untuk menstasionerkan data.
Differencing 1
stasioner dalam nilai tengah.
data.dif1<-diff(data.train,differences = 1)
plot.ts(data.dif1,lty=1,ylab= "Data Inflasi Pembedaan 1", main="Plot Differencing Data Inflasi")
Cek Kestasioneran Data Setelah Differencing
Pengujian menggunakan Augmented Dickey-Fuller Test
\(H_{0}\): Data tidak stasioner
\(H_{1}\): Data stasioner
\(\alpha\) = 5% = 0.05
adf.test(data.dif1)
## Warning in adf.test(data.dif1): p-value smaller than printed p-value
##
## Augmented Dickey-Fuller Test
##
## data: data.dif1
## Dickey-Fuller = -4.54, Lag order = 4, p-value = 0.01
## alternative hypothesis: stationary
tolak H_0.
Artinya, cukup bukti untuk mengatakan bahwa data stasioner
pada taraf nyata 5% setelah dilakukan differencing sebanyak 1
kali.
ACF & PACF Plot, EACF Matrix
acfdif <- acf(data.dif1, lag.max = 24)
pacfdif <- pacf(data.dif1, lag.max = 24)
plot(acfdif, main = "Plot ACF Data Inflasi Setelah Differencing satu kali")
plot(pacfdif, main = "Plot PACF Data Inflasi Setelah Differencing satu kali")
plot(acfdif, main = "Plot ACF Data Inflasi Setelah Differencing satu kali")
plot(pacfdif, main = "Plot PACF Data Inflasi Setelah Differencing satu kali")
eacf(data.dif1)
## 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 x o o
## 1 x x o o o o o o o o o x o o
## 2 o o o o o o o o o o o x o o
## 3 x o o o o o o o o o o x o o
## 4 x o o o o o o o o o o x o o
## 5 x x x o o o o o o o o x o o
## 6 x x x o o o o o o o o x o o
## 7 x o x o o o o o o o o x o o
Dari Matriks EACF Data Inflasi dapat diduga model yang cocok adalah model :
ARIMA(0,1,2)
ARIMA (0,1,3)
ARIMA (1,1,2)
ARIMA (3,1,1)
ARIMA (3,1,2)
Pemodelan Data dengan Data Training pada Data Harga Minyak
Karena data tidak stasioner, maka akan dilakukan differencing untuk menstasionerkan data.
dataMinyak.dif1<-diff(dataMinyak.train,differences = 1)
plot.ts(dataMinyak.dif1,lty=1,ylab= "Data harga minyak Pembedaan 1", main="Plot Differencing Train Data Inflasi")
adf.test(dataMinyak.dif1)
## Warning in adf.test(dataMinyak.dif1): p-value smaller than printed p-value
##
## Augmented Dickey-Fuller Test
##
## data: dataMinyak.dif1
## Dickey-Fuller = -4.207, Lag order = 4, p-value = 0.01
## alternative hypothesis: stationary
acfMinyak <-acf(dataMinyak.dif1, lag.max = 24)
pacfMinyak <-pacf(dataMinyak.dif1, lag.max = 24)
plot(acfMinyak, main = "Plot ACF Harga Minyak Setelah Differencing satu kali")
plot(pacfMinyak,main = "Plot PACF Harga Minyak Setelah Differencing satu kali")
eacf(dataMinyak.dif1)
## 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 o 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 o x o o o o o o o o o o o o
## 6 x o x o o o o o o o o o o o
## 7 x o x o o o o o o o o o o o
Dari Matriks EACF Harga Minyak dapat diduga model yang cocok adalah model :
ARIMA(0,1,2)
ARIMA (1,1,2)
ARIMA (2,1,2)
ARIMA (3,1,2)
Pemodelan ARIMA Data Inflasi
Identifikasi Model Tentatif
ARIMA(0,1,1), dengan orde p = 0, d = 1, dan q = 1
ARIMA(2,1,0), dengan orde p = 2, d = 1, dan q = 0
ARIMA(0,1,2), dengan orde p = 0, d = 1, dan q = 2
ARIMA(0,1,3), dengan orde p = 0, d = 1, dan q = 3
ARIMA(1,1,2), dengan orde p = 1, d = 1, dan q = 2
ARIMA(3,1,1), dengan orde p = 3, d = 1, dan q = 1
ARIMA(3,1,2), dengan orde p = 3, d = 1, dan q = 2
model1 <- Arima(data.dif1, order=c(0,0,1), method="ML")
model2 <- Arima(data.dif1, order=c(2,0,0), method="ML")
model3 <- Arima(data.dif1, order=c(0,0,2), method="ML")
model4 <- Arima(data.dif1, order=c(0,0,3), method="ML")
model5 <- Arima(data.dif1, order=c(1,0,2), method="ML")
model6 <- Arima(data.dif1, order=c(3,0,1), method="ML")
model7 <- Arima(data.dif1, order=c(3,0,2), method="ML")
Pendugaan Parameter Model
ARIMA(0,1,1)
summary(model1)
## Series: data.dif1
## ARIMA(0,0,1) with non-zero mean
##
## Coefficients:
## ma1 mean
## 0.3490 -0.0113
## s.e. 0.1007 0.0790
##
## sigma^2 = 0.3345: log likelihood = -81.83
## AIC=169.66 AICc=169.93 BIC=177.32
##
## Training set error measures:
## ME RMSE MAE MPE MAPE MASE ACF1
## Training set 0.0004262922 0.5722137 0.3513354 -Inf Inf 0.7426473 -0.03000317
lmtest::coeftest((model1))
##
## z test of coefficients:
##
## Estimate Std. Error z value Pr(>|z|)
## ma1 0.348971 0.100691 3.4658 0.0005287 ***
## intercept -0.011280 0.078982 -0.1428 0.8864335
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Diperoleh persamaan pada model:
ARIMA(2,1,0)
summary(model2)
## Series: data.dif1
## ARIMA(2,0,0) with non-zero mean
##
## Coefficients:
## ar1 ar2 mean
## 0.3020 -0.2419 -0.0108
## s.e. 0.0992 0.0987 0.0617
##
## sigma^2 = 0.3288: log likelihood = -80.53
## AIC=169.05 AICc=169.5 BIC=179.27
##
## Training set error measures:
## ME RMSE MAE MPE MAPE MASE ACF1
## Training set 0.0009839349 0.5642494 0.3459638 Inf Inf 0.731293 -0.0004607976
lmtest::coeftest((model2))
##
## z test of coefficients:
##
## Estimate Std. Error z value Pr(>|z|)
## ar1 0.302001 0.099202 3.0443 0.002332 **
## ar2 -0.241863 0.098727 -2.4498 0.014293 *
## intercept -0.010841 0.061723 -0.1756 0.860574
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Diperoleh persamaan pada model:
ARIMA(0,1,2)
summary(model3)
## Series: data.dif1
## ARIMA(0,0,2) with non-zero mean
##
## Coefficients:
## ma1 ma2 mean
## 0.2843 -0.1095 -0.0106
## s.e. 0.1103 0.1086 0.0686
##
## sigma^2 = 0.3346: log likelihood = -81.33
## AIC=170.66 AICc=171.11 BIC=180.88
##
## Training set error measures:
## ME RMSE MAE MPE MAPE MASE ACF1
## Training set 0.0003472967 0.5692085 0.3471446 Inf Inf 0.7337888 0.01808154
lmtest::coeftest((model3))
##
## z test of coefficients:
##
## Estimate Std. Error z value Pr(>|z|)
## ma1 0.284312 0.110346 2.5765 0.00998 **
## ma2 -0.109462 0.108619 -1.0078 0.31357
## intercept -0.010646 0.068573 -0.1552 0.87663
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Diperoleh persamaan pada model:
ARIMA(0,1,3)
summary(model4)
## Series: data.dif1
## ARIMA(0,0,3) with non-zero mean
##
## Coefficients:
## ma1 ma2 ma3 mean
## 0.3030 -0.1566 -0.1372 -0.0110
## s.e. 0.1023 0.1045 0.0994 0.0586
##
## sigma^2 = 0.3315: log likelihood = -80.41
## AIC=170.81 AICc=171.49 BIC=183.58
##
## Training set error measures:
## ME RMSE MAE MPE MAPE MASE ACF1
## Training set 0.001378825 0.5634979 0.3481822 Inf Inf 0.7359821 0.0006102943
lmtest::coeftest((model4))
##
## z test of coefficients:
##
## Estimate Std. Error z value Pr(>|z|)
## ma1 0.302963 0.102343 2.9603 0.003074 **
## ma2 -0.156631 0.104480 -1.4991 0.133836
## ma3 -0.137235 0.099393 -1.3807 0.167362
## intercept -0.010982 0.058600 -0.1874 0.851346
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Diperoleh persamaan pada model:
ARIMA(1,1,2)
summary(model5)
## Series: data.dif1
## ARIMA(1,0,2) with non-zero mean
##
## Coefficients:
## ar1 ma1 ma2 mean
## 0.8800 -0.6099 -0.3901 -0.0282
## s.e. 0.0599 0.1043 0.0995 0.0194
##
## sigma^2 = 0.3221: log likelihood = -79.98
## AIC=169.95 AICc=170.63 BIC=182.72
##
## Training set error measures:
## ME RMSE MAE MPE MAPE MASE ACF1
## Training set 0.04241606 0.5554849 0.3527581 Inf Inf 0.7456547 -0.01252043
lmtest::coeftest((model5))
##
## z test of coefficients:
##
## Estimate Std. Error z value Pr(>|z|)
## ar1 0.879966 0.059945 14.6796 < 2.2e-16 ***
## ma1 -0.609942 0.104278 -5.8492 4.939e-09 ***
## ma2 -0.390054 0.099526 -3.9191 8.887e-05 ***
## intercept -0.028221 0.019389 -1.4555 0.1455
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Diperoleh persamaan pada model:
ARIMA(3,1,1)
summary(model6)
## Series: data.dif1
## ARIMA(3,0,1) with non-zero mean
##
## Coefficients:
## Warning in sqrt(diag(x$var.coef)): NaNs produced
## ar1 ar2 ar3 ma1 mean
## 0.1284 -0.1871 -0.0517 0.171 -0.0109
## s.e. NaN NaN NaN NaN 0.0612
##
## sigma^2 = 0.336: log likelihood = -80.52
## AIC=173.04 AICc=173.99 BIC=188.36
##
## Training set error measures:
## ME RMSE MAE MPE MAPE MASE ACF1
## Training set 0.001047293 0.5642167 0.3458751 Inf Inf 0.7311055 0.001935606
lmtest::coeftest((model6))
## Warning in sqrt(diag(se)): NaNs produced
##
## z test of coefficients:
##
## Estimate Std. Error z value Pr(>|z|)
## ar1 0.128449 NaN NaN NaN
## ar2 -0.187099 NaN NaN NaN
## ar3 -0.051727 NaN NaN NaN
## ma1 0.170953 NaN NaN NaN
## intercept -0.010853 0.061186 -0.1774 0.8592
Diperoleh persamaan pada model:
ARIMA(3,1,2)
summary(model7)
## Series: data.dif1
## ARIMA(3,0,2) with non-zero mean
##
## Coefficients:
## Warning in sqrt(diag(x$var.coef)): NaNs produced
## ar1 ar2 ar3 ma1 ma2 mean
## 0.1672 -0.1532 -0.0571 0.1311 -0.0464 -0.0108
## s.e. NaN NaN NaN NaN 0.1879 0.0604
##
## sigma^2 = 0.3397: log likelihood = -80.51
## AIC=175.02 AICc=176.31 BIC=192.9
##
## Training set error measures:
## ME RMSE MAE MPE MAPE MASE ACF1
## Training set 0.001129378 0.5641619 0.3463942 Inf Inf 0.7322027 0.002545374
lmtest::coeftest((model7))
## Warning in sqrt(diag(se)): NaNs produced
##
## z test of coefficients:
##
## Estimate Std. Error z value Pr(>|z|)
## ar1 0.167204 NaN NaN NaN
## ar2 -0.153203 NaN NaN NaN
## ar3 -0.057106 NaN NaN NaN
## ma1 0.131094 NaN NaN NaN
## ma2 -0.046401 0.187872 -0.2470 0.8049
## intercept -0.010843 0.060359 -0.1796 0.8574
Diperoleh persamaan pada model:
Perbandingan Kebaikan Model Tentatif
#AIC ARIMA dan Signifikansi Parameter
modelaccuracy<-data.frame(
"Model"=c("ARIMA(0,1,1)", "ARIMA(2,1,0)", "ARIMA(0,1,2)", "ARIMA(0,1,3)","ARIMA(1,1,2)", "ARIMA(3,1,1)", "ARIMA(3,1,2)"),
"AIC"=c(model1$aic, model2$aic, model3$aic,model4$aic,model5$aic,model6$aic,model7$aic),
"BIC"=c(model1$bic, model2$bic, model3$bic,model4$bic,model5$bic,model6$bic,model7$bic),
"Signifikansi"=c("Signifikan","Signifikan","Tidak Signifikan","Tidak Signifikan","Signifikan","Tidak Signifikan","Tidak Signifikan"))
modelaccuracy
## Model AIC BIC Signifikansi
## 1 ARIMA(0,1,1) 169.6621 177.3237 Signifikan
## 2 ARIMA(2,1,0) 169.0506 179.2661 Signifikan
## 3 ARIMA(0,1,2) 170.6633 180.8788 Tidak Signifikan
## 4 ARIMA(0,1,3) 170.8122 183.5816 Tidak Signifikan
## 5 ARIMA(1,1,2) 169.9512 182.7206 Signifikan
## 6 ARIMA(3,1,1) 173.0399 188.3632 Tidak Signifikan
## 7 ARIMA(3,1,2) 175.0214 192.8985 Tidak Signifikan
kable(modelaccuracy)
| Model | AIC | BIC | Signifikansi |
|---|---|---|---|
| ARIMA(0,1,1) | 169.6621 | 177.3237 | Signifikan |
| ARIMA(2,1,0) | 169.0506 | 179.2661 | Signifikan |
| ARIMA(0,1,2) | 170.6633 | 180.8788 | Tidak Signifikan |
| ARIMA(0,1,3) | 170.8122 | 183.5816 | Tidak Signifikan |
| ARIMA(1,1,2) | 169.9512 | 182.7206 | Signifikan |
| ARIMA(3,1,1) | 173.0399 | 188.3632 | Tidak Signifikan |
| ARIMA(3,1,2) | 175.0214 | 192.8985 | Tidak Signifikan |
Pemodelan Arima Data Harga Minyak
Identifikasi Model Tentatif
modelm1 <- Arima(dataMinyak.dif1, order=c(1,0,0), method="ML")
modelm2 <- Arima(dataMinyak.dif1, order=c(0,0,1), method="ML")
modelm3 <- Arima(dataMinyak.dif1, order=c(0,0,2), method="ML")
modelm4 <- Arima(dataMinyak.dif1, order=c(0,0,3), method="ML")
modelm5 <- Arima(dataMinyak.dif1, order=c(1,0,2), method="ML")
modelm6 <- Arima(dataMinyak.dif1, order=c(2,0,2), method="ML")
modelm7 <- Arima(dataMinyak.dif1, order=c(3,0,2), method="ML")
summary(modelm1)
## Series: dataMinyak.dif1
## ARIMA(1,0,0) with non-zero mean
##
## Coefficients:
## ar1 mean
## 0.3383 -0.0042
## s.e. 0.0969 0.0076
##
## sigma^2 = 0.002473: log likelihood = 151.27
## AIC=-296.54 AICc=-296.28 BIC=-288.88
##
## Training set error measures:
## ME RMSE MAE MPE MAPE MASE
## Training set -0.0002610692 0.0491984 0.04000873 169.6177 176.3294 0.8716311
## ACF1
## Training set 0.05174304
lmtest::coeftest((modelm1))
##
## z test of coefficients:
##
## Estimate Std. Error z value Pr(>|z|)
## ar1 0.3382527 0.0968582 3.4922 0.000479 ***
## intercept -0.0042342 0.0075910 -0.5578 0.576985
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
summary(modelm2)
## Series: dataMinyak.dif1
## ARIMA(0,0,1) with non-zero mean
##
## Coefficients:
## ma1 mean
## 0.3476 -0.0045
## s.e. 0.0876 0.0068
##
## sigma^2 = 0.00245: log likelihood = 151.71
## AIC=-297.42 AICc=-297.16 BIC=-289.76
##
## Training set error measures:
## ME RMSE MAE MPE MAPE MASE
## Training set -0.0001275517 0.04896879 0.03991593 155.6702 163.5104 0.8696092
## ACF1
## Training set 0.02560585
lmtest::coeftest((modelm2))
##
## z test of coefficients:
##
## Estimate Std. Error z value Pr(>|z|)
## ma1 0.3476041 0.0875754 3.9692 7.211e-05 ***
## intercept -0.0045477 0.0067530 -0.6734 0.5007
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
summary(modelm3)
## Series: dataMinyak.dif1
## ARIMA(0,0,2) with non-zero mean
##
## Coefficients:
## ma1 ma2 mean
## 0.3999 0.1117 -0.0043
## s.e. 0.1080 0.1223 0.0075
##
## sigma^2 = 0.002455: log likelihood = 152.11
## AIC=-296.21 AICc=-295.77 BIC=-285.99
##
## Training set error measures:
## ME RMSE MAE MPE MAPE MASE
## Training set -0.0002182282 0.04875703 0.03944992 162.7797 172.368 0.8594567
## ACF1
## Training set -0.01320808
lmtest::coeftest((modelm3))
##
## z test of coefficients:
##
## Estimate Std. Error z value Pr(>|z|)
## ma1 0.3999414 0.1079526 3.7048 0.0002116 ***
## ma2 0.1116879 0.1223251 0.9130 0.3612205
## intercept -0.0043161 0.0075335 -0.5729 0.5667045
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
summary(modelm4)
## Series: dataMinyak.dif1
## ARIMA(0,0,3) with non-zero mean
##
## Coefficients:
## ma1 ma2 ma3 mean
## 0.3584 0.0392 -0.1281 -0.0046
## s.e. 0.1050 0.1220 0.1054 0.0063
##
## sigma^2 = 0.002445: log likelihood = 152.81
## AIC=-295.62 AICc=-294.95 BIC=-282.85
##
## Training set error measures:
## ME RMSE MAE MPE MAPE MASE
## Training set -9.110006e-05 0.04839069 0.0388858 133.9833 146.9447 0.8471668
## ACF1
## Training set 0.01255828
lmtest::coeftest((modelm4))
##
## z test of coefficients:
##
## Estimate Std. Error z value Pr(>|z|)
## ma1 0.3584091 0.1049821 3.4140 0.0006402 ***
## ma2 0.0391680 0.1220011 0.3210 0.7481755
## ma3 -0.1281451 0.1053850 -1.2160 0.2239960
## intercept -0.0045766 0.0063063 -0.7257 0.4680140
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
summary(modelm5)
## Series: dataMinyak.dif1
## ARIMA(1,0,2) with non-zero mean
##
## Coefficients:
## ar1 ma1 ma2 mean
## -0.3254 0.7193 0.2367 -0.0043
## s.e. 0.4794 0.4648 0.1808 0.0073
##
## sigma^2 = 0.002471: log likelihood = 152.31
## AIC=-294.63 AICc=-293.95 BIC=-281.86
##
## Training set error measures:
## ME RMSE MAE MPE MAPE MASE
## Training set -0.0001987893 0.04864788 0.03921654 155.5108 166.2217 0.8543724
## ACF1
## Training set -0.01014127
lmtest::coeftest((modelm5))
##
## z test of coefficients:
##
## Estimate Std. Error z value Pr(>|z|)
## ar1 -0.3254473 0.4793546 -0.6789 0.4972
## ma1 0.7192886 0.4647894 1.5476 0.1217
## ma2 0.2367229 0.1808414 1.3090 0.1905
## intercept -0.0043370 0.0073405 -0.5908 0.5546
summary(modelm6)
## Series: dataMinyak.dif1
## ARIMA(2,0,2) with non-zero mean
##
## Coefficients:
## ar1 ar2 ma1 ma2 mean
## 0.6013 -0.5547 -0.2406 0.3873 -0.0049
## s.e. 0.3117 0.2358 0.3316 0.2666 0.0059
##
## sigma^2 = 0.002424: log likelihood = 153.69
## AIC=-295.38 AICc=-294.42 BIC=-280.05
##
## Training set error measures:
## ME RMSE MAE MPE MAPE MASE
## Training set 0.0001048468 0.04792316 0.03825521 144.3942 163.2184 0.8334289
## ACF1
## Training set 0.007191712
lmtest::coeftest((modelm6))
##
## z test of coefficients:
##
## Estimate Std. Error z value Pr(>|z|)
## ar1 0.6013382 0.3117021 1.9292 0.05371 .
## ar2 -0.5547321 0.2357832 -2.3527 0.01864 *
## ma1 -0.2405728 0.3316190 -0.7254 0.46818
## ma2 0.3872516 0.2665591 1.4528 0.14628
## intercept -0.0048618 0.0059245 -0.8206 0.41186
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
summary(modelm7)
## Series: dataMinyak.dif1
## ARIMA(3,0,2) with non-zero mean
##
## Coefficients:
## ar1 ar2 ar3 ma1 ma2 mean
## 0.9748 -1.1119 0.2345 -0.6169 0.8397 -0.0047
## s.e. 0.2279 0.2489 0.1625 0.2105 0.2062 0.0066
##
## sigma^2 = 0.00242: log likelihood = 154.09
## AIC=-294.18 AICc=-292.89 BIC=-276.3
##
## Training set error measures:
## ME RMSE MAE MPE MAPE MASE
## Training set 0.0001366945 0.0476176 0.03764542 102.7592 139.714 0.820144
## ACF1
## Training set 0.008919317
lmtest::coeftest((modelm7))
##
## z test of coefficients:
##
## Estimate Std. Error z value Pr(>|z|)
## ar1 0.9747967 0.2278528 4.2782 1.884e-05 ***
## ar2 -1.1119163 0.2488990 -4.4673 7.920e-06 ***
## ar3 0.2344746 0.1624871 1.4430 0.149011
## ma1 -0.6168930 0.2105051 -2.9305 0.003384 **
## ma2 0.8397036 0.2061955 4.0724 4.654e-05 ***
## intercept -0.0047314 0.0066123 -0.7155 0.474275
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
#AIC ARIMA dan Signifikansi Parameter
modelmaccuracy<-data.frame(
"Model"=c("ARIMA(1,1,0)", "ARIMA(0,1,1)", "ARIMA(0,1,2)", "ARIMA(0,1,3)","ARIMA(1,1,2)", "ARIMA(2,1,2)", "ARIMA(3,1,2)"),
"AIC"=c(modelm1$aic, modelm2$aic, modelm3$aic,modelm4$aic,modelm5$aic,modelm6$aic,modelm7$aic),
"BIC"=c(modelm1$bic, modelm2$bic, modelm3$bic,modelm4$bic,modelm5$bic,modelm6$bic,modelm7$bic),
"Signifikansi"=c("Signifikan","Signifikan","Tidak Signifikan","Tidak Signifikan","Tidak Signifikan","Tidak Signifikan","Tidak Signifikan"))
modelmaccuracy
## Model AIC BIC Signifikansi
## 1 ARIMA(1,1,0) -296.5401 -288.8784 Signifikan
## 2 ARIMA(0,1,1) -297.4216 -289.7600 Signifikan
## 3 ARIMA(0,1,2) -296.2101 -285.9946 Tidak Signifikan
## 4 ARIMA(0,1,3) -295.6192 -282.8498 Tidak Signifikan
## 5 ARIMA(1,1,2) -294.6284 -281.8590 Tidak Signifikan
## 6 ARIMA(2,1,2) -295.3774 -280.0541 Tidak Signifikan
## 7 ARIMA(3,1,2) -294.1789 -276.3017 Tidak Signifikan
kable(modelmaccuracy)
| Model | AIC | BIC | Signifikansi |
|---|---|---|---|
| ARIMA(1,1,0) | -296.5401 | -288.8784 | Signifikan |
| ARIMA(0,1,1) | -297.4216 | -289.7600 | Signifikan |
| ARIMA(0,1,2) | -296.2101 | -285.9946 | Tidak Signifikan |
| ARIMA(0,1,3) | -295.6192 | -282.8498 | Tidak Signifikan |
| ARIMA(1,1,2) | -294.6284 | -281.8590 | Tidak Signifikan |
| ARIMA(2,1,2) | -295.3774 | -280.0541 | Tidak Signifikan |
| ARIMA(3,1,2) | -294.1789 | -276.3017 | Tidak Signifikan |
Diagnostik Model
Overfitting
model2b <- Arima(data.dif1, order=c(3,0,0), method="ML")
modelm1b <- Arima(dataMinyak.dif1, order=c(2,0,0), method="ML")
ARIMA(3,1,0)
coeftest(model2)
##
## z test of coefficients:
##
## Estimate Std. Error z value Pr(>|z|)
## ar1 0.302001 0.099202 3.0443 0.002332 **
## ar2 -0.241863 0.098727 -2.4498 0.014293 *
## intercept -0.010841 0.061723 -0.1756 0.860574
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
coeftest((model2b))
##
## z test of coefficients:
##
## Estimate Std. Error z value Pr(>|z|)
## ar1 0.298835 0.102398 2.9184 0.003519 **
## ar2 -0.238035 0.103396 -2.3022 0.021326 *
## ar3 -0.012674 0.101811 -0.1245 0.900928
## intercept -0.010852 0.060960 -0.1780 0.858708
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Karena parameter \(\phi _3\) atau ar3 tidak berbeda secara signifikan dari angka nol, dan
karena parameter \(\phi _1\) atau ar1 dan parameter \(\phi _2\) atau ar2 pada model ARIMA(3,1,0) tidak berubah secara signifikan dari parameter \(\phi _1\) atau ar1 dan parameter \(\phi _2\) atau ar2 pada model ARIMA(2,1,0),
Maka model ARIMA(2,1,0) tidak terjadi overfitting atau merupakan model yang baik untuk digunakan. (Cryer dan Chan. 2008)coeftest(modelm1)
##
## z test of coefficients:
##
## Estimate Std. Error z value Pr(>|z|)
## ar1 0.3382527 0.0968582 3.4922 0.000479 ***
## intercept -0.0042342 0.0075910 -0.5578 0.576985
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
coeftest((modelm1b))
##
## z test of coefficients:
##
## Estimate Std. Error z value Pr(>|z|)
## ar1 0.3895350 0.1013394 3.8439 0.0001211 ***
## ar2 -0.1574882 0.1017088 -1.5484 0.1215208
## intercept -0.0046498 0.0064898 -0.7165 0.4736917
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Uji Diagnostik
Diagnostik Model: Eksploratif
sisaanm1 <- modelm1$residuals
par(mfrow=c(2,2))
qqnorm(sisaanm1)
box(col="black",lwd=2)
qqline(sisaanm1, col = "red", lwd =1, col.lab="black",
col.axis="black",col.sub = "black")
box(col="black",lwd=2)
plot(c(1:length(sisaanm1)),sisaanm1,col="black",col.lab="black",col.axis="black")
box(col="black",lwd=2)
acf(sisaanm1,col="black",col.sub = "black",col.axis="black", col.lab="black")
box(col="black",lwd=2)
pacf(sisaanm1,col="black",col.sub = "black",col.axis="black", col.lab="black",col.main="black")
box(col="black",lwd=2)
sisaan2 <- model2$residuals
par(mfrow=c(2,2))
qqnorm(sisaan2)
box(col="black",lwd=2)
qqline(sisaan2, col = "red", lwd =1, col.lab="black",
col.axis="black",col.sub = "black")
box(col="black",lwd=2)
plot(c(1:length(sisaan2)),sisaan2,col="black",col.lab="black",col.axis="black")
box(col="black",lwd=2)
acf(sisaan2,col="black",col.sub = "black",col.axis="black", col.lab="black")
box(col="black",lwd=2)
pacf(sisaan2,col="black",col.sub = "black",col.axis="black", col.lab="black",col.main="black")
box(col="black",lwd=2)
Diagnostik Model: Uji Formal
1. Sisaan Menyebar Normal
Uji formal ini dilakukan dengan Shapiro-Wilk test.
Hipotesis yang diuji:
\(H_{0}\): Sisaan menyebar normal
\(H_{1}\): Sisaan tidak menyebar normal
\(\alpha\) = 5% = 0.05
shapiro.test(sisaanm1)
##
## Shapiro-Wilk normality test
##
## data: sisaanm1
## W = 0.98058, p-value = 0.171
shapiro.test(sisaan2)
##
## Shapiro-Wilk normality test
##
## data: sisaan2
## W = 0.85335, p-value = 2.943e-08
tolak \(H_{0}\). Artinya, tidak cukup bukti untuk
menyatakan bahwa sisaan menyebar normal pada taraf nyata 5%.
2. Sisaan Saling Bebas
Uji formal ini dilakukan dengan LJung-Box test.
Hipotesis yang diuji:
\(H_0\): Sisaan antara lag saling bebas
\(H_1\): Sisaan antara lag tidak saling bebas
\(\alpha\) = 5% = 0.05
Box.test(sisaanm1, type = "Ljung")
##
## Box-Ljung test
##
## data: sisaanm1
## X-squared = 0.26246, df = 1, p-value = 0.6084
Box.test(sisaan2, type = "Ljung")
##
## Box-Ljung test
##
## data: sisaan2
## X-squared = 2.0816e-05, df = 1, p-value = 0.9964
tak tolak \(H_0\).
Artinya, cukup bukti untuk menyatakan bahwa sisaan antara lag saling
bebas atau dapat dikatakan tidak ada autokorelasi antara sisaan lag pada
taraf nyata 5%.
3. Nilai Tengah Sisaan Sama dengan Nol
Uji formal ini dilakukan dengan t test.
Hipotesis yang diuji:
\(H_0\): Nilai tengah sisaan sama dengan nol
\(H_1\): Nilai tengah sisaan tidak sama dengan nol
\(\alpha\) = 5% = 0.05
t.test(sisaanm1, mu = 0, conf.level = 0.95)
##
## One Sample t-test
##
## data: sisaanm1
## t = -0.051449, df = 94, p-value = 0.9591
## alternative hypothesis: true mean is not equal to 0
## 95 percent confidence interval:
## -0.010336323 0.009814184
## sample estimates:
## mean of x
## -0.0002610692
t.test(sisaan2, mu = 0, conf.level = 0.95)
##
## One Sample t-test
##
## data: sisaan2
## t = 0.016907, df = 94, p-value = 0.9865
## alternative hypothesis: true mean is not equal to 0
## 95 percent confidence interval:
## -0.1145691 0.1165370
## sample estimates:
## mean of x
## 0.0009839349
Berdasarkan t-test, diperoleh p-value = 0.9865 > α = 0.05, maka
tak tolak \(H_0\).
Artinya, cukup bukti untuk menyatakan bahwa nilai tengah sisaan sama
dengan nol pada taraf nyata 5%.
Prewhitening
umx <- as.um(modelm1)
umx
## mu ar1 sig2
## 0.004234244 0.338252672 0.002472536
a <- residuals(umx, training.ts, method = "cond")
b <- residuals(umx, Minyaktraining.ts, method = "cond")
CCF Plot
#CCF Plot
ccf(b,a, ylab = "CCF", main = "Cross Corelation Function")
Output dari plot CCF itu menandakan bahwa dari order ke cenderung menurun secara perlahan.oleh karena itu, parameter yang diduga dari plot CCF tersebut adalah (0, 1, 0)
Model ARIMAX
modelx = arimax(data.train, order = c(0,1,0), xreg = data.frame(dataMinyak.train))
modelx
##
## Call:
## arimax(x = data.train, order = c(0, 1, 0), xreg = data.frame(dataMinyak.train))
##
## Coefficients:
## dataMinyak.train
## -0.6327
## s.e. 1.1716
##
## sigma^2 estimated as 0.3594: log likelihood = -86.19, aic = 174.38
Plot ACF, PACF, dan EACF dari residual model arimax
acf(residuals(modelx))
pacf(residuals(modelx))
eacf(residuals(modelx))
## 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 x o o
## 1 x x o o o o o o o o o x o o
## 2 o o o o o o o o o o o x o o
## 3 x o o o o o o o o o o x o o
## 4 x o o o o o o o o o o x o o
## 5 o o x o o o o o o o o x o o
## 6 x x x o o o o o o o o x o o
## 7 x o o o o o o o o o o x o o
Identifikasi Model Tentatif
ARIMA(0,1,1), dengan orde p = 0, d = 0, dan q = 1
ARIMA(2,1,0), dengan orde p = 2, d = 0, dan q = 0
ARIMA(0,1,2), dengan orde p = 0, d = 0, dan q = 2
ARIMA(0,1,3), dengan orde p = 0, d = 0, dan q = 3
ARIMA(1,1,2), dengan orde p = 1, d = 0, dan q = 2
ARIMA(3,1,1), dengan orde p = 3, d = 0, dan q = 1
ARIMA(3,1,2), dengan orde p = 3, d = 0, dan q = 2
modelax1 <- Arima(data.train, order=c(0,0,1), method="ML", xreg = c(dataMinyak.train))
modelax2 <- Arima(data.train, order=c(2,0,0), method="ML", xreg = c(dataMinyak.train))
modelax3 <- Arima(data.train, order=c(0,0,2), method="ML", xreg = c(dataMinyak.train))
modelax4 <- Arima(data.train, order=c(0,0,3), method="ML", xreg = c(dataMinyak.train))
modelax5 <- Arima(data.train, order=c(1,0,2), method="ML", xreg = c(dataMinyak.train))
modelax6 <- Arima(data.train, order=c(3,0,1), method="ML", xreg = c(dataMinyak.train))
modelax7 <- Arima(data.train, order=c(3,0,2), method="ML", xreg = c(dataMinyak.train))
Signifikansi Parameter Model Tentatif
coeftest(modelax1)
##
## z test of coefficients:
##
## Estimate Std. Error z value Pr(>|z|)
## ma1 0.914591 0.084783 10.7874 < 2.2e-16 ***
## intercept 3.400731 0.431478 7.8816 3.233e-15 ***
## xreg 2.403292 0.727335 3.3042 0.0009523 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
coeftest(modelax2)
##
## z test of coefficients:
##
## Estimate Std. Error z value Pr(>|z|)
## ar1 1.201994 0.097284 12.3555 < 2.2e-16 ***
## ar2 -0.278384 0.099107 -2.8089 0.004971 **
## intercept 4.391639 0.946698 4.6389 3.503e-06 ***
## xreg 0.139219 1.209881 0.1151 0.908391
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
coeftest(modelax3)
##
## z test of coefficients:
##
## Estimate Std. Error z value Pr(>|z|)
## ma1 1.295620 0.086609 14.9595 < 2.2e-16 ***
## ma2 0.628170 0.060653 10.3569 < 2.2e-16 ***
## intercept 3.408556 0.463610 7.3522 1.95e-13 ***
## xreg 2.361064 0.766347 3.0809 0.002064 **
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
coeftest(modelax4)
##
## z test of coefficients:
##
## Estimate Std. Error z value Pr(>|z|)
## ma1 1.377524 0.095936 14.3588 < 2.2e-16 ***
## ma2 1.011006 0.121304 8.3345 < 2.2e-16 ***
## ma3 0.368366 0.077624 4.7455 2.08e-06 ***
## intercept 3.531901 0.523775 6.7432 1.55e-11 ***
## xreg 2.111399 0.857052 2.4636 0.01376 *
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
coeftest(modelax5)
##
## z test of coefficients:
##
## Estimate Std. Error z value Pr(>|z|)
## ar1 0.912335 0.050826 17.9503 < 2.2e-16 ***
## ma1 0.345260 0.127398 2.7101 0.006726 **
## ma2 -0.051901 0.121111 -0.4285 0.668259
## intercept 4.395149 0.987333 4.4515 8.526e-06 ***
## xreg 0.053733 1.191065 0.0451 0.964017
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
coeftest(modelax6)
##
## z test of coefficients:
##
## Estimate Std. Error z value Pr(>|z|)
## ar1 0.290158 0.099858 2.9057 0.003664 **
## ar2 0.762640 0.073549 10.3691 < 2.2e-16 ***
## ar3 -0.193106 0.101896 -1.8951 0.058076 .
## ma1 0.999994 0.030027 33.3030 < 2.2e-16 ***
## intercept 4.463833 0.943423 4.7315 2.228e-06 ***
## xreg -0.017592 1.134679 -0.0155 0.987630
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
coeftest(modelax7)
##
## z test of coefficients:
##
## Estimate Std. Error z value Pr(>|z|)
## ar1 1.2170781 0.6894693 1.7652 0.07752 .
## ar2 -0.4477967 0.6071507 -0.7375 0.46080
## ar3 0.1684925 0.2465278 0.6835 0.49431
## ma1 0.0460946 0.6940931 0.0664 0.94705
## ma2 -0.0288537 0.3973332 -0.0726 0.94211
## intercept 4.3828220 1.0356297 4.2320 2.316e-05 ***
## xreg 0.0031994 1.1763546 0.0027 0.99783
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
#AIC ARIMA dan Signifikansi Parameter
modelaccuracy<-data.frame(
"Model"=c("ARIMAX(0,1,0)(0,0,1)", "ARIMAX(0,1,0)(2,0,0)", "ARIMAX(0,1,0)(0,0,2)", "ARIMAX(0,1,0)(0,0,3)","ARIMAX(0,1,0)(1,0,2)", "ARIMAX(0,1,0)(3,0,1)", "ARIMAX(0,1,0)(3,0,2)"),
"AIC"=c(modelax1$aic, modelax2$aic, modelax3$aic,modelax4$aic,modelax5$aic,modelax6$aic,modelax7$aic),
"BIC"=c(modelax1$bic, modelax2$bic, modelax3$bic,modelax4$bic,modelax5$bic,modelax6$bic,modelax7$bic),
"Signifikansi"=c("Signifikan","Tidak Signifikan","Signifikan","Signifikan","Tidak Signifikan","Tidak Signifikan","Tidak Signifikan"))
modelaccuracy
## Model AIC BIC Signifikansi
## 1 ARIMAX(0,1,0)(0,0,1) 273.4669 283.7243 Signifikan
## 2 ARIMAX(0,1,0)(2,0,0) 175.7913 188.6131 Tidak Signifikan
## 3 ARIMAX(0,1,0)(0,0,2) 223.3576 236.1794 Signifikan
## 4 ARIMAX(0,1,0)(0,0,3) 207.4901 222.8762 Signifikan
## 5 ARIMAX(0,1,0)(1,0,2) 174.5559 189.9420 Tidak Signifikan
## 6 ARIMAX(0,1,0)(3,0,1) 174.8558 192.8062 Tidak Signifikan
## 7 ARIMAX(0,1,0)(3,0,2) 177.6442 198.1590 Tidak Signifikan
kable(modelaccuracy)
| Model | AIC | BIC | Signifikansi |
|---|---|---|---|
| ARIMAX(0,1,0)(0,0,1) | 273.4669 | 283.7243 | Signifikan |
| ARIMAX(0,1,0)(2,0,0) | 175.7913 | 188.6131 | Tidak Signifikan |
| ARIMAX(0,1,0)(0,0,2) | 223.3576 | 236.1794 | Signifikan |
| ARIMAX(0,1,0)(0,0,3) | 207.4901 | 222.8762 | Signifikan |
| ARIMAX(0,1,0)(1,0,2) | 174.5559 | 189.9420 | Tidak Signifikan |
| ARIMAX(0,1,0)(3,0,1) | 174.8558 | 192.8062 | Tidak Signifikan |
| ARIMAX(0,1,0)(3,0,2) | 177.6442 | 198.1590 | Tidak Signifikan |
Overfitting
modelax41 = Arima(data.train, order=c(0,0,4), method="ML", xreg = c(dataMinyak.train))
modelax42 = Arima(data.train, order=c(1,0,3), method="ML", xreg = c(dataMinyak.train))
coeftest(modelax41)
##
## z test of coefficients:
##
## Estimate Std. Error z value Pr(>|z|)
## ma1 1.31053 0.13395 9.7839 < 2.2e-16 ***
## ma2 1.03918 0.15899 6.5363 6.306e-11 ***
## ma3 0.64945 0.14732 4.4084 1.041e-05 ***
## ma4 0.16970 0.12134 1.3985 0.16197
## intercept 3.68036 0.55483 6.6333 3.284e-11 ***
## xreg 1.81889 0.90400 2.0120 0.04421 *
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
coeftest(modelax42)
##
## z test of coefficients:
##
## Estimate Std. Error z value Pr(>|z|)
## ar1 0.931435 0.044591 20.8885 < 2.2e-16 ***
## ma1 0.338832 0.113873 2.9755 0.002925 **
## ma2 -0.109392 0.118707 -0.9215 0.356775
## ma3 -0.107932 0.104000 -1.0378 0.299360
## intercept 4.347407 1.036381 4.1948 2.731e-05 ***
## xreg 0.063067 1.176254 0.0536 0.957240
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Diagnostik Model : Eksploratif
sisaanax4 <- modelax4$residuals
par(mfrow=c(2,2))
qqnorm(sisaanax4)
box(col="black",lwd=2)
qqline(sisaanax4, col = "red", lwd =1, col.lab="black",
col.axis="black",col.sub = "black")
box(col="black",lwd=2)
plot(c(1:length(sisaanax4)),sisaanax4,col="black",col.lab="black",col.axis="black")
box(col="black",lwd=2)
acf(sisaanax4,col="black",col.sub = "black",col.axis="black", col.lab="black")
box(col="black",lwd=2)
pacf(sisaanax4,col="black",col.sub = "black",col.axis="black", col.lab="black",col.main="black")
box(col="black",lwd=2)
Diagnostik Model: Uji Formal
1. Sisaan Menyebar Normal
Uji formal ini dilakukan dengan Shapiro-Wilk test.
Hipotesis yang diuji:
\(H_{0}\): Sisaan menyebar normal
\(H_{1}\): Sisaan tidak menyebar normal
\(\alpha\) = 5% = 0.05
shapiro.test(sisaanax4)
##
## Shapiro-Wilk normality test
##
## data: sisaanax4
## W = 0.93775, p-value = 0.0001941
tolak \(H_{0}\). Artinya, tidak cukup bukti untuk
menyatakan bahwa sisaan menyebar normal pada taraf nyata 5%.
2. Sisaan Saling Bebas
Uji formal ini dilakukan dengan LJung-Box test.
Hipotesis yang diuji:
\(H_0\): Sisaan antara lag saling bebas
\(H_1\): Sisaan antara lag tidak saling bebas
\(\alpha\) = 5% = 0.05
Box.test(sisaanax4, type = "Ljung")
##
## Box-Ljung test
##
## data: sisaanax4
## X-squared = 1.5489, df = 1, p-value = 0.2133
tak tolak \(H_0\).
Artinya, cukup bukti untuk menyatakan bahwa sisaan antara lag saling
bebas atau dapat dikatakan tidak ada autokorelasi antara sisaan lag pada
taraf nyata 5%.
3. Nilai Tengah Sisaan Sama dengan Nol
Uji formal ini dilakukan dengan t test.
Hipotesis yang diuji:
\(H_0\): Nilai tengah sisaan sama dengan nol
\(H_1\): Nilai tengah sisaan tidak sama dengan nol
\(\alpha\) = 5% = 0.05
t.test(sisaanax4, mu = 0, conf.level = 0.95)
##
## One Sample t-test
##
## data: sisaanax4
## t = 0.098091, df = 95, p-value = 0.9221
## alternative hypothesis: true mean is not equal to 0
## 95 percent confidence interval:
## -0.1283083 0.1416468
## sample estimates:
## mean of x
## 0.006669249
Berdasarkan t-test, diperoleh p-value = 0.9865 > α = 0.05, maka
tak tolak \(H_0\).
Artinya, cukup bukti untuk menyatakan bahwa nilai tengah sisaan sama
dengan nol pada taraf nyata 5%.
Forecasting
ramalan <- forecast(Arima(data.train, order=c(2,1,0),method="ML",include.drift = TRUE),h = length(data.test))
data.ramalan <- ramalan$mean
data.ramalan.ts <- ts(data.ramalan, start = 2020, frequency = 12)
plot(ramalan,col="black",col.sub ="black",col.axis="black",
col.lab="black",col.main="black",lwd=2)
box(col="black",lwd=2)
ts.plot(data.ts, ylab = "Data Inflasi(Persen)", col="black",lwd=2,main="Forecasting ARIMA(2,1,0)",gpars = list(col.main="black",col.axis="black",col.sub="black"))
lines(data.ramalan.ts, col = "blue",lwd=2)
lines(testing.ts, col = "red", lwd =2)
legend(2018,9,c("Data Training", "Data Testing","Data Forecast ARIMA"),
lwd=2, col=c("black","red","blue"), cex=0.8)
box(col="black",lwd=2)
perbandingan.temp<-matrix(data=c(data.test[1:6], data.ramalan[1:6]), nrow = 6, ncol = 2)
colnames(perbandingan.temp)<-c("Aktual","Hasil Forecast")
head(perbandingan.temp)
## Aktual Hasil Forecast
## [1,] 2.68 2.656693
## [2,] 2.98 2.695106
## [3,] 2.96 2.711829
## [4,] 2.67 2.697400
## [5,] 2.19 2.678808
## [6,] 1.96 2.666494
error <- data.frame(data.test)-data.frame(data.ramalan[1:34])
## SSE (Sum Square Error)
SSE <- sum(error^2, na.rm = T)
## MSE (Mean Squared Error)
MSE<- sapply(error^2, mean, na.rm = T)
## RMSE (Root Mean Square Error)
RMSE <- sqrt(MSE)
## MAD (Mean Absolute Deviation)
MAD <- sapply(abs(error), mean, na.rm = T)
## MAPE (Mean Absolute Percentage Error)
r.error <- (error/data.frame(data.test))*100 # Relative Error
MAPE <- sapply(abs(r.error), mean, na.rm = T)
akurasifarima <- data.frame(
"Ukuran Keakuratan" = c("SSE", "MSE", "MAPE", "RMSE", "MAD"),
"Forecasting" = c(SSE, MSE, MAPE, RMSE, MAD))
akurasifarima
## Ukuran.Keakuratan Forecasting
## 1 SSE 62.598323
## 2 MSE 1.841127
## 3 MAPE 49.245009
## 4 RMSE 1.356881
## 5 MAD 1.088177
kable(akurasifarima)
| Ukuran.Keakuratan | Forecasting |
|---|---|
| SSE | 62.598323 |
| MSE | 1.841127 |
| MAPE | 49.245009 |
| RMSE | 1.356881 |
| MAD | 1.088177 |
Forecasting With ARIMAX
ramalan2 <- forecast(Arima(data.train, order=c(3,1,0), include.drift = TRUE,method="ML",,xreg=dataMinyak.train),xreg=dataMinyak.train)
data.ramalan2 <- ramalan2$mean
data.ramalan.ts2 <- ts(data.ramalan2, start = 2020, frequency = 12)
plot(ramalan2,col="black",col.sub ="black",col.axis="black",
col.lab="black",col.main="black",lwd=2)
box(col="black",lwd=2)
ts.plot(data.ts, ylab = "Data Inflasi(Persen)", col="black",lwd=2,main="Forecasting ARIMA(2,1,0)",gpars = list(col.main="black",col.axis="black",col.sub="black"))
lines(data.ramalan.ts2, col = "blue",lwd=2)
lines(testing.ts, col = "red", lwd =2)
legend(2018,9,c("Data Training", "Data Testing","Data Forecast ARIMA"),
lwd=2, col=c("black","red","blue"), cex=0.8)
box(col="black",lwd=2)
perbandingan.temp<-matrix(data=c(data.test[1:6], data.ramalan2[1:6]), nrow = 6, ncol = 2)
colnames(perbandingan.temp)<-c("Aktual","Hasil Forecast")
head(perbandingan.temp)
## Aktual Hasil Forecast
## [1,] 2.68 2.491559
## [2,] 2.98 2.505609
## [3,] 2.96 2.502117
## [4,] 2.67 2.502972
## [5,] 2.19 2.519057
## [6,] 1.96 2.555693
error <- data.frame(data.test)-data.frame(data.ramalan2[1:34])
## SSE (Sum Square Error)
SSE <- sum(error^2, na.rm = T)
## MSE (Mean Squared Error)
MSE<- sapply(error^2, mean, na.rm = T)
## RMSE (Root Mean Square Error)
RMSE <- sqrt(MSE)
## MAD (Mean Absolute Deviation)
MAD <- sapply(abs(error), mean, na.rm = T)
## MAPE (Mean Absolute Percentage Error)
r.error <- (error/data.frame(data.test))*100 # Relative Error
MAPE <- sapply(abs(r.error), mean, na.rm = T)
akurasifarima <- data.frame(
"Ukuran Keakuratan" = c("SSE", "MSE", "MAPE", "RMSE", "MAD"),
"Forecasting" = c(SSE, MSE, MAPE, RMSE, MAD))
akurasifarima
## Ukuran.Keakuratan Forecasting
## 1 SSE 62.963601
## 2 MSE 1.851871
## 3 MAPE 44.044558
## 4 RMSE 1.360835
## 5 MAD 1.041699
kable(akurasifarima)
| Ukuran.Keakuratan | Forecasting |
|---|---|
| SSE | 62.963601 |
| MSE | 1.851871 |
| MAPE | 44.044558 |
| RMSE | 1.360834 |
| MAD | 1.041699 |
Kesimpulan
Daftar Pustaka
Habsari HDP, Purnamasari I, Yuniarti D. 2020. Peramalan menggunakan metode Double Exponential Smoothing dan verifikasi hasil peramalan menggunakan grafik pengendali tracking signal. Jurnal Ilmu Matematika dan Terapan. 14(1): 13-22. doi:10.30598/barekengvol14iss1pp013-022.
Cryer JD, Chan KS. 2008. Time Series Analysis With Applications in R. New York (NY): Springer New York.
Febrian D, Idrus SIA, Nainggolan DAJ. 2020. The comparison of Double Moving Average and Double Exponential Smoothing methods in forecasting the number of foreign tourists coming to North Sumatera, Journal of Physics: Conference Series. 1462(1): 012046. DOI:10.1088/1742-6596/1462/1/012046
Kristanti N, Darsyah MY. 2017. Perbandingan peramalan metode Single Exponential Smoothing dan Double Exsponential Smoothing pada karakteristik penduduk bekerja di Indonesia tahun 2017.Di dalam: Prosiding Seminar Nasional Mahasiswa Unimus(Vol.1)
Hartati H. 2017. Penggunaan Metode Arima Dalam Meramal Pergerakan Inflasi. Jurnal Matematika Sains Dan Teknologi. 18(1): 1–10.
Elvani SP, Utary AR, Yudaruddin R. 2016. Peramalan jumlah produksi tanaman kelapa sawit dengan menggunakan metode Arima (Autoregressive Integrated Moving Average). Jurnal Manajemen. 8(1): 95-112. doi
Hikmah A, Agoestanto A, Arifudin R. 2018. Peramalan deret waktu dengan menggunakan Autoregressive (AR), jaringan syaraf tiruan Radial basis function (Rbf) dan Hibrid Ar-Rbf pada Inflasi Indonesia. Unnes Journal of Mathematics. 7(2): 228-241. doi:10.15294/ujm.v7i2.1398
Hakimah M, Rahmawati WM, Afandi AY. 2020. PENGUKURAN KINERJA METODE PERAMALAN TIPE EXPONENTIAL SMOOTHING DALAM PARAMETER TERBAIKNYA. Jurnal Ilmiah NERO. 5(1): 44-50. - Tinjauan pustaka (SES & DES) - https://nero.trunojoyo.ac.id/index.php/nero/article/view/150/139