Data Preparing

Pada LBB kali ini, saya akan melakukan forecasting dari data wikipedia tahun 2015 sampai dengan 2019, data wikipedia ini menginformasikan jumlah viewers yang mengakses wikipedia dengan artikel mengenai Indonesia. Saya mendapatkan data wikipedia ini dengan menggunakan fungsi article_pageviews() dari library(pageviews). Berikut adalah syntax yang saya gunakan :

## 'data.frame':    1543 obs. of  8 variables:
##  $ project    : chr  "wikipedia" "wikipedia" "wikipedia" "wikipedia" ...
##  $ language   : chr  "en" "en" "en" "en" ...
##  $ article    : chr  "Indonesia" "Indonesia" "Indonesia" "Indonesia" ...
##  $ access     : chr  "all-access" "all-access" "all-access" "all-access" ...
##  $ agent      : chr  "all-agents" "all-agents" "all-agents" "all-agents" ...
##  $ granularity: chr  "daily" "daily" "daily" "daily" ...
##  $ date       : POSIXct, format: "2015-07-01" "2015-07-02" ...
##  $ views      : num  11299 10467 9773 8889 9218 ...

Data Preprocessing

Karena dalam Time Series variabel yang digunakan adalah time dan y, maka saya akan menyeleksi data yang digunakan yaitu date dan views

##         date views
## 1 2015-07-01 11299
## 2 2015-07-02 10467
## 3 2015-07-03  9773
## 4 2015-07-04  8889
## 5 2015-07-05  9218
## 6 2015-07-06  9933

Ketentuan data yang harus diperlakukan didalam Time Series, antara lain :

  1. Data tidak boleh ada yang NA
  2. Data harus terurut berdasarkan waktu
  3. Data tidak boleh ada waktu yang bolong

Cek NA

##  date views 
##     0     0

Hasil cek menyatakan bahwa data wikipedia tidak memiliki data NA, dan data date pada wikipedia ini sudah berurutan dan tidak ada yang hilang, langkah selanjutkan adalah mengubah tipe data atau class wikipedia menjadi tipe data ts.

Data Time Series

Ubah tipe data ke time series

Fungsi untuk membuat object time series adalah ‘ts()’, parameter didalamnya ada :

  1. data = nilai y yang ingin diamati adalah views atau jumlah viewers di data wikipedia
  2. start = waktu mulai dari time series yang digunakan adalah 2015
  3. frequency = banyaknya data dalam 1 pola musiman, pola yang digunakan adalah pola tahunan yaitu 365.25

Decompose data time series

Fungsi decompose untuk memecah komponen ts menjadi beberapa komponen, yaitu :

  1. Trend adalah pergerakan mean secara global
  2. Seasonal adalah pola data per frequency
  3. Error adalah nilai yang tidak dapat oleh Trend dan Seasonal

  • Apabila ingin melihat pola atau seasonal

  • Apabila ingin melihat trend naik atau turun dengan menggunakan adjusted seasonal yaitu membuang efek seasonal data.

Dari hasil plot diatas, dapat dikatakan bahwa pola seasonal data wikipedia adalah acak atau random, sehingga saya dapat mengasumsikan bahwa data wikipedia tidak memiliki seasonal, sedangkan untuk pola trend data wikipedia juga tidak memiliki trend naik atau turun.

Build Model

Simple Exponential Smoothing

Fungsi yang digunakan untuk membuat model exponential smooting adalah ‘ets’ ( error, trend, seasonal ) parameter didalam fungsi tsb adalah 1. y = object time series 2. model = terdiri dari 3 huruf

A = additive M = multiplicative N = None Z = auto

error = Additive trend = None seasonal = None

SES ini baik untuk data yang tidak punya trend dan tidak punya seasonal, karena SES akan melakukan smoothing terhadapa error nya. Koefisien untuk smoothing error disebut dengan alpha.

  • Saya ingin membandingkan error dengan menggunakan model lainnya yaitu dengan model Holt, dan Holt Winter untuk mendapatkan error terkecil

Triple Exponential Smoothing ( Holt Winter )

  • Membandingkan error
## [1] 2194.183
## [1] 2194.708
## [1] 2195.095
  • Dari hasil RMSE diatas dapat dikatakan bahwa model SES adalah model yang memiliki nilai error paling kecil dibanding dengan model lainnya. Sehingga saya akan menggunakan model SES ini untuk langkah selanjutnya

ARIMA

Arima adalah salah satu model forecast yang sering dipakai, salah satu syarat ARIMA adalah data stationer atau mengacak, data yang bergerak disekitar mean atau tidak mempunyai tren dan seasonal.

Model ARIMA :

AR(p) = nilai p menunjukkan berapa banyak data variable y sebelumnya yang digunakan oleh AutoRegressive

I(d) = nilai d menunjukkan berapa kali data dilakukan differencing hingga stationer

MA(q) = nilai q menunjukkan berapa banyak error yang dilakukan smoothing

Cek data stationer

## Warning in adf.test(.): p-value smaller than printed p-value
## 
##  Augmented Dickey-Fuller Test
## 
## data:  .
## Dickey-Fuller = -4.9862, Lag order = 10, p-value = 0.01
## alternative hypothesis: stationary
  • Hasil dari cek di atas menyatakan bahwa data wikipedia merupakan data stationer dengan p-value < 0.05, sehingga data tidak perlu dilakukan differecing atau dapat diartikan nilai I(d) pada model sebesar nol (0).

Cek PACF

PACF bertujuan untuk melihat seberapa besar korelasi data terhadap lag.

  • Hasil pacf menyatakan bahwa lag pertama memiliki spike tertinggi, diikut dengan lag ke 6. Artinya saya perlu melakukan tuning AR pada model ARIMA.

Auto ARIMA

Model ARIMA juga bisa dibuat dengan cara automatis, yaitu dengan fungsi auto.arima()

## [1] 2053.8
## [1] 0.08235867
  • Kemudian saya akan membandingan nilai AIC dari tiap model yang telah dibuat
## [1] 21230.81
## [1] 21285.32
  • Hasil nya dapat dikatakan bahwa model ARIMA 6,0,10 adalah model yang memiliki nilai AIC paling kecil, namun saya tidak akan menggunakan model ARIMA ini karena nilai AIC yang kecil membuang banyak informasi dari data training. Sehingga saya akan menggunakan model Auto ARIMA yang memiliki AIC lebih besar.

  • Selanjutnya saya akan membandingkan nilai RMSE dari model yang telah dibuat, dan akan dipilih yang terbaik untuk prediksi data

## [1] 2194.183
## [1] 2194.708
## [1] 2195.095
## [1] 2053.8
  • Dari hasil di atas, dapat disimpulkan bahwa model Auto ARIMA yang memiliki nilai RMSE paling kecil, sehingga saya akan menggunakan model ini untuk prediksi data.

Evaluation

Error Checking

Assumption check

Autocol Check

## 
##  Box-Ljung test
## 
## data:  wiki_ina_auto$residuals
## X-squared = 0.24516, df = 1, p-value = 0.6205

Conclusion

Dari hasil evaluasi model yang telah dilakukan, dapat disimpulkan bahwa model Auto Arima merupakan model yang terbaik, dan hasil cek autokol didapat pvalue > 0.5, menandakan tidak ada autokol pada model Auto Arima.