MPDW ARIMAX

Zakiyah Azzahra

2022-12-05

Package dan Library

library(readxl)
library(TTR)
library(forecast)
## Registered S3 method overwritten by 'quantmod':
##   method            from
##   as.zoo.data.frame zoo
library(tseries)
library(TSA)
## Registered S3 methods overwritten by 'TSA':
##   method       from    
##   fitted.Arima forecast
##   plot.Arima   forecast
## 
## Attaching package: 'TSA'
## The following objects are masked from 'package:stats':
## 
##     acf, arima
## The following object is masked from 'package:utils':
## 
##     tar
library(dynlm)
## Loading required package: zoo
## 
## Attaching package: 'zoo'
## The following objects are masked from 'package:base':
## 
##     as.Date, as.Date.numeric
library(lmtest)
library(imputeTS)
## 
## Attaching package: 'imputeTS'
## The following object is masked from 'package:zoo':
## 
##     na.locf
## The following object is masked from 'package:tseries':
## 
##     na.remove
library(stats)
library(MASS)
library(kableExtra)
library(padr)
library(astsa)
## 
## Attaching package: 'astsa'
## The following object is masked from 'package:forecast':
## 
##     gas
library(tfarima)
## 
## Attaching package: 'tfarima'
## The following object is masked from 'package:TSA':
## 
##     spec
## The following objects are masked from 'package:forecast':
## 
##     easter, seasadj
library(ggplot2)

Import Data

dataset <- read_excel("~/Downloads/DATA KURS FIX MPDW.xlsx")
str(dataset)
## tibble [206 × 5] (S3: tbl_df/tbl/data.frame)
##  $ USD    : num [1:206] 14490 14496 14531 14484 14548 ...
##  $ GBP    : num [1:206] 20177 20118 20183 20208 20240 ...
##  $ EMAS   : num [1:206] 1731 1732 1728 1734 1743 ...
##  $ TESLA  : num [1:206] 236 226 234 218 218 ...
##  $ Tanggal: chr [1:206] "3/15/2021 12:00:00 AM" "3/16/2021 12:00:00 AM" "3/17/2021 12:00:00 AM" "3/18/2021 12:00:00 AM" ...
data <- dataset$GBP

Mengubah Data Menjadi Time Series

data.ts <- ts(data)

Eksplorasi Data

Plot Data Kurs Jual

plot(data.ts,xlab ="Waktu", ylab = "Data Kurs (Ribu)", col="black", main = "Plot Data Deret Waktu Data Kurs")
points(data.ts)

Splitting Data (Training dan Testing)

Splitting Data Kurs Jual

data.train <- ts(data[1:145])
data.test <- ts(data[146:206], start = 146)

#Time Series Data
training.ts<-ts(data.train)
testing.ts<-ts(data.test)

Plot Data Kurs Jual

par(mfrow=c(2,1))
plot(data.train, xlab ="Waktu", ylab = "Data Kurs (Ribu)", col="red", main = "Plot Data Training")
points(data.train)

plot(data.test, xlab ="Waktu", ylab = "Data Kurs (Ribu)", col="red", main = "Plot Data Testing")
points(data.test)

Plot Pembagian Training Testing

## Plot Data Training dan testing kurs
ts.plot(data.ts, xlab = "Periode", ylab ="Data Inflasi (Persen)", 
        main = "Plot Data Training dan Data Testing")
lines(data.train, col = "blue")
lines(data.test, col="Red")
legend(-0.9,22100,c("Data Training","Data Testing"), 
       lty=8, col=c("blue","red"), cex=0.8)
abline(v=146, col=c("black"), lty=1, lwd=1)

Pemodelan Arima

Differencing 1

data.dif1<-diff(data.train,differences = 1) 
plot.ts(data.dif1,lty=1,ylab= "Data Inflasi Pembedaan 1", main="Plot Differencing Data Kurs")

Uji Kestasioneran Data

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 = -6.0691, Lag order = 5, p-value = 0.01
## alternative hypothesis: stationary

Plot Data ACF

acfdif <- acf(data.dif1, lag.max = 24)

Plot Data PACF

pacfdif <- pacf(data.dif1, lag.max = 24)

Plot Data EACF

