1. Time Series Data in R

Kelas ts mewakili data yang telah diambil sampelnya pada titik waktu yang sama. Frekuensi 7 menunjukkan bahwa deret waktu terdiri dari data mingguan, dan 12 dan 4 digunakan masing-masing untuk deret bulanan dan triwulanan. Contoh di bawah ini menunjukkan konstruksi deret waktu dengan 30 nilai (1 hingga 30).Frequency = 12 dan start=c(2011,3) tentukan bahwa itu adalah seri bulanan mulai dari Maret 2011.

a <- ts(1:30, frequency=12, start=c(2011,3))
print(a)
##      Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec
## 2011           1   2   3   4   5   6   7   8   9  10
## 2012  11  12  13  14  15  16  17  18  19  20  21  22
## 2013  23  24  25  26  27  28  29  30
str(a)
##  Time-Series [1:30] from 2011 to 2014: 1 2 3 4 5 6 7 8 9 10 ...
attributes(a)
## $tsp
## [1] 2011.167 2013.583   12.000
## 
## $class
## [1] "ts"

2. Time Series Decomposition Dekomposisi Deret Waktu adalah menguraikan deret waktu menjadi komponen tren, musiman, siklus, dan tidak teratur. Komponen trend merupakan singkatan dari long term trend, komponen musiman adalah variasi musiman, komponen siklis yang berulang tetapi fluktuasi yang tidak periodik, dan komponen residual adalah komponen yang tidak beraturan.

Serangkaian waktu dari Penumpang Pesawat digunakan di bawah ini sebagai contoh untuk mendemonstrasikan dekomposisi deret waktu. Ini terdiri dari total bulanan penumpang maskapai internasional Box & Jenkins dari tahun 1949 hingga 1960. Ini memiliki nilai 144(=12*12).

plot(AirPassengers)

Fungsi decompose() diterapkan di bawah ini untuk Time Series Penumpang Pesawat untuk memecahnya menjadi berbagai komponen.

menguraikan deret waktu

apts <- ts(AirPassengers, frequency=12)
f <- decompose(apts)

angka musiman

f$figure
##  [1] -24.748737 -36.188131  -2.241162  -8.036616  -4.506313  35.402778
##  [7]  63.830808  62.823232  16.520202 -20.642677 -53.593434 -28.619949
plot(f$figure, type="b", xaxt="n", xlab="")

dapatkan nama 12 bulan dalam kata-kata bahasa Inggris

monthNames <- months(ISOdate(2011,1:12,1))

beri label sumbu x dengan nama bulan las diatur ke 2 untuk orientasi label vertikal

Komponen Musiman

plot(1, at=1:12, labels=monthNames, las=2)
## Warning in plot.window(...): "at" is not a graphical parameter
## Warning in plot.window(...): "labels" is not a graphical parameter
## Warning in plot.xy(xy, type, ...): "at" is not a graphical parameter
## Warning in plot.xy(xy, type, ...): "labels" is not a graphical parameter
## Warning in box(...): "at" is not a graphical parameter
## Warning in box(...): "labels" is not a graphical parameter
## Warning in title(...): "at" is not a graphical parameter
## Warning in title(...): "labels" is not a graphical parameter

Dekomposisi deret waktu aditif

plot(f)

Pada Grafik diatas, grafik pertama adalah deret waktu asli. Yang kedua adalah tren data, yang ketiga menunjukkan faktor musiman, dan grafik terakhir adalah komponen yang tersisa setelah menghilangkan tren dan faktor musiman. Beberapa fungsi lain untuk dekomposisi deret waktu adalah: stl(), terurai(), dan ts()

3. Time Series Forecasting (Peramalan)

Peramalan deret waktu adalah untuk meramalkan peristiwa masa depan berdasarkan data historis. Salah satu contohnya adalah memprediksi harga pembukaan saham berdasarkan kinerja masa lalunya. Dua model populer untuk peramalan deret waktu adalah rata-rata pergerakan autoregresif (ARMA) dan rata-rata pergerakan terintegrasi autoregresif (ARIMA). Berikut adalah contoh untuk menyesuaikan model ARIMA ke deret waktu univariat dan kemudian menggunakannya untuk peramalan.

fit <- arima(AirPassengers, order=c(1,0,0), list(order=c(2,1,0), period=12))
fore <- predict(fit, n.ahead=24)

batas kesalahan pada tingkat kepercayaan 95%

U <- fore$pred +2*fore$se
L <- fore$pred - 2*fore$se

Prakiraan Deret Waktu

ts.plot(AirPassengers, fore$pred, U, L, col=c(1,2,4,4), lty=c(1,1,2,2))
legend("topleft", c("Actual", "Forecast", "Error Bounds(95% Confidence)"), col=c(1,2,4), lty=c(1,1,2))

Pada Gambar diatas, garis merah solid menunjukkan nilai perkiraan, dan garis putus-putus biru adalah batas kesalahan pada tingkat kepercayaan 95%.

4. Time Series Clustering (Pengelompokan)

