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.