Belajar R – Dekomposisi Deret Waktu

By | January 14, 2021
Print Friendly, PDF & Email
1,977 Views

Sesi ini adalah lanjutan dari pembahasan peramalan deret waktu / forecasting time series yang sedikit terlewat yaitu topik dekomposisi deret waktu artinya  mengurai deret waktu dengan tujuan memisahkannya ke dalam komponen-komponen penyusunnya seperti pola trend, seasonal dan random. Dekomposisi Deret Waktu atau Decomposing Time Series dibagi menjadi 2 pendekatan yaitu

  1. Decomposing Non-Seasonal Data dengan menggunakan teknik smoothing seperti Simple Moving Average
  2. Decomposing Seasonal Data dengan memisahkan menjadi 3 komponen pembentuknya yaitu trend, seasonal, random maka bisa dijelaskan menggunakan model aditif yang berarti bahwa model tersebut tercampur saling menambahkan untuk menjadi model yang utuh.

Decomposing Non-Seasonal Data

Time Series Non-Seasonal mempunyai komponen pola trend dan random dengan tujuan mendekomposisi / mengurai terhadap komponen dasarnya pola trend dan random dengan cara metode smoothing. Teknik yang digunakan decomposing non-seasonal data yaitu menghitung rata-rata bergerak sederhana atau lebih dikenal simple moving average/SMA. Untuk menghitung SMA, kalian bisa menggunakan package TTR. Package TTR  merupakan package dasar untuk menangani Time Series. jangan lupa untuk install package di R terlebih dahulu dengan perintah yang bisa kalian tulis menggunakan RStudio

install.packages('TTR')

Dataset Non-Seasonal Data

Dataset yang digunakan untuk mencoba decomposing non-seasonal data yaitu http://robjhyndman.com/tsdldata/misc/kings.dat  berisi data tentang usia kematian raja-raja Inggris yang berurutan, dimulai dengan William the Conqueror (sumber asli: Hipel dan Mcleod, 1994). Download saja dan simpan dengan nama kings.dat. Perintah berikut untuk loading package fpp – forecasting time series dan TTR

library(fpp)
library(TTR)

king <-read.csv('dataset/kings.dat')
data_series <- ts(king) #tanpa perlu argument tambahan

plot(data_series)
print(data_series)

hasil

Time Series:
Start = 1 
End = 41 
Frequency = 1 
      X60
 [1,]  43
 [2,]  67
 [3,]  50
 [4,]  56
 [5,]  42
 [6,]  50
 [7,]  65
 [8,]  68
 [9,]  43
[10,]  65
[11,]  34
[12,]  47
[13,]  34
[14,]  49
[15,]  41
[16,]  13
[17,]  35
[18,]  53
[19,]  56
[20,]  16
[21,]  43
[22,]  69
[23,]  59
[24,]  48
[25,]  59
[26,]  86
[27,]  55
[28,]  68
[29,]  51
[30,]  33
[31,]  49
[32,]  67
[33,]  77
[34,]  81
[35,]  67
[36,]  71
[37,]  81
[38,]  68
[39,]  70
[40,]  77
[41,]  56

Kita bisa melihat bahwa time series dari usia kematian ke 41 raja berturut-turut di Inggris bersifat  Non-Seasonal Data. Langkah selanjutnya yaitu memperhalus data tersebut menggunakan SMA (simple moving average) dengan n = 5 yang artinya prediksi \hat x_5 dihasilkan dari rerata ke 5 data sebelumnya

    \[\hat x_5 = \frac{x_1+x_2+x_3+x_4+x_5}{5}\]

data_series_sma <- SMA(data_series,n=5)
plot(data_series_sma)
print(data_series_sma)

hasilnya bisa kalian lihat bahwa data ke x_1 sampai dengan x_4 akan diberikan NA / Not A Number

Time Series:
Start = 1 
End = 41 
Frequency = 1 
 [1]   NA   NA   NA   NA 51.6 53.0 52.6 56.2 53.6 58.2 55.0 51.4 44.6 45.8 41.0 36.8 34.4 38.2 39.6
[20] 34.6 40.6 47.4 48.6 47.0 55.6 64.2 61.4 63.2 63.8 58.6 51.2 53.6 55.4 61.4 68.2 72.6 75.4 73.6
[39] 71.4 73.4 70.4

Non-sesaonal data menjadi lebih jelas yaitu terdapat pola trend pada usia kematian raja-raja Inggris tampaknya telah menurun dari sekitar 55 tahun menjadi sekitar 38 tahun pada masa awal pemerintahan (20 raja pertama) kemudian meningkat setelah itu menjadi sekitar 73 tahun pada akhir masa pemerintahan raja ke-40 dalam deret waktu sehingga decomposing non-seasonal data dengan teknik smoothing berguna untuk menghilangkan gerigi grafik menjadi lebih halus / smooth.

Decomposing Seasonal Data

Decomposing Sesaonal data menggunakan dataset pada tutorialnya sebelumnya yaitu data penumpang pesawat https://softscients.com/2020/04/23/metode-peralaman-deret-waktu-forecasting-time-series/. Untuk memperkirakan komponen trend dan komponen seasonal dari sebuah deret waktu seasonal, kita hanya perlu memanggil sebuah function decompose() yang akan mengembalikan sebuah perkiraan pola trend, seasonal, dan random

library(fpp)
library(dplyr)

penumpang <-read.csv('dataset/International_Report_Passengers.csv')

data_bulan_tahun <- penumpang %>% select(Month,Year,Total) %>% group_by(Month,Year) %>% summarise(total_sales=sum(Total))
head(data_bulan_tahun,10)

data_sorting<-arrange(select(data_bulan_tahun,Month,Year,total_sales),Year)
print(data_sorting)



data_series = ts(data_sorting$total_sales,start=c(1990, 1),end=c(2019, 6), frequency=12)
#plot(data_series)

data_series_decompose <- decompose(data_series)
plot(data_series_decompose)

Kalian bisa melihat dengan jelas bahwa pola asli dapat diurai menjadi pola trend, seasonal, dan random seperti dibawah ini

secara trend menunjukan kenaikan secara jangka panjang namun juga mempunyai pola musiman yang berulang. Nah dekomposisi deret waktu / decomposing time series berguna untuk mendapatkan gambaran awal mengenai data time series secara umum melalui perspekfif yang berbeda. dekomposisi deret waktu / decomposing time series akan terasa lebih mudah menggunakan bahasa R terutama pengolahan dataset untuk operasi cleaning dan filtering alih-alih kalian menggunakan excel.

Leave a Reply

Your email address will not be published.




Enter Captcha Here :