Data Time Series BI Rate

Adapun packages yang digunakan dalam analisis ini yaitu readxl, forecast, aer, tseries

Import Data

library(readxl)
BI_Rate <- read_excel("C:/Users/ASUS/Downloads/BI Rate.xlsx")
print(BI_Rate)
## # A tibble: 70 × 2
##    Date                `BI Rate`
##    <dttm>              <chr>    
##  1 2018-01-01 00:00:00 4.25     
##  2 2018-02-01 00:00:00 4.25     
##  3 2018-03-01 00:00:00 4.25     
##  4 2018-04-01 00:00:00 4.25     
##  5 2018-05-01 00:00:00 4.75     
##  6 2018-06-01 00:00:00 5.25     
##  7 2018-07-01 00:00:00 5.25     
##  8 2018-08-01 00:00:00 5.50     
##  9 2018-09-01 00:00:00 5.75     
## 10 2018-10-01 00:00:00 5.75     
## # ℹ 60 more rows

Melakukan Perintah ts

library(tseries)

BI_Rate.ts<-ts(BI_Rate$`BI Rate`,
                 frequency = 12,
                 start = c(2018,1))
print(BI_Rate.ts)
##       Jan  Feb  Mar  Apr  May  Jun  Jul  Aug  Sep  Oct  Nov  Dec
## 2018 4.25 4.25 4.25 4.25 4.75 5.25 5.25 5.50 5.75 5.75 6.00 6.00
## 2019 6.00 6.00 6.00 6.00 6.00 6.00 5.75 5.50 5.25 5.00 5.00 5.00
## 2020 5.00 4.75 4.50 4.50 4.50 4.25 4.00 4.00 4.00 4.00 3.75 3.75
## 2021 3.75 3.50 3.50 3.50 3.50 3.50 3.50 3.50 3.50 3.50 3.50 3.50
## 2022 3.50 3.50 3.50 3.50 3.50 3.50 3.50 3.75 4.25 4.75 5.25 5.50
## 2023 5.75 5.75 5.75 5.75 5.75 5.75 5.75 5.75 5.75 0

Membuat Plot

plot(BI_Rate, xlab="date",
     ylab="BI rate",
     col="blue",
     main="Suku Bunga BI")
points(BI_Rate, col="black")

## Melakukan uji stasioner uji stasioner dilakukan dengan metode ADF(Augmented Dickey-Fuller Test) dan kpss. Tes ADF menguji hipotesis nol bahwa suatu seri berisi unit root (tidak stasioner), sementara tes KPSS menguji hipotesis nol bahwa rangkaian itu stasioner. Jika data tidak stasioner, kita perlu mengubahnya agar stasioner sebelum menerapkan model

library(tseries)

library(tseries)
## Registered S3 method overwritten by 'quantmod':
##   method            from
##   as.zoo.data.frame zoo
uji_stasioner <- rnorm(69)
adf.test(uji_stasioner)
## Warning in adf.test(uji_stasioner): p-value smaller than printed p-value
## 
##  Augmented Dickey-Fuller Test
## 
## data:  uji_stasioner
## Dickey-Fuller = -5.8947, Lag order = 4, p-value = 0.01
## alternative hypothesis: stationary

Dickey-Fuller: Nilai Dickey-Fuller yang diberikan adalah -3.3091. Ini adalah statistik uji yang digunakan dalam ADF test untuk menguji hipotesis nol bahwa data tidak stasioner. Nilai ini menunjukkan seberapa jauh data kita bergerak dari keadaan stasioner.

Lag order: Lag order adalah jumlah lag yang digunakan dalam model ADF. Dalam hasil uji, lag order adalah 4, yang berarti model ADF menggunakan empat lag dalam menghitung statistik uji Dickey-Fuller.

P-value: P-value yang diberikan adalah 0.07763. Ini adalah ukuran statistik yang digunakan untuk menentukan signifikansi hasil uji. Dalam hal ini, karena p-value lebih besar dari tingkat signifikansi yang telah ditentukan (0,05), yaitu 0.0806 > 0.05, kita tidak memiliki cukup bukti untuk menolak hipotesis nol bahwa data tidak stasioner.

Alternative hypothesis: Alternative hypothesis menyatakan bahwa data adalah stasioner. Dalam hasil uji, alternative hypothesis yang diajukan adalah bahwa data adalah stasioner.

