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)