Library:

> # install.packages("knitr")
> # install.packages("rmarkdown")
> # install.packages("prettydoc")
> # install.packages("equatiomatic")

1 PENDAHULUAN

1.1 Latar Belakang

Analisis deret waktu adalah suatu metode analisis statistic yang digunakan untuk memahami pola perubahan dari suatu data seiring waktu. Ini melibatkan pengamatan, pemodelan, dan interpretasi perilaku data dalam rentang waktu tertentu. George Box dan Gwilym Jenkins pertama kali menciptakan ARIMA dalam penelitian analisis rangkaian waktu. Mereka membuat metode ini untuk menentukan model mana yang paling cocok untuk menjalankan sistem prediksi deret waktu. Tujuan dari analisis deret waktu adalah untuk memperoleh pemahaman yang lebih dalam dan tepat tentang perilaku data dari waktu ke waktu. Informasi ini dapat digunakan untuk meramalkan masa depan, mengoptimalkan operasi, mengukur efek intervensi, dan mengelola risiko dengan lebih baik.

Langkah-langkah yang biasanya dilakukan untuk memulai analisis deret waktu, diantaranya :

• Visualisasi Data : Menggunakan plot deret waktu untuk mengidentifikasi komponen data.

• Stasioneritas : Uji stasioneritas untuk memastikan bahwa data tidak memiliki tren atau variabilitas musiman. Ini dapat melibatkan menghilangkan tren dan/atau musim.

• Identifikasi Model : Selanjutnya menemukan model yang tepat untuk meramalkan deret waktu musiman setelah data menjadi stasioner menggunakan Autocorrelation Function (ACF) dan Partial Autocorrelation Function (PACF) untuk menentukan parameter AR dan MA.

• Estimasi Parameter : Setelah model ditemukan, parameternya harus dihitung dengan menggunakan metode seperti Maximum Likelihood Estimation (MLE).

• Diagnosis Model : Untuk memastikan bahwa model berperilaku seperti white noise dengan memeriksa residuals.

• Validasi dan Peramalan : Setelah model dinyatakan sesuai, peramalan dapat dibuat untuk periode yang akan datang. Ini dapat divalidasi dengan membandingkan hasil peramalan dengan data aktual dan mengukur tingkat akurasi model.

1.2 Tinjauan Pustaka

1.2.1 Dekomposisi Deret Waktu

Dekomposisi deret waktu adalah teknik yang biasanya digunakan untuk memecah data deret waktu menjadi beberapa bagian yang lebih kecil yang dapat dianalisis secara terpisah. Dalam dekomposisi deret waktu, dua model utama yang digunakan adalah model aditif (additive model) dan model multiplikatif (multiplicative model). Berikut ini adalah penjelasan tentang kedua model tersebut, serta referensi untuk lebih banyak informasi.

Model Aditif (Additive Model)

Salah satu asumsi yang dibuat dalam model aditif adalah bahwa elemen-elemen dari deret waktu saling dijumlahkan. Ketika besaran fluktuasi musiman (variasi musiman) tetap konstan dari waktu ke waktu, tidak tergantung pada level deret waktu, model ini cocok digunakan. Komponen model aditif adalah :

\[ Y_t=T_t+S_t+C_t+I_t \] dimana :

\(Y_t\)= nilai aktual pada waktu t

\(T_t\)= komponen tren

\(S_t\)= komponen musiman

\(C_t\)= komponen siklis pada periode waktu t

\(I_t\)= residual pada peride waktu t

Model Multiplikatif (Multiplicative Model)

Pada model multiplikatif ini digunakan ketika asumsi yang dibuat adalah bahwa bagian-bagian dari deret waktu saling dikalikan. Model ini cocok digunakan ketika besaran fluktuasi musiman bervariasi secara proporsional terhadap level deret waktu. Komponen model multiplikatif adalah :

\[ Y_t=T_t\times S_t\times C_t\times I_t \]