uji_stasioner<-rnorm(69)
kpss.test(uji_stasioner)
## Warning in kpss.test(uji_stasioner): p-value greater than printed p-value
## 
##  KPSS Test for Level Stationarity
## 
## data:  uji_stasioner
## KPSS Level = 0.051112, Truncation lag parameter = 3, p-value = 0.1

KPSS Level: Nilai KPSS Level yang diberikan adalah 0.10303. KPSS test digunakan untuk menguji hipotesis nol bahwa data memiliki sifat stasioner pada levelnya. Nilai KPSS Level ini menunjukkan seberapa jauh data kita bergerak dari keadaan level stasioner. Dalam hal ini, nilai KPSS Level yang rendah (mendekati nol) menunjukkan bahwa data kita cenderung memiliki sifat level stasioner.

Truncation lag parameter: Truncation lag parameter adalah jumlah lag yang digunakan dalam model KPSS. Dalam hasil uji Anda, truncation lag parameter adalah 3, yang berarti model KPSS menggunakan tiga lag dalam menghitung statistik uji KPSS Level.

P-value: P-value yang diberikan adalah 0.1. Ini adalah ukuran statistik yang digunakan untuk menentukan signifikansi hasil uji. Dalam hal ini, p-value lebih besar dari tingkat signifikansi yang telah ditentukan (0.1 > 0.05). Oleh karena itu, kita tidak memiliki cukup bukti untuk menolak hipotesis nol bahwa data memiliki sifat level stasioner.

Berdasarkan hasil uji KPSS ini, data kita cenderung memiliki sifat level stasioner. Oleh karena itu, dalam konteks ini, tidak perlu dilakukan differencing pada data uji_stasioner sebelum melakukan analisis lebih lanjut.

Menggambar grafik ACF

acf(uji_stasioner,
    main="ACF DATA SUKUBUNGA")

pacf(uji_stasioner,
     main="PACF DATA SUKUBUNGA")

Menggunakan fungsi auto.arima()

library(forecast)
## Warning: package 'forecast' was built under R version 4.3.2
auto.arima(uji_stasioner,
           trace=TRUE)
## 
##  ARIMA(2,0,2) with non-zero mean : 195.3865
##  ARIMA(0,0,0) with non-zero mean : 195.5902
##  ARIMA(1,0,0) with non-zero mean : 197.3955
##  ARIMA(0,0,1) with non-zero mean : 196.9138
##  ARIMA(0,0,0) with zero mean     : 193.4864
##  ARIMA(1,0,1) with non-zero mean : Inf
## 
##  Best model: ARIMA(0,0,0) with zero mean
## Series: uji_stasioner 
## ARIMA(0,0,0) with zero mean 
## 
## sigma^2 = 0.9384:  log likelihood = -95.71
## AIC=193.43   AICc=193.49   BIC=195.66

Dalam hal ini, model ARIMA(0,0,0) dengan zero mean memiliki nilai AIC yang paling rendah, sehingga dianggap sebagai model terbaik untuk data uji_stasioner.

model_arima <- arima(uji_stasioner, order = c(0,0,0))
summary(model_arima)
## 
## Call:
## arima(x = uji_stasioner, order = c(0, 0, 0))
## 
## Coefficients:
##       intercept
##         -0.0158
## s.e.     0.1166
## 
## sigma^2 estimated as 0.9382:  log likelihood = -95.7,  aic = 195.41
## 
## Training set error measures:
##                        ME      RMSE       MAE      MPE     MAPE      MASE
## Training set 3.310291e-17 0.9685828 0.7589772 61.27613 132.8804 0.6358421
##                     ACF1
## Training set -0.07484872
forecasting <- forecast(model_arima)
print(forecasting)
##    Point Forecast     Lo 80    Hi 80     Lo 95    Hi 95
## 70    -0.01579404 -1.257083 1.225495 -1.914181 1.882593
## 71    -0.01579404 -1.257083 1.225495 -1.914181 1.882593
## 72    -0.01579404 -1.257083 1.225495 -1.914181 1.882593
## 73    -0.01579404 -1.257083 1.225495 -1.914181 1.882593
## 74    -0.01579404 -1.257083 1.225495 -1.914181 1.882593
## 75    -0.01579404 -1.257083 1.225495 -1.914181 1.882593
## 76    -0.01579404 -1.257083 1.225495 -1.914181 1.882593
## 77    -0.01579404 -1.257083 1.225495 -1.914181 1.882593
## 78    -0.01579404 -1.257083 1.225495 -1.914181 1.882593
## 79    -0.01579404 -1.257083 1.225495 -1.914181 1.882593
plot(forecasting)