eacf(data.dif1)
## AR/MA
##   0 1 2 3 4 5 6 7 8 9 10 11 12 13
## 0 o o o o o o o o o o o  o  o  o 
## 1 x o o o o o o o o o o  o  o  o 
## 2 x x o o o o o o o o o  o  o  o 
## 3 x o o o o o o o o o o  o  o  o 
## 4 x x x o o o o o o o o  o  o  o 
## 5 x o x o o o o o o o o  o  o  o 
## 6 x o x x o x o o o o o  o  o  o 
## 7 o x o x o o x o o o o  o  o  o

diperoleh model : 1. Arima(0,1,1) 2. Arima(1,1,1) 3. Arima(2,1,2) 5. Arima(3,1,2)

Pemodelan

model1 <- Arima(data.train, order=c(0,1,1), method="ML")   
model2 <- Arima(data.train, order=c(1,1,1), method="ML")  
model3 <- Arima(data.train, order=c(2,1,2), method="ML")
model4 <- Arima(data.train, order=c(3,1,2), method="ML") 
model5 <- Arima(data.train, order=c(1,2,1), method="ML")

Penduga Parameter Model

Arima(0,2,1)

summary(model1) 
## Series: data.train 
## ARIMA(0,1,1) 
## 
## Coefficients:
##           ma1
##       -0.0081
## s.e.   0.0879
## 
## sigma^2 = 5259:  log likelihood = -820.65
## AIC=1645.31   AICc=1645.39   BIC=1651.25
## 
## Training set error measures:
##                     ME     RMSE      MAE         MPE      MAPE      MASE
## Training set -4.450606 72.01386 56.70049 -0.02308554 0.2825114 0.9960597
##                      ACF1
## Training set -0.005558745
lmtest::coeftest((model1)) 
## 
## z test of coefficients:
## 
##       Estimate Std. Error z value Pr(>|z|)
## ma1 -0.0080981  0.0879036 -0.0921   0.9266

Arima(1,2,2)

summary(model2) 
## Series: data.train 
## ARIMA(1,1,1) 
## 
## Coefficients:
##          ar1      ma1
##       0.8028  -0.8848
## s.e.  0.1160   0.0861
## 
## sigma^2 = 5195:  log likelihood = -819.31
## AIC=1644.62   AICc=1644.79   BIC=1653.53
## 
## Training set error measures:
##                     ME     RMSE      MAE         MPE      MAPE      MASE
## Training set -7.275028 71.32382 55.84566 -0.03754037 0.2782729 0.9810428
##                    ACF1
## Training set 0.04138452
lmtest::coeftest((model2)) 
## 
## z test of coefficients:
## 
##      Estimate Std. Error  z value  Pr(>|z|)    
## ar1  0.802841   0.115992   6.9215 4.468e-12 ***
## ma1 -0.884834   0.086066 -10.2809 < 2.2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Arima(2,2,3)

summary(model3) 
## Series: data.train 
## ARIMA(2,1,2) 
## 
## Coefficients:
## Warning in sqrt(diag(x$var.coef)): NaNs produced
##          ar1     ar2      ma1      ma2
##       0.3189  0.3509  -0.3623  -0.4457
## s.e.     NaN     NaN      NaN      NaN
## 
## sigma^2 = 5251:  log likelihood = -819.07
## AIC=1648.14   AICc=1648.58   BIC=1662.99
## 
## Training set error measures:
##                     ME     RMSE      MAE         MPE      MAPE      MASE
## Training set -7.372248 71.20206 55.58077 -0.03803292 0.2769209 0.9763895
##                     ACF1
## Training set 0.001745161
lmtest::coeftest((model3)) 
## Warning in sqrt(diag(se)): NaNs produced
## 
## z test of coefficients:
## 
##     Estimate Std. Error z value Pr(>|z|)
## ar1  0.31890        NaN     NaN      NaN
## ar2  0.35086        NaN     NaN      NaN
## ma1 -0.36232        NaN     NaN      NaN
## ma2 -0.44566        NaN     NaN      NaN

Arima(1,2,0)

summary(model4)
## Series: data.train 
## ARIMA(3,1,2) 
## 
## Coefficients:
##          ar1      ar2      ar3      ma1     ma2
##       0.9611  -0.1821  -0.0458  -0.9875  0.1456
## s.e.  0.9767   0.8347   0.1098   0.9789  0.8680
## 
## sigma^2 = 5264:  log likelihood = -818.74
## AIC=1649.49   AICc=1650.1   BIC=1667.31
## 
## Training set error measures:
##                     ME     RMSE      MAE         MPE      MAPE      MASE
## Training set -7.393415 71.03401 55.22219 -0.03813577 0.2750917 0.9700904
##                     ACF1
## Training set -0.01974272
lmtest::coeftest((model4))
## 
## z test of coefficients:
## 
##     Estimate Std. Error z value Pr(>|z|)
## ar1  0.96112    0.97668  0.9841   0.3251
## ar2 -0.18206    0.83471 -0.2181   0.8273
## ar3 -0.04581    0.10985 -0.4170   0.6767
## ma1 -0.98747    0.97892 -1.0087   0.3131
## ma2  0.14564    0.86799  0.1678   0.8668

