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
- Decomposing Non-Seasonal Data dengan menggunakan teknik smoothing seperti Simple Moving Average
- 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 dihasilkan dari rerata ke 5 data sebelumnya
data_series_sma <- SMA(data_series,n=5) plot(data_series_sma) print(data_series_sma)
hasilnya bisa kalian lihat bahwa data ke sampai dengan 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.