dimana :

\(Y_t\)= nilai aktual pada waktu t

\(T_t\)= komponen tren

\(S_t\)= komponen musiman

\(C_t\)= komponen siklis pada periode waktu t

\(I_t\)= residual pada peride waktu t

1.2.2 Autoregressive Integrated Moving Average (ARIMA)

Diciptakan oleh George Box dan Gwilym Jenkins, metode ARIMA (Autoregressive Integrated Moving Average) adalah penggabungan antara model Autoregressive (AR) dan Moving Average (MA). Model MA (Moving Average) menjelaskan sutau kejadian dimana suatu pengamatan pada waktu t dinyatakan sebagai kombinasi linier dari sejumlah residual. ARIMA(p,d,q) merupakan kombinasi dari Autoregressive (AR), Integrated (I), dan Moving Average (MA). Berikut ini adalah bentuk umum persamaan ARIMA :

\(\phi_p(B){(1-B)}^dZ_t\) = \(\mu^`+\theta_q(B)\alpha_t\)

\(AR\left(p\right):{\ Y}_t=c+\sum_{i=1}^{p}{\phi_iY_{t-i}+\epsilon_t}\)

\(MA(p)∶{\ Y}_t=c+\sum_{i=1}^{p}{\theta_iY_{t-i}+\epsilon_t}\)

\(I\left(d\right)\): mengurangi tren atau membuat data stasioner melalui differencing.

1.2.3 Exponential Smoothing

Eksponential Smoothing adalah teknik peramalan yang digunakan untuk memprediksi data berdasarkan pengamatan masa lalu. Teknik ini sangat berguna karena memberikan bobot lebih besar pada pengamatan terbaru, yang membuatnya lebih responsif terhadap perubahan data. Tiga jenis Eksponential Smoothing utama adalah Simple Exponential Smoothing, Holt’s Linear Trend Model, dan Holt-Winters Seasonal Model.

  1. Simple Exponential Smoothing : digunakan untuk data tanpa pola musiman atau tren.

  2. Holt’s-Winters Seasonal Model : digunakan untuk menangani data dengan komponen musiman.

  3. Holt’s Linear Trend Model : Menggunakan dua parameter untuk level dan tren.

1.3 Data

Pada analisis kali ini digunakan data harga emas bulanan mulai Januari 2012 sampai data terakhir Juli 2021.

> library(readr)
> setwd("C:/Users/User/Downloads")
> emas <- read.csv("dataemas_monthly.csv", header = TRUE)
> head(emas)
        Date    Price
1 31-01-2012 15678560
2 29-02-2012 15965400
3 30-03-2012 15201900
4 30-04-2012 15175813
5 31-05-2012 14645200
6 29-06-2012 15013911

1.4 Tujuan

Analisis dilakukan dengan tujuan untuk memprediksi apakah harga emas akan mengalami suatu pola.

2 SOURCE CODE

2.1 Mengimport Dataset

> library(readr)
> setwd("C:/Users/User/Downloads")
> emas <- read.csv("dataemas_monthly.csv", header = TRUE)
> head(emas)
        Date    Price
1 31-01-2012 15678560
2 29-02-2012 15965400
3 30-03-2012 15201900
4 30-04-2012 15175813
5 31-05-2012 14645200
6 29-06-2012 15013911

Perintah mengimpor dengan readr lalu mengatur direktori dimana lokasi file yang akan dijalankan. Kemudian intruksi membaca file ‘dataemas_monthly’ yang telah diimpor dan ditampilkan data tersebut sebanyak 6 baris menggunakan ‘head’.

2.2 Membuat Deret Waktu

> emas.ts<-ts(emas$Price, start=c(2012,1), frequency=12)
> emas.ts
          Jan      Feb      Mar      Apr      May      Jun      Jul      Aug
2012 15678560 15965400 15201900 15175813 14645200 15013911 15352230 15718448
2013 16214665 15350470 15530994 14282353 13659128 11830600 13509774 15230670
2014 15274710 15399339 14674280 14896993 14599588 15589325 14879982 15040061
2015 15964217 15690950 15520025 15298991 15755072 15612358 14858605 15946750
2016 15315042 16513082 16402620 16955151 16557284 17450409 17578187 17367201
2017 16193909 16744680 16588247 16880511 16865783 16556087 16888834 17501369
2018 18008199 18118459 18226103 18269894 18137836 17918948 17606098 17712088
2019 18489111 18557141 18446495 18272772 18490735 19905648 20009966 21680353
2020 21632250 23097324 26241974 25328406 25256306 25257310 28687539 28503911
2021 26149115 24818185 24562502 25533703 27131285 25565674 26404909         
          Sep      Oct      Nov      Dec
2012 16996320 16510995 16558381 15974156
2013 15360870 14924790 14989013 14658765
2014 14823053 14069961 14434281 14936310
2015 16320100 15635914 14691385 14612100
2016 17259948 16597056 15966198 15438136
2017 17282072 17226408 17315985 17515643
2018 17691806 18470277 17414006 18392020
2019 21083831 21209205 20595414 21028517
2020 28077071 27522058 24887207 26520781
2021                                    

Perintah membuat deret waktu dari harga emas yang dimulai pada bulan Januari 2012 dan memiliki frekuensi bulanan.

2.3 Visualisasi Data

> library(tseries)
> library(forecast)
> ts.plot(emas.ts, main="Plot Deret Waktu Emas", xlab="Waktu", 
+         ylab="Harga", type="o")

Perintah membuat plot pada deret waktu dengan menggunakan paket ‘tseries’ dan ‘forecast’, dimana x adalah waktu serta y adalah harga.

2.4 Stasioneritas

> library(MASS)
> boxcox(lm(emas.ts~1))

Perintah membuat transformasi Box-Cox pada deret waktu ‘emas.ts’ diregresikan terhadap nilai konstan (1).

2.5 Stasioneritas terhadap Rata-Rata

> library(tseries)
> adf.test(emas.ts)

    Augmented Dickey-Fuller Test

data:  emas.ts
Dickey-Fuller = -1.5142, Lag order = 4, p-value = 0.7783
alternative hypothesis: stationary

Perintah melakukan uji ADF pada deret waktu ‘emas.ts’ dengan paket ‘tseries’.

2.6 Differensiasi Data

> emas.ts.diff.1 <- diff(emas.ts, differences = 1)
> emas.ts.diff.1
            Jan        Feb        Mar        Apr        May        Jun
2012              286840.0  -763500.0   -26086.9  -530613.1   368711.3
2013   240508.7  -864195.2   180524.6 -1248641.9  -623225.0 -1828527.5
2014   615945.0   124628.5  -725058.5   222712.8  -297405.3   989737.5
2015  1027906.9  -273266.9  -170925.0  -221034.4   456081.7  -142714.8
2016   702942.3  1198039.2  -110461.5   552530.9  -397866.9   893125.4
2017   755773.0   550770.3  -156433.0   292264.7   -14728.0  -309696.5
2018   492556.8   110259.4   107644.2    43791.4  -132058.1  -218888.4
2019    97090.6    68030.7  -110646.7  -173722.4   217962.4  1414912.9
2020   603733.4  1465074.0  3144649.4  -913567.4   -72100.0     1003.6
2021  -371666.7 -1330929.3  -255683.4   971200.8  1597582.5 -1565611.7
            Jul        Aug        Sep        Oct        Nov        Dec
2012   338318.7   366217.5  1277872.5  -485325.0    47386.0  -584224.7
2013  1679173.8  1720896.2   130200.0  -436080.0    64222.5  -330247.5
2014  -709343.1   160078.7  -217008.1  -753091.2   364319.7   502029.0
2015  -753752.8  1088145.3   373350.0  -684186.4  -944528.4   -79285.2
2016   127777.6  -210985.7  -107253.8  -662891.5  -630857.7  -528061.9
2017   332746.7   612534.9  -219296.6   -55663.8    89576.4   199658.0
2018  -312849.5   105989.5   -20281.9   778470.7 -1056270.5   978013.9
2019   104318.1  1670387.0  -596521.9   125373.8  -613790.1   433102.5
2020  3430228.7  -183627.8  -426840.2  -555012.9 -2634851.0  1633574.7
2021   839235.8                                                       

Perintah melakukan differensiasi pertama pada deret waktu ‘emas.ts’ dengan fungsi ‘diff()’ dan hasilnya disimpan pada variabel ‘emas.ts.diff.1’.

2.7 Visualisasi pada Differensiasi Data Pertama

> ts.plot(emas.ts.diff.1,main="Plot Differencing Pertama Emas",
+         xlab="waktu",ylab="harga",type="o")

Mendefinisikan bnj sebagai hasil dari analisis TukeyHSD setelah analisis ragam/ANOVA dilakukan.

2.8 Stasioneritas terhadap Rata-Rata pada Differensiasi Data Pertama

> adf.test(emas.ts.diff.1)

    Augmented Dickey-Fuller Test

data:  emas.ts.diff.1
Dickey-Fuller = -4.7391, Lag order = 4, p-value = 0.01
alternative hypothesis: stationary

Perintah untuk melakukan uji ADF pada deret waktu ‘emas.ts.diff.1’ dengan paket ‘tseries’.

2.9 Identifikasi Model

> library(forecast)
> Acf(emas.ts.diff.1)

> Pacf(emas.ts.diff.1)

Perintah untuk membuat plot ACF dan PACF pada ‘emas.ts.diff.1’ menggunakan paket ‘forecast’.

2.10 Estimasi Parameter

> library(forecast)
> library(lmtest)
> #ARIMA (0,1,1)
> fit.1 <- Arima(emas.ts, order = c(0,1,1), method = "ML")
> coeftest(fit.1)

z test of coefficients:

     Estimate Std. Error z value Pr(>|z|)
ma1 -0.058573   0.099190 -0.5905   0.5548
> #ARIMA(0,1,2)
> fit.2 <- Arima(emas.ts, order = c(0,1,2), method = "ML")
> coeftest(fit.2)

z test of coefficients:

     Estimate Std. Error z value Pr(>|z|)
ma1 -0.070507   0.096151 -0.7333   0.4634
ma2 -0.045406   0.091261 -0.4975   0.6188
> #ARIMA(1,1,0)
> fit.3 <- Arima(emas.ts, order = c(1,1,0), method = "ML")
> coeftest(fit.3)

z test of coefficients:

     Estimate Std. Error z value Pr(>|z|)
ar1 -0.053549   0.093560 -0.5724   0.5671
> #ARIMA(1,1,1)
> fit.4 <- Arima(emas.ts, order = c(1,1,1), method = "ML")
> coeftest(fit.4)

z test of coefficients:

    Estimate Std. Error z value Pr(>|z|)  
ar1  0.57778    0.38185  1.5131  0.13025  
ma1 -0.65796    0.34931 -1.8836  0.05962 .
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
> #ARIMA(1,1,2)
> fit.5 <- Arima(emas.ts, order = c(1,1,2), method = "ML")
> coeftest(fit.5)

z test of coefficients:

     Estimate Std. Error z value Pr(>|z|)
ar1  0.467557   0.506148  0.9238   0.3556
ma1 -0.534469   0.501492 -1.0658   0.2865
ma2 -0.035808   0.096803 -0.3699   0.7114

Perintah menguji hipotesis statistik tentang estimasi parameter 5 model ARIMA, yaitu ARIMA(0,1,1), ARIMA(0,1,2), ARIMA(1,1,0), ARIMA(1,1,1), dan ARIMA(1,1,2) pada deret waktu ‘emas.ts’ dan metode maximum likelihood.

2.11 Diagnosis Model

> aic.model <- data.frame(Nama=c("fit.1","fit.2","fit.3","fit.4","fit.5"),
+                         Model=c("ARIMA(0,1,1)","ARIMA(0,1,2)","ARIMA(1,1,0)",
+                                 "ARIMA(1,1,1)","ARIMA(1,1,2)"),
+                         AIC=c(fit.1$aic, fit.2$aic, fit.3$aic, fit.4$aic, 
+                               fit.5$aic))
> print(aic.model)
   Nama        Model      AIC
1 fit.1 ARIMA(0,1,1) 3440.679
2 fit.2 ARIMA(0,1,2) 3442.434
3 fit.3 ARIMA(1,1,0) 3440.706
4 fit.4 ARIMA(1,1,1) 3441.936
5 fit.5 ARIMA(1,1,2) 3443.824

Perintah membuat data frame bernama ‘aic.model’ dari kelima model ARIMA dengan melihat nilai AIC dan ditampilkan menggunakan ‘print’

2.12 Diagnosis Model Terbaik

> checkresiduals(fit.1)


    Ljung-Box test

data:  Residuals from ARIMA(0,1,1)
Q* = 20.211, df = 22, p-value = 0.5698

Model df: 1.   Total lags used: 23

Perintah melakukan diagnosis terhadap residual menggunakan ‘checkresiduals’ dari model ‘fit.1’.

2.13 Diagnosis Model Terbaik

> ramalan <- forecast(emas.ts, model = fit.1, h=12)
> ramalan
         Point Forecast    Lo 80    Hi 80    Lo 95    Hi 95
Aug 2021       26360792 25265339 27456245 24685441 28036143
Sep 2021       26360792 24856273 27865311 24059829 28661755
Oct 2021       26360792 24536749 28184836 23571158 29150426
Nov 2021       26360792 24265394 28456190 23156157 29565427
Dec 2021       26360792 24025358 28696226 22789054 29932530
Jan 2022       26360792 23807792 28913792 22456315 30265269
Feb 2022       26360792 23607364 29114221 22149787 30571798
Mar 2022       26360792 23420566 29301018 21864105 30857479
Apr 2022       26360792 23244948 29476636 21595520 31126065
May 2022       26360792 23078713 29642871 21341285 31380299
Jun 2022       26360792 22920501 29801083 21099321 31622263
Jul 2022       26360792 22769252 29952332 20868006 31853579
> plot(ramalan)

Perintah melakukan peramalan dari deret wakatu ‘emas.ts’ dengan model ‘fit.1’ dan hasil ramalan untuk periode 12 kedepan dengan menyimpan pada ‘ramalan’. Serta membuat plot dari hasil ‘ ramalan’.

3 HASIL DAN PEMBAHASAN

3.1 Visualisasi Data

Membentuk plot dari data emas dimana sumbu X merupakan variabel waktu, sedangkan sumbu Y merupakan variabel price.

3.2 Uji Stasioneritas

Hipotesis :

\(H_0=Data\ tidak\ stasioner\)

\(H_1=Data\ stasioner\)

Daerah Kritis : p-value < α maka tolak \(H_0\)

Statistik Uji : p-value = 0.7783

Keputusan : karena nilai p-value(0.7783) > α (0.05), maka gagal tolak \(H_0\)

Kesimpulan : Dengan Tingkat kepercayaan 95%, dapat disimpulkan bahwa data tidak stasioner. Maka perlu dilakukan differencing agar data stasioner.

3.3 Stasioneritas terhadap Rata-Rata

Hipotesis :

\(H_0=Data\ tidak\ stasioner\)

\(H_1=Data\ stasioner\)

Daerah Kritis : p-value < α maka tolak \(H_0\)

Statistik Uji : p-value = 0.01

Keputusan : karena nilai p-value(0.01) < α (0.05), maka tolak \(H_0\)

Kesimpulan : Dengan Tingkat kepercayaan 95%, dapat disimpulkan bahwa data stasioner.

3.4 Identifikasi Model

> Acf(emas.ts.diff.1)

> Pacf(emas.ts.diff.1)

Berdasarkan korelogram, batang ACF keluar hingga lag ke-2 yang menunjukan orde MA yaitu 𝑞 = 2. Sementara batang PACF keluar pada lag ke-1, yang menunjukan orde AR yaitu 𝑝 = 1. Dengan sebelumnya dilakukan differencing orde 1, 𝑑 = 1, diperoleh model ARIMA(1,1,2).

3.5 Estimasi Parameter

Melakukan overfitting terhadap model dengan memilih model yang memiliki orde lebih rendah atau kombinasi dari orde pada model utama, sehingga diperoleh :

• ARIMA(0,1,1)

• ARIMA(0,1,1)

• ARIMA(0,1,1)

• ARIMA(0,1,1)

• ARIMA(0,1,1)

> aic.model <- data.frame(Nama=c("fit.1","fit.2","fit.3","fit.4","fit.5"),
+                         Model=c("ARIMA(0,1,1)","ARIMA(0,1,2)","ARIMA(1,1,0)",
+                                 "ARIMA(1,1,1)","ARIMA(1,1,2)"),
+                         AIC=c(fit.1$aic, fit.2$aic, fit.3$aic, fit.4$aic, 
+                               fit.5$aic))
> print(aic.model)
   Nama        Model      AIC
1 fit.1 ARIMA(0,1,1) 3440.679
2 fit.2 ARIMA(0,1,2) 3442.434
3 fit.3 ARIMA(1,1,0) 3440.706
4 fit.4 ARIMA(1,1,1) 3441.936
5 fit.5 ARIMA(1,1,2) 3443.824

Berdasarkan hasil output rstudio menunjukkan nilai AIC yang paling kecil adalah model ARIMA(0,1,1) yang menjadi model terbaik.

3.6 Diagnosis Model

Hipotesis :

\(H_0=k=0\ (tidak\ ada\ autokorelasi\ residual\ antar\ lag)\ \)

\(H_1=minimal\ ada\ satu\ k\neq0\) (ada autokorelasi residual antar lag)

Taraf Signifikasi : α = 0.05

Keputusan : karena p-value(0.5698) > α(0.05) maka gagal tolak \(H0\)

Kesimpulan : Dengan tingkat kepercayaan 95%, dapat disimpulkan bahwa tidak ada autokorelasi residual antar lag atau model ARIMA(0,1,1) residualnya tidak berkorelasi.

3.7 Prediksi

> plot(ramalan)

Berdasarkan hasil output menggunakan rstudio, menunjukkan model ARIMA(0,1,1) tampaknya akan mengalami sebuah tren yang lebih kompleks karena terdapat pola yang menaik.

4 KESIMPULAN

Dari hasil perhitungan analisis deret waktu, dapat disimpulkan bahwa harga emas 12 bulan kedepan diprediksi akan mengalami tren sehingga diperlukan Holt’s Linear Trend Model untuk memodelkan data tentang tren harga emas. Ini karena model ini dibuat khusus untuk menangani data tentang tren. Dengan menggunakan komponen level dan tren, model ini dapat memodelkan dan meramalkan perubahan harga emas seiring waktu.

5 DAFTAR PUSTAKA

Box, G. E. P., Jenkins, G. M., Reinsel, G. C., & Ljung, G. M. (2015). Time Series Analysis: Forecasting and Control. Wiley.

Hyndman, R. J., & Athanasopoulos, G. (2018). Forecasting: Principles and Practice. OTexts.

PERTEMUAN 12 ANALISIS DERET WAKTU dalam R. (n.d.).