Arima(1,2,1)

summary(model5) 
## Series: data.train 
## ARIMA(1,2,1) 
## 
## Coefficients:
##           ar1      ma1
##       -0.0045  -1.0000
## s.e.   0.0840   0.0294
## 
## sigma^2 = 5314:  log likelihood = -817.65
## AIC=1641.3   AICc=1641.48   BIC=1650.19
## 
## Training set error measures:
##                    ME   RMSE      MAE         MPE      MAPE      MASE
## Training set -2.94605 71.888 56.61105 -0.01541852 0.2820576 0.9944885
##                      ACF1
## Training set -0.006432604
lmtest::coeftest((model5)) 
## 
## z test of coefficients:
## 
##       Estimate Std. Error  z value Pr(>|z|)    
## ar1 -0.0044612  0.0840128  -0.0531   0.9577    
## ma1 -0.9999939  0.0294489 -33.9569   <2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Perbandingan Kebaikan Model

modelaccuracy<-data.frame(
  "Model"=c("ARIMA(0,1,1)", "ARIMA(1,1,1)", "ARIMA(2,1,2)","ARIMA(3,1,2)"),
  "AIC"=c(model1$aic, model2$aic, model3$aic,model4$aic),
  "BIC"=c(model1$bic, model2$bic, model3$bic,model4$bic),
  "Signifikansi"=c("Tidak Signifikan","Signifikan","Tidak Signifikan"," Tidak Signifikan"))

modelaccuracy
##          Model      AIC      BIC      Signifikansi
## 1 ARIMA(0,1,1) 1645.308 1651.248  Tidak Signifikan
## 2 ARIMA(1,1,1) 1644.617 1653.527        Signifikan
## 3 ARIMA(2,1,2) 1648.140 1662.989  Tidak Signifikan
## 4 ARIMA(3,1,2) 1649.490 1667.309  Tidak Signifikan

Dengan model terbaik Arima(1,1,1)

Diagnostik Model

Overfitting

menggunakan model Arima(1,2,1) dengan Arima(2,1,1) dan Arima(1,2,2)

model2a <- Arima(data.dif1, order=c(2,1,1), method="ML")
model2b <- Arima(data.dif1, order=c(1,1,2), method="ML")

Model Arima(1,2,1)

summary(model2)
## Series: data.train 
## ARIMA(1,1,1) 
## 
## Coefficients:
##          ar1      ma1
##       0.8028  -0.8848
## s.e.  0.1160   0.0861
## 
## sigma^2 = 5195:  log likelihood = -819.31
## AIC=1644.62   AICc=1644.79   BIC=1653.53
## 
## Training set error measures:
##                     ME     RMSE      MAE         MPE      MAPE      MASE
## Training set -7.275028 71.32382 55.84566 -0.03754037 0.2782729 0.9810428
##                    ACF1
## Training set 0.04138452
coeftest(model2)
## 
## z test of coefficients:
## 
##      Estimate Std. Error  z value  Pr(>|z|)    
## ar1  0.802841   0.115992   6.9215 4.468e-12 ***
## ma1 -0.884834   0.086066 -10.2809 < 2.2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Model Arima(2,1,1)

summary(model2a)
## Series: data.dif1 
## ARIMA(2,1,1) 
## 
## Coefficients:
##           ar1      ar2      ma1
##       -0.0054  -0.0471  -1.0000
## s.e.   0.0839   0.0842   0.0336
## 
## sigma^2 = 5331:  log likelihood = -817.5
## AIC=1642.99   AICc=1643.28   BIC=1654.85
## 
## Training set error measures:
##                     ME     RMSE      MAE MPE MAPE      MASE         ACF1
## Training set -3.027786 71.99481 56.66522 NaN  Inf 0.6846968 -0.005828679
coeftest(model2a)
## 
## z test of coefficients:
## 
##       Estimate Std. Error  z value Pr(>|z|)    
## ar1 -0.0054178  0.0839091  -0.0646   0.9485    
## ar2 -0.0471127  0.0841992  -0.5595   0.5758    
## ma1 -0.9999961  0.0336394 -29.7269   <2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Model Arima(1,2,2)

