Kurs jual adalah harga jual mata uang yang dipakai oleh bank yang digunakan untuk penukaran mata uang asing dan yang digunakan oleh para pedagang valuta asing untuk menjual valuta asing. Misal, kita menukarkan rupiah (Rp) dengan dolar Amerika (USD), kurs yang digunakan adalah kurs jual. Ada tiga jenis kurs, sistem kurs tetap, sistem kurs bebas atau mengambang, dan sistem kurs mengambang terkendali. Dilansir dari laman resmi Bank Indonesia (BI), Indonesia menganut sistem kurs mengambang (free floating). Peran kestabilan kurs sangat penting dalam mencapai stabilitas harga dan sistem keuangan (Salim 2022). Oleh karena itu, forecasting penting digunakan untuk meramalkan keuangan negara di masa yang akan datang.
Inflasi dapat diartikan sebagai kenaikan harga, barang, dan jasa secara umum dan terus dalam waktu tertentu. Inflasi menyebabkan turunnya daya beli dari nilai uang terhadap barang-barang dan jasa, besar kecilnya ditentukan oleh elastisitas permintaan dan penawaran akan barang dan jasa. Faktor lain yang juga turut menentukan fluktuasi tingkat harga umum diantaranya adalah kebijakan pemerintah mengenai tingkat harga, yaitu dengan mengadakan kontrol harga, pemberian subsidi kepada konsumen dan lain sebagainya.
library(tseries)
## Registered S3 method overwritten by 'quantmod':
## method from
## as.zoo.data.frame zoo
library(forecast)
library(TTR)
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(graphics)
library(lmtest)
## Loading required package: zoo
##
## Attaching package: 'zoo'
## The following objects are masked from 'package:base':
##
## as.Date, as.Date.numeric
library(orcutt)
library(HoRM)
library(dLagM)
## Loading required package: nardl
## Loading required package: dynlm
##
## Attaching package: 'dLagM'
## The following object is masked from 'package:forecast':
##
## forecast
library(dynlm)
library(MLmetrics)
##
## Attaching package: 'MLmetrics'
## The following object is masked from 'package:dLagM':
##
## MAPE
## The following object is masked from 'package:base':
##
## Recall
library(aTSA)
##
## Attaching package: 'aTSA'
## The following object is masked from 'package:dLagM':
##
## forecast
## The following object is masked from 'package:forecast':
##
## forecast
## The following objects are masked from 'package:tseries':
##
## adf.test, kpss.test, pp.test
## The following object is masked from 'package:graphics':
##
## identify
library(readxl)
Data diperoleh dari bank indonesia (www.bi.go.id). Data ini terdiri dari 2 peubah yaitu kurs jual indonesia pada mata uang british pound dengan tingkat inflasi pada periode tahun 2012 sampai 2021 dengan amatan sebanyak 120.
yt: kurs jual Indonesia terhadap british pound xt: tingkat inflasi
data <- read_excel("~/Desktop/SEMESTER 5!!!/MPDW/inflasi kurs.xlsx")
head(data)
## # A tibble: 6 × 3
## t yt xt
## <dbl> <dbl> <dbl>
## 1 1 0.0365 14197.
## 2 2 0.0356 14330.
## 3 3 0.0397 14580.
## 4 4 0.045 14759.
## 5 5 0.0445 14888.
## 6 6 0.0453 14768.
str(data)
## tibble [120 × 3] (S3: tbl_df/tbl/data.frame)
## $ t : num [1:120] 1 2 3 4 5 6 7 8 9 10 ...
## $ yt: num [1:120] 0.0365 0.0356 0.0397 0.045 0.0445 0.0453 0.0456 0.0458 0.0431 0.0461 ...
## $ xt: num [1:120] 14197 14330 14580 14759 14888 ...
dim(data)
## [1] 120 3
Data akan dibagi menjadi dua bagian, yaitu data testing dan data training. Proporsi antara keduanua adalah 80:20 untuk data training dan data testing.
data <- data$xt
test <- tail(data,24)
train <- head(data,(length(data)-length(test)))
#data time series
train.ts<-ts(train)
test.ts<-ts(test)
data.ts<-ts(data)
par(mfrow=c(3,1))
plot(x = data.ts,
col = "black",
lwd = 1,
type = "o",
main = "Time Series Plot (Before Splitting)")
plot(x = train.ts,
col = "black",
lwd = 1,
type = "o",
main = "Time Series Plot (Data Training)")
plot(x = test.ts,
col = "black",
lwd = 1,
type = "o",
main = "Time Series Plot (Data Testing)")
Dari ketiga plot tersebut menunjukkan bahwa data tidak stasioner
sehingga perlu untuk dilaukan differencing untuk
menstatisionerkan data.
Differencing merupakan tahap untuk menstasionerkan data. Tahap ini akan terus dilakukan hingga data menjadi stasioner.
Setelah dilakukan eksplorasi secara visual kemudian dilakukan Adjusted Dicky FUller Test yang digunakan untuk menguji apakah data stasioner atau tidak.
Hipotesis
H0 : Data tidak stasioner
H1 : Data stasioner
tseries::adf.test(train.ts)
##
## Augmented Dickey-Fuller Test
##
## data: train.ts
## Dickey-Fuller = -2.0521, Lag order = 4, p-value = 0.5549
## alternative hypothesis: stationary
Didapatkan bahwa p-value = 0.5549 > 0.05. Hal ini menunjukkan bahwa cukup bukti untuk menyatakan bahwa data tidak stasioner.
par(mfrow=c(1,1))
acf(train.ts)
pacf(train.ts)
data.dif1<-diff(train.ts, differences = 1);data.dif1
## Time Series:
## Start = 2
## End = 96
## Frequency = 1
## [1] 133.162857 250.231905 178.826810 128.467952 -119.831429
## [6] 53.360476 170.129474 492.647526 15.451182 -33.875182
## [11] 172.967000 -78.080952 -469.983048 -364.407579 228.881124
## [16] 43.390455 394.605789 -14.281007 1083.706329 1614.652222
## [21] 325.904286 394.018381 1102.003500 268.232500 -310.396500
## [26] -767.215500 148.930000 291.230556 672.088492 -99.094048
## [31] -433.425000 -164.361364 125.334842 -333.288478 253.510714
## [36] -382.356190 460.664160 60.309952 -241.732208 161.499071
## [41] 1238.100452 62.574311 -3553.819809 4855.765974 -957.688095
## [46] -345.253810 -14.750524 -773.812000 -679.272000 -570.556429
## [51] 76.898571 661.813357 -517.478682 -1691.496524 -44.169840
## [56] -9.047359 -1179.701429 458.702424 199.634719 -259.647143
## [61] 190.440175 -218.630933 322.477424 437.268667 -218.277000
## [66] 347.358333 -28.958333 394.541842 161.674067 24.522273
## [71] 285.865239 295.370670 535.811435 221.894236 225.967143
## [76] -495.823405 -283.952071 317.019481 -217.970671 641.538972
## [81] 361.506659 -799.780393 -608.497845 -106.283995 -5.886005
## [86] 488.550368 -316.763526 91.485764 -486.861238 -498.654435
## [91] -231.894111 119.870260 398.055590 312.222981 258.872714
Hipotesis
H0 : Data tidak stasioner
H1 : Data stasioner
tseries::adf.test(data.dif1)
##
## Augmented Dickey-Fuller Test
##
## data: data.dif1
## Dickey-Fuller = -3.9485, Lag order = 4, p-value = 0.01499
## alternative hypothesis: stationary
Didapatkan bahwa p-value = 0.01499 < 0.05. Hal ini menunjukkan bahwa tidak cukup bukti untuk menyatakan bahwa data tidak stasioner.
plot(x = data.dif1,
col = "black",
lwd = 1,
type = "o",
main = "Setelah Differencing")
Setelah dilakukan differencing didapatkan bahwa data sudah
stasioner baik secara uji ADF maupun eksplorasi visual.
acf(data.dif1,lag.max = 20)
pacf(data.dif1,lag.max = 20)
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 o o o
## 1 x o o o o o o o o x 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 o o o o o o o o o o o o o
## 5 x o o x 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 x o o o o o o o o o o o o
data.arima1 <- Arima(data.ts,order = c(1,1,0));data.arima1
## Series: data.ts
## ARIMA(1,1,0)
##
## Coefficients:
## ar1
## -0.2374
## s.e. 0.0886
##
## sigma^2 = 515332: log likelihood = -950.96
## AIC=1905.92 AICc=1906.02 BIC=1911.47
data.arima2 <- Arima(data.ts,order = c(0,1,1));data.arima2
## Series: data.ts
## ARIMA(0,1,1)
##
## Coefficients:
## ma1
## -0.2813
## s.e. 0.0860
##
## sigma^2 = 507834: log likelihood = -950.1
## AIC=1904.2 AICc=1904.3 BIC=1909.75
data.arima3 <- Arima(data.ts,order = c(1,1,1));data.arima3
## Series: data.ts
## ARIMA(1,1,1)
##
## Coefficients:
## ar1 ma1
## 0.0437 -0.3184
## s.e. 0.2317 0.2107
##
## sigma^2 = 512027: log likelihood = -950.08
## AIC=1906.16 AICc=1906.37 BIC=1914.5
auto.arima(data.ts)
## Series: data.ts
## ARIMA(0,1,1)
##
## Coefficients:
## ma1
## -0.2813
## s.e. 0.0860
##
## sigma^2 = 507834: log likelihood = -950.1
## AIC=1904.2 AICc=1904.3 BIC=1909.75