Differencing Data bila tidak Stasioner

By | January 12, 2022
Print Friendly, PDF & Email
48 Views

Dalam model algoritma peramalan ARIMA ada asumsi yang harus dipenuhi yaitu data tersebut bersifat stasioner, namun bila tidak harus dibuat stasioner. Suatu deret waktu yang tidak stasioner harus diubah menjadi data stasioner dengan melakukan differencing. Yang dimaksud dengan differencing adalah menghitung perubahan atau selisih nilai observasi. Nilai selisih yang diperoleh dicek lagi apakah stasioner atau tidak. Jika belum stasioner maka dilakukan differencing lagi. Jika varians tidak stasioner, maka dilakukan transformasi logaritma.

Differencing merupakan tahapan olah data dengan menghitung nilai perbedaan antara Yt dengan Yt-1. Jadi sebenarnya kita menghitung data tersebut dengan data sebelumnya. Karena yang kita olah adalah data selisih, maka dipastikan unsur tren akan hilang. Namun ada beberapa kasus data tren belum hilang setelah dilakukan differencing. Maka yang kita lakukan adalah melakukan differencing pada data yang telah dilakukan differencing sebelumnya. Tahap ini berarti memiliki nilai difference 2, artinya data dilakukan differencing sebanyak dua kali.

Dataset non Stasioner

Kita ambil contoh dari data non stationer harga minyak mentah https://www.kaggle.com/mabusalah/brent-oil-prices  yang mengandung tren kenaikan. Data tersebut mempunyai format date US sebagai berikut  lubridate::parse_date_time("21-Dec-2017", orders = "d-b-Y", locale = "us") maka kalian butuh library lubridate untuk mengubah ke format yang benar di R

library(dplyr)
library(ggplot2)
library(scales)
library(lubridate)

dat = read.csv('BrentOilPrices.csv')
dat$Date = lubridate::parse_date_time(dat$Date, orders = "d-b-y", locale = "us")
mean(dat$Price)
var(dat$Price)

Perintah plot sederhana nggak pakai ribet, bisa kalian gunakan (sengaja saya hapus tidak pakai ggplot biar nggak kebanyakan kode)

plot(dat$Price,type='l')
hist(dat$Price)

 

 

Kita juga akan melihat data non stasoiner diatas dalam bentuk grafik lain yaitu histogram dengan nilai mean dan variance sebagai berikut

  • mean : 46.35296
  • variance :  1034.605

 

Nilai dickey fuller dengan signifikansi 5% sebagai berikut

adf.test(dat$Price,k=1)

hasil

   Augmented Dickey-Fuller Test

data:  dat$Price
Dickey-Fuller = -2.1054, Lag order = 1, p-value = 0.5337
alternative hypothesis: stationary

Terlihat nilai p-value > 0.05 sehingga H0 diterima (artinya data non stasioner), baca uji stasioner

See also  Buku Belajar Dasar Statistika dengan R – Deteksi Autokorelasi

Differencing Data Non Stasioner

Differencing data non statisoner data merupakan cara mengubah data non stasioner menjadi stasioner sebagai contoh berikut

Perintah yang digunakan yaitu diff()

diff(c(2,3,5,18,4,6,4),lag=1)

Jika perintah diatas kita gunakan pada data non stasioner, akan menghasilkan grafik stasioner berikut

Terlihat grafik histogram mengikuti distribusi normal

Perintah untuk differencing dengan lag=1 sebagai berikut

dat2  = dat
dat2$Price[1:length(dat$Price)-1] = diff(dat$Price,k=1)
dat2= dat2[1:length(dat$Price)-1,] #hilangkan data terakhir

Kita akan hitung nilai mean dan variance diatas

mean(dat2$Price)
var(dat2$Price)

menghasilkan nilai yang sangat kecil

  • mean : 0.004303753
  • variance :  1.206682

dengan nilai Dickey Fuller sebagai berikut terlihat nilai p-value yaitu 0.01 < 0.05% artinya H0 ditolak dan H1 diterima (data stasioner)

adf.test(dat2$Price,k=1)

hasil

   Augmented Dickey-Fuller Test

data:  dat2$Price
Dickey-Fuller = -65.04, Lag order = 1, p-value = 0.01
alternative hypothesis: stationary

Demikian pembahasan mengenai Differencing Data bila tidak Stasioner

 

Leave a Reply

Your email address will not be published.




Enter Captcha Here :