summary(model2b)
## Series: data.dif1 
## ARIMA(1,1,2) 
## 
## Coefficients:
## Warning in sqrt(diag(x$var.coef)): NaNs produced
##           ar1      ma1      ma2
##       -0.3733  -0.6166  -0.3834
## s.e.      NaN      NaN      NaN
## 
## sigma^2 = 5347:  log likelihood = -817.65
## AIC=1643.29   AICc=1643.58   BIC=1655.14
## 
## Training set error measures:
##                     ME     RMSE      MAE MPE MAPE     MASE        ACF1
## Training set -2.771291 72.10061 56.73624 NaN  Inf 0.685555 -0.01656067
coeftest(model2b)
## Warning in sqrt(diag(se)): NaNs produced
## 
## z test of coefficients:
## 
##     Estimate Std. Error z value Pr(>|z|)
## ar1 -0.37325        NaN     NaN      NaN
## ma1 -0.61656        NaN     NaN      NaN
## ma2 -0.38342        NaN     NaN      NaN

Uji Diagnostik

Diagnostik Model : Eksploratif

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

Sisaan Menyebar Normal

shapiro.test(sisaan2)
## 
##  Shapiro-Wilk normality test
## 
## data:  sisaan2
## W = 0.98959, p-value = 0.3561

Sisaan Saling Bebas

Box.test(sisaan2, type = "Ljung")
## 
##  Box-Ljung test
## 
## data:  sisaan2
## X-squared = 0.25351, df = 1, p-value = 0.6146

Nilai Tengah Sisaan Sama dengan Nol

t.test(sisaan2, mu = 0, conf.level = 0.95) 
## 
##  One Sample t-test
## 
## data:  sisaan2
## t = -1.2304, df = 144, p-value = 0.2205
## alternative hypothesis: true mean is not equal to 0
## 95 percent confidence interval:
##  -18.961829   4.411773
## sample estimates:
## mean of x 
## -7.275028

Forcasting

ramalan <- forecast(Arima(data.train, order=c(1,1,1),method="ML",include.drift = TRUE),h = length(data.test))
data.ramalan <- ramalan$mean
data.ramalan.ts <- ts(data.ramalan, start = 146)
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(1,1,1)",gpars = list(col.main="black",col.axis="black",col.sub="black"))
lines(data.ramalan.ts, col = "blue",lwd=2)
lines(data.test, col = "red", lwd =2)
legend(100,16400,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:10], data.ramalan[1:10]), nrow = 10, ncol = 2)
colnames(perbandingan.temp)<-c("Aktual","Hasil Forecast")
head(perbandingan.temp)
##        Aktual Hasil Forecast
## [1,] 19409.94       19518.68
## [2,] 19439.03       19518.57
## [3,] 19445.60       19517.64
## [4,] 19490.78       19516.05
## [5,] 19428.94       19513.94
## [6,] 19478.72       19511.39
error <- data.frame(data.test)-data.frame(data.ramalan[1:61]) 

## 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 1.623451e+06
## 2               MSE 2.661394e+04
## 3              MAPE 7.429549e-01
## 4              RMSE 1.631378e+02
## 5               MAD 1.429970e+02
datax <- dataset$USD
datax.ts <- ts(datax)
plot(datax.ts,xlab ="Waktu", ylab = "Data USD", col="black", main = "PlotUSD")
points(datax.ts)

Splitting Data Kurs Jual

datax.train <- ts(datax[1:145])
datax.test <- ts(datax[146:206], start = 146)

#Time Series Data
trainingx.ts<-ts(datax.train)
testingx.ts<-ts(datax.test)

Plot Pembagian Training Testing

## Plot Data Training dan testing kurs
ts.plot(datax.ts, xlab = "Periode", ylab ="Data USD", 
        main = "Plot Data Training dan Data Testing")
lines(datax.train, col = "blue")
lines(datax.test, col="Red")
legend(-0.9,22100,c("Data Training","Data Testing"), 
       lty=8, col=c("blue","red"), cex=0.8)
abline(v=146, col=c("black"), lty=1, lwd=1)