Pengelompokan deret waktu adalah mempartisi data deret waktu ke dalam kelompok-kelompok berdasarkan kesamaan atau jarak, sehingga deret waktu dalam klaster yang sama memiliki kemiripan satu sama lain. Ada berbagai ukuran jarak atau ketidaksamaan, seperti jarak Euclidean, jarak Manhattan,norma Maksimum, jarak Hamming, sudut antara dua vektor (perkalian dalam), dan jarak Dynamic Time Warping (DTW).

4.1 Dynamic Time Warpings

Dynamic Time Warping (DTW) menemukan keselarasan optimal antara dua deret waktu dan implementasinya dalam R adalah paket dtw. Dalam paket itu, fungsi dtw(x,y,…) menghitung warp waktu dinamis dan menemukan keselarasan optimal antara dua deret waktu x dan y, dan dtwDist(mx, my=mx, …) or dist(mx, my=mx, method=“DTW”, …) menghitung jarak antara deret waktu mx dan my.

library(dtw)
## Loading required package: proxy
## 
## Attaching package: 'proxy'
## The following objects are masked from 'package:stats':
## 
##     as.dist, dist
## The following object is masked from 'package:base':
## 
##     as.matrix
## Loaded dtw v1.22-3. See ?dtw for help, citation("dtw") for use in publication.
idx <- seq(0, 2*pi, len=100)
a <- sin(idx) + runif(100)/10
b <- cos(idx)
align <- dtw(a, b, step=asymmetricP1, keep=T)

Alignment dengan Dynamic Time Warping

dtwPlotTwoWay(align)

4.2 Data Deret Waktu Bagan Kontrol Sintetis

Rangkaian waktu bagan kontrol sintetis 1 digunakan dalam contoh di bagian berikut. Dataset berisi600 contoh diagram kendali y ang dihasilkan secara sintetis oleh proses dalam Alcock dan Manolopoulos (1999). Setiap peta kendali adalah deret waktu dengan 60 nilai, dan ada enam kelas:

Pertama, data dibaca ke dalam R dengan read.table(). Parameter sep diatur ke "" (tidak ada spasi di antara tanda kutip ganda), yang digunakan bila pemisahnya adalah spasi putih, yaitu, satu atau beberapa spasi, tab, baris baru, atau carriage return.

tampilkan satu sampel dari setiap kelas

 idx <- c(1,101,201,301,401,501)
 sample1 <- t(sc[idx,])

Enam Kelas dalam Rangkaian Waktu Bagan Kontrol Sintetis

plot.ts(sample1, main="")

4.3 Pengelompokan Hirarki dengan Jarak Euclidean

Pada awalnya, memilih 10 kasus secara acak dari setiap kelas. Jika tidak, akan ada terlalu banyak kasus dan plot pengelompokan hierarkis akan terlalu ramai.

set.seed(6218)
n <- 10
s <- sample(1:100, n)
idx <- c(s, 100+s, 200+s, 300+s, 400+s, 500+s)
sample2 <- sc[idx,]
observedLabels <- rep(1:6, each=n)

pengelompokan hierarkis dengan jarak Euclidean

hc <- hclust(dist(sample2), method="average")
plot(hc, labels=observedLabels, main="")

cut tree untuk mendapatkan 6 cluster

Pengelompokan Hirarki dengan Jarak Euclidean

memb <- cutree(hc, k=6)
table(observedLabels, memb)
##               memb
## observedLabels  1  2  3  4  5  6
##              1 10  0  0  0  0  0
##              2  0  3  2  5  0  0
##              3  1  0  0  0  9  0
##              4  0  0  0  0  0 10
##              5  6  0  0  0  4  0
##              6  0  0  0  0  0 10

Hasil klasterisasi pada Gambar diatas menunjukkan bahwa, tren naik (kelas 3) dan pergeseran ke atas (kelas 5) tidak terpisah dengan baik, dan tren penurunan (kelas 4) dan pergeseran ke bawah (kelas 6) juga bercampur.

4.3 Pengelompokan Hirarki dengan Jarak DTW

library(dtw)
distMatrix <- dist(sample2, method="DTW")
hc <- hclust(distMatrix, method="average")
plot(hc, labels=observedLabels, main="")

cut tree untuk mendapatkan 6 cluster Pengelompokan Hirarki dengan Jarak DTW

#rect.hclust(hc, k=6)
memb <- cutree(hc, k=6)
table(observedLabels, memb)
##               memb
## observedLabels  1  2  3  4  5  6
##              1 10  0  0  0  0  0
##              2  0  3  2  5  0  0
##              3  0  0  0  0 10  0
##              4  0  0  0  0  0 10
##              5  5  0  0  0  5  0
##              6  0  0  0  0  0 10

Dengan membandingkan Gambar hasil Pengelompokan Hirarki dengan Jarak DTW dan Gambar hasil Pengelompokan Hirarki dengan Jarak Euclidean, kita dapat melihat bahwa jarak DTW lebih baik daripada jarak Euclidean untuk mengukur kesamaan antara deret waktu.

Daftar pustaka

Zhao, Yanchang. (2012). R and Data Mining: Examples and Case Studies.