korelasitest <- c("GBP vs USD" = cor(data.test, datax.test))
kort <- data.frame("Nilai Korelasi" = korelasitest)
kable(kort)
Nilai.Korelasi
GBP vs USD -0.5952249
y <- dataset$GBP
x <- dataset$USD
reg <- lm(y~0+x)
summary(reg)
## 
## Call:
## lm(formula = y ~ 0 + x)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -800.11 -183.56   44.37  205.59  660.06 
## 
## Coefficients:
##   Estimate Std. Error t value Pr(>|t|)    
## x 1.375371   0.001735   792.6   <2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 359.4 on 205 degrees of freedom
## Multiple R-squared:  0.9997, Adjusted R-squared:  0.9997 
## F-statistic: 6.282e+05 on 1 and 205 DF,  p-value: < 2.2e-16
sisaanx <- reg$residuals
par(mfrow=c(2,2))
qqnorm(sisaanx)
box(col="black",lwd=2)
qqline(sisaanx, col = "red", lwd =1, col.lab="black",
       col.axis="black",col.sub = "black")
box(col="black",lwd=2)
plot(c(1:length(sisaanx)),sisaanx,col="black",col.lab="black",col.axis="black")
box(col="black",lwd=2)
acf(sisaanx,col="black",col.sub = "black",col.axis="black", col.lab="black")
box(col="black",lwd=2)
pacf(sisaanx,col="black",col.sub = "black",col.axis="black", col.lab="black",col.main="black")
box(col="black",lwd=2)

acf(sisaanx)

pacf(sisaanx)

adf.test(sisaanx)
## 
##  Augmented Dickey-Fuller Test
## 
## data:  sisaanx
## Dickey-Fuller = -2.3966, Lag order = 5, p-value = 0.4099
## alternative hypothesis: stationary

Differencing X

sisaan.dif <- diff(sisaanx, difference = 1)
datax.dif1 <-  diff(datax.train, difference = 1)
adf.test(sisaan.dif)
## Warning in adf.test(sisaan.dif): p-value smaller than printed p-value
## 
##  Augmented Dickey-Fuller Test
## 
## data:  sisaan.dif
## Dickey-Fuller = -6.1315, Lag order = 5, p-value = 0.01
## alternative hypothesis: stationary
acf(sisaan.dif)

pacf(sisaan.dif)

eacf(sisaan.dif)
## AR/MA
##   0 1 2 3 4 5 6 7 8 9 10 11 12 13
## 0 o o o o o o o o o o o  o  o  o 
## 1 o o o o o o o o o o o  o  o  o 
## 2 x o o o o o o o o o o  o  o  o 
## 3 o o o o o o o o o o o  o  o  o 
## 4 x o o o o o o o o o o  o  o  o 
## 5 o x o o x o o o o o o  o  o  o 
## 6 x o o x o x o o o o o  o  o  o 
## 7 x x x x o x o o o o o  o  o  o
modelx1 <- Arima(data.train, order = c(1,1,0), xreg = datax.train, method = "ML")
modelx2 <- Arima(data.train, order = c(0,1,1), xreg = datax.train, method = "ML")
modelx3 <- Arima(data.train, order = c(1,1,1), xreg = datax.train, method = "ML")
modelx4 <- Arima(data.train, order = c(2,1,2), xreg = datax.train, method = "ML")
modelx5 <- Arima(data.train, order = c(2,1,1), xreg = datax.train, method = "ML")
summary(modelx1)
## Series: data.train 
## Regression with ARIMA(1,1,0) errors 
## 
## Coefficients:
##           ar1    xreg
##       -0.0104  0.2238
## s.e.   0.0835  0.1702
## 
## sigma^2 = 5232:  log likelihood = -819.8
## AIC=1645.59   AICc=1645.76   BIC=1654.5
## 
## Training set error measures:
##                     ME     RMSE      MAE         MPE      MAPE      MASE
## Training set -4.236696 71.58038 56.12447 -0.02200699 0.2796878 0.9859407
##                      ACF1
## Training set -0.006096724
coeftest(modelx1)
## 
## z test of coefficients:
## 
##       Estimate Std. Error z value Pr(>|z|)
## ar1  -0.010407   0.083474 -0.1247   0.9008
## xreg  0.223766   0.170231  1.3145   0.1887
summary(modelx2)
## Series: data.train 
## Regression with ARIMA(0,1,1) errors 
## 
## Coefficients:
##           ma1    xreg
##       -0.0120  0.2239
## s.e.   0.0899  0.1702
## 
## sigma^2 = 5232:  log likelihood = -819.79
## AIC=1645.59   AICc=1645.76   BIC=1654.5
## 
## Training set error measures:
##                     ME     RMSE      MAE         MPE      MAPE      MASE
## Training set -4.245002 71.57977 56.12886 -0.02205002 0.2797102 0.9860179
##                      ACF1
## Training set -0.004615208
coeftest(modelx2)
## 
## z test of coefficients:
## 
##       Estimate Std. Error z value Pr(>|z|)
## ma1  -0.012026   0.089871 -0.1338   0.8935
## xreg  0.223885   0.170204  1.3154   0.1884
summary(modelx3)
## Series: data.train 
## Regression with ARIMA(1,1,1) errors 
## 
## Coefficients:
##          ar1      ma1    xreg
##       0.7913  -0.8798  0.2339
## s.e.  0.1234   0.0921  0.1650
## 
## sigma^2 = 5159:  log likelihood = -818.32
## AIC=1644.63   AICc=1644.92   BIC=1656.51
## 
## Training set error measures:
##                     ME     RMSE    MAE         MPE      MAPE      MASE
## Training set -6.998078 70.82717 55.197 -0.03615205 0.2750827 0.9696479
##                    ACF1
## Training set 0.04350235
coeftest(modelx3)
## 
## z test of coefficients:
## 
##       Estimate Std. Error z value  Pr(>|z|)    
## ar1   0.791304   0.123434  6.4108 1.448e-10 ***
## ma1  -0.879783   0.092086 -9.5540 < 2.2e-16 ***
## xreg  0.233921   0.165013  1.4176    0.1563    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
summary(modelx4)
## Series: data.train 
## Regression with ARIMA(2,1,2) errors 
## 
## Coefficients:
##          ar1     ar2      ma1      ma2    xreg
##       0.2062  0.4150  -0.2511  -0.5302  0.2490
## s.e.  0.6954  0.5806   0.6672   0.5978  0.1663
## 
## sigma^2 = 5207:  log likelihood = -817.97
## AIC=1647.93   AICc=1648.55   BIC=1665.75
## 
## Training set error measures:
##                     ME     RMSE      MAE         MPE      MAPE      MASE
## Training set -7.041592 70.65052 54.83102 -0.03637226 0.2732248 0.9632186
##                      ACF1
## Training set 0.0004613192
coeftest(modelx4)
## 
## z test of coefficients:
## 
##      Estimate Std. Error z value Pr(>|z|)
## ar1   0.20625    0.69538  0.2966   0.7668
## ar2   0.41502    0.58064  0.7148   0.4748
## ma1  -0.25106    0.66715 -0.3763   0.7067
## ma2  -0.53015    0.59781 -0.8868   0.3752
## xreg  0.24899    0.16626  1.4976   0.1342
summary(modelx5)
## Series: data.train 
## Regression with ARIMA(2,1,1) errors 
## 
## Coefficients:
##          ar1      ar2      ma1    xreg
##       0.8084  -0.0808  -0.8417  0.2388
## s.e.  0.1530   0.0888   0.1310  0.1655
## 
## sigma^2 = 5165:  log likelihood = -817.91
## AIC=1645.82   AICc=1646.25   BIC=1660.67
## 
## Training set error measures:
##                     ME     RMSE      MAE         MPE      MAPE      MASE
## Training set -7.102805 70.62035 54.75231 -0.03668369 0.2728079 0.9618359
##                     ACF1
## Training set -0.01454304
coeftest(modelx5)
## 
## z test of coefficients:
## 
##       Estimate Std. Error z value  Pr(>|z|)    
## ar1   0.808391   0.152994  5.2838 1.265e-07 ***
## ar2  -0.080803   0.088755 -0.9104    0.3626    
## ma1  -0.841745   0.131044 -6.4234 1.333e-10 ***
## xreg  0.238838   0.165467  1.4434    0.1489    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
ramalanx <- forecast((modelx3), xreg = datax.test)
data.ramalanx <- ramalanx$mean
data.ramalan.tsx <- ts(data.ramalanx, start = 146)
plot(ramalanx,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 Kurs", col="black",lwd=2,main="Forecasting ARIMAX(1,1,1)",gpars = list(col.main="black",col.axis="black",col.sub="black"))
lines(data.ramalan.tsx, col = "blue",lwd=2)
lines(data.test, col = "red", lwd =2)
legend(100,16400,c("Data Training", "Data Testing", "Data Forecast ARIMAX(1,1,1)"), 
       lwd=2, col=c("black","red","blue"), cex=0.8)
box(col="black",lwd=2)