0% found this document useful (0 votes)
99 views

RDataMining Slides Time Series Analysis PDF

The document discusses time series analysis techniques in R, including decomposition, forecasting, clustering and classification. It covers decomposing a time series into trend, seasonal and irregular components. For forecasting, it demonstrates building an ARIMA model and making predictions. For clustering, it describes measures like DTW distance and performs hierarchical clustering on synthetic control chart data.

Uploaded by

Md Rezaul Karim
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
99 views

RDataMining Slides Time Series Analysis PDF

The document discusses time series analysis techniques in R, including decomposition, forecasting, clustering and classification. It covers decomposing a time series into trend, seasonal and irregular components. For forecasting, it demonstrates building an ARIMA model and making predictions. For clustering, it describes measures like DTW distance and performs hierarchical clustering on synthetic control chart data.

Uploaded by

Md Rezaul Karim
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 41

Time Series Analysis with R

Yanchang Zhao
http://www.RDataMining.com

R and Data Mining Course


Beijing University of Posts and Telecommunications,
Beijing, China

July 2019

1 / 40
Contents

Introduction

Time Series Decomposition

Time Series Forecasting

Time Series Clustering

Time Series Classification

Online Resources

2 / 40

Time Series Analysis with R

I time series data in R


I time series decomposition, forecasting, clustering and
classification
I autoregressive integrated moving average (ARIMA) model
I Dynamic Time Warping (DTW)
I Discrete Wavelet Transform (DWT)
I k-NN classification


Chapter 8: Time Series Analysis and Mining, in book
R and Data Mining: Examples and Case Studies.
http://www.rdatamining.com/docs/RDataMining-book.pdf
3 / 40
Time Series Data in R

I class ts
I represents data which has been sampled at equispaced points
in time
I frequency=7: a weekly series
I frequency=12: a monthly series
I frequency=4: a quarterly series

4 / 40
Time Series Data in R

## an example of time series data


a <- ts(1:20, 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

str(a)
## Time-Series [1:20] from 2011 to 2013: 1 2 3 4 5 6 7 8 9 10...

attributes(a)
## $tsp
## [1] 2011.167 2012.750 12.000
##
## $class
## [1] "ts"

5 / 40
Contents

Introduction

Time Series Decomposition

Time Series Forecasting

Time Series Clustering

Time Series Classification

Online Resources

6 / 40
What is Time Series Decomposition

To decompose a time series into


components [Brockwell and Davis, 2016]:
I Trend component: long term trend
I Seasonal component: seasonal variation
I Cyclical component: repeated but non-periodic fluctuations
I Irregular component: the residuals

7 / 40
Data AirPassengers
Data AirPassengers: monthly totals of Box Jenkins international
airline passengers, 1949 to 1960. It has 144(=12×12) values.
## load time series data
plot(AirPassengers)
600
500
AirPassengers

400
300
200
100

1950 1952 1954 1956 1958 1960


8 / 40
Decomposition
## time series decomposation
apts <- ts(AirPassengers, frequency = 12)
f <- decompose(apts)
plot(f$figure, type = "b") # seasonal figures
60
40
20
f$figure

0
−20
−40

2 4 6 8 10 12
9 / 40
Decomposition
plot(f)

Decomposition of additive time series

500
observed
300
450100
350
trend
250
20 40 60 150
seasonal
0
60 −40
40
random
20
0
−40

2 4 6 8 10 12

Time 10 / 40
Contents

Introduction

Time Series Decomposition

Time Series Forecasting

Time Series Clustering

Time Series Classification

Online Resources

11 / 40
Time Series Forecasting

I To forecast future events based on known past data


I For example, to predict the price of a stock based on its past
performance
I Popular models
I Autoregressive moving average (ARMA)
I Autoregressive integrated moving average (ARIMA)

12 / 40
Forecasting

## build an ARIMA model


fit <- arima(AirPassengers, order=c(1,0,0),
list(order=c(2,1,0), period=12))
## make forecast
fore <- predict(fit, n.ahead=24)
## error bounds at 95% confidence level
upper.bound <- fore$pred + 2*fore$se
lower.bound <- fore$pred - 2*fore$se

## plot forecast results


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

13 / 40
Forecasting

700 Actual
Forecast
Error Bounds (95% Confidence)
600
500
400
300
200
100

1950 1952 1954 1956 1958 1960 1962

Time

14 / 40
Contents

Introduction

Time Series Decomposition

Time Series Forecasting

Time Series Clustering

Time Series Classification

Online Resources

15 / 40
Time Series Clustering

I To partition time series data into groups based on similarity or


distance, so that time series in the same cluster are similar
I Measure of distance/dissimilarity
I Euclidean distance
I Manhattan distance
I Maximum norm
I Hamming distance
I The angle between two vectors (inner product)
I Dynamic Time Warping (DTW) distance
I ...

16 / 40
Dynamic Time Warping (DTW)
DTW finds optimal alignment between two time
series [Keogh and Pazzani, 2001].
## Dynamic Time Warping (DTW)
library(dtw)
idx <- seq(0, 2 * pi, len = 100)
a <- sin(idx) + runif(100)/10
b <- cos(idx)
align <- dtw(a, b, step = asymmetricP1, keep = T)
dtwPlotTwoWay(align)
1.0
0.5
Query value

0.0
−0.5
−1.0

0 20 40 60 80 100 17 / 40
Synthetic Control Chart Time Series

I The dataset contains 600 examples of control charts


synthetically generated by the process in Alcock and
Manolopoulos (1999).
I Each control chart is a time series with 60 values.
I Six classes:
I 1-100 Normal
I 101-200 Cyclic
I 201-300 Increasing trend
I 301-400 Decreasing trend
I 401-500 Upward shift
I 501-600 Downward shift
I http://kdd.ics.uci.edu/databases/synthetic_control/synthetic_
control.html

18 / 40
Synthetic Control Chart Time Series

# read data into R


# sep="": the separator is white space, i.e., one
# or more spaces, tabs, newlines or carriage returns
sc <- read.table("../data/synthetic_control.data", header=F, sep="")
# show one sample from each class
idx <- c(1, 101, 201, 301, 401, 501)
sample1 <- t(sc[idx,])
plot.ts(sample1, main="")

19 / 40
201 101 1
25 30 35 40 45 15 20 25 30 35 40 45 24 26 28 30 32 34 36

0
Six Classes

10
20
30

Time
40
50
60
501 401 301
10 15 20 25 30 35 25 30 35 40 45 0 10 20 30

0
10
20
30

Time
40
50
60

20 / 40
Hierarchical Clustering with Euclidean distance

# sample n cases from every class


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)
## hierarchical clustering with Euclidean distance
hc <- hclust(dist(sample2), method = "ave")
plot(hc, labels = observedLabels, main = "")

21 / 40
Hierarchical Clustering with Euclidean distance

140
120
100
Height

80
60

2
2
5
6
6
40

2
2
4

2
2
6

2
2
5
6
6
6
4

5
5

2
2
5
5
6
6

5
5
3

1
4
20

4
4

3
4
4

3
3

1
5
5
3
3
3
3
4
4

1
6
6

1
3
3

1
1
1
1
1
1
dist(sample2)
hclust (*, "average")

22 / 40
Hierarchical Clustering with Euclidean distance

# cut tree to get 8 clusters


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

23 / 40
Hierarchical Clustering with DTW Distance

# hierarchical clustering with DTW distance


myDist <- dist(sample2, method = "DTW")
hc <- hclust(myDist, method = "average")
plot(hc, labels = observedLabels, main = "")
# cut tree to get 8 clusters
memb <- cutree(hc, k = 8)
table(observedLabels, memb)
## memb
## observedLabels 1 2 3 4 5 6 7 8
## 1 10 0 0 0 0 0 0 0
## 2 0 4 3 2 1 0 0 0
## 3 0 0 0 0 0 6 4 0
## 4 0 0 0 0 0 0 0 10
## 5 0 0 0 0 0 0 10 0
## 6 0 0 0 0 0 0 0 10

24 / 40
Height

0 200 400 600 800 1000

3
3
3
3
3
3
5
5
3
3
3
3
5
5
5
5
5
5
5
5
6
6
6
4
6
4
4
4
4
4
4
4

myDist
4
4
6
6
6
6
hclust (*, "average") 6
6
1
1
1
1
1
1
1
1
1
1
2
Hierarchical Clustering with DTW Distance

2
2
2
2
2
2
2
2
2
25 / 40
Contents

Introduction

Time Series Decomposition

Time Series Forecasting

Time Series Clustering

Time Series Classification

Online Resources

26 / 40
Time Series Classification

Time Series Classification


I To build a classification model based on labelled time series
I and then use the model to predict the lable of unlabelled time
series
Feature Extraction
I Singular Value Decomposition (SVD)
I Discrete Fourier Transform (DFT)
I Discrete Wavelet Transform (DWT)
I Piecewise Aggregate Approximation (PAA)
I Perpetually Important Points (PIP)
I Piecewise Linear Representation
I Symbolic Representation

27 / 40
Decision Tree (ctree)

ctree from package party

## build a decision tree


classId <- rep(as.character(1:6), each = 100)
newSc <- data.frame(cbind(classId, sc))
library(party)
ct <- ctree(classId ~ ., data = newSc,
controls = ctree_control(minsplit = 20,
minbucket = 5, maxdepth = 5))

28 / 40
Decision Tree

pClassId <- predict(ct)


table(classId, pClassId)
## pClassId
## classId 1 2 3 4 5 6
## 1 100 0 0 0 0 0
## 2 1 97 2 0 0 0
## 3 0 0 99 0 1 0
## 4 0 0 0 100 0 0
## 5 4 0 8 0 88 0
## 6 0 3 0 90 0 7

# accuracy
(sum(classId == pClassId))/nrow(sc)
## [1] 0.8183333

29 / 40
DWT (Discrete Wavelet Transform)
I Wavelet transform provides a multi-resolution representation
using wavelets [Burrus et al., 1998].
I Haar Wavelet Transform – the simplest DWT
http://dmr.ath.cx/gfx/haar/

I DFT (Discrete Fourier Transform): another popular feature


extraction technique

30 / 40
DWT (Discrete Wavelet Transform)

# extract DWT (with Haar filter) coefficients


library(wavelets)
wtData <- NULL
for (i in 1:nrow(sc)) {
a <- t(sc[i, ])
wt <- dwt(a, filter = "haar", boundary = "periodic")
wtData <- rbind(wtData, unlist(c(wt@W, wt@V[[wt@level]])))
}
wtData <- as.data.frame(wtData)
wtSc <- data.frame(cbind(classId, wtData))

31 / 40
Decision Tree with DWT

## build a decision tree


ct <- ctree(classId ~ ., data = wtSc,
controls = ctree_control(minsplit=20, minbucket=5,
maxdepth=5))
pClassId <- predict(ct)
table(classId, pClassId)
## pClassId
## classId 1 2 3 4 5 6
## 1 98 2 0 0 0 0
## 2 1 99 0 0 0 0
## 3 0 0 81 0 19 0
## 4 0 0 0 74 0 26
## 5 0 0 16 0 84 0
## 6 0 0 0 3 0 97

(sum(classId==pClassId)) / nrow(wtSc)
## [1] 0.8883333

32 / 40
plot(ct, ip_args = list(pval = F), ep_args = list(digits = 0))

1
V57

≤ 117 > 117


2 9
W43 V57

≤ −4 > −4 ≤ 140 > 140


3 6 11
W5 W31 V57

≤ 178 > 178


12 17
W22 W31

≤ −8 > −8 ≤ −6 > −6 ≤ −6 > −6 ≤ −15 > −15


14 19
W31 W43

≤ −13 > −13 ≤3 >3

Node 4 (n = 68) Node 5 (n = 6) Node 7 (n = 9) Node 8 (n = 86) Node 10 (n = 31) Node 13 (n = 80) Node 15 (n = 9) Node 16 (n = 99) Node 18 (n = 12) Node 20 (n = 103) Node 21 (n = 97)
1 1 1 1 1 1 1 1 1 1 1
0.8 0.8 0.8 0.8 0.8 0.8 0.8 0.8 0.8 0.8 0.8
0.6 0.6 0.6 0.6 0.6 0.6 0.6 0.6 0.6 0.6 0.6
0.4 0.4 0.4 0.4 0.4 0.4 0.4 0.4 0.4 0.4 0.4
0.2 0.2 0.2 0.2 0.2 0.2 0.2 0.2 0.2 0.2 0.2
0 0 0 0 0 0 0 0 0 0 0
123456 123456 123456 123456 123456 123456 123456 123456 123456 123456 123456

33 / 40
k-NN Classification

I find the k nearest neighbours of a new instance


I label it by majority voting
I needs an efficient indexing structure for large datasets

## k-NN classification
k <- 20
newTS <- sc[501, ] + runif(100) * 15
distances <- dist(newTS, sc, method = "DTW")
s <- sort(as.vector(distances), index.return = TRUE)
# class IDs of k nearest neighbours
table(classId[s$ix[1:k]])
##
## 4 6
## 3 17

34 / 40
k-NN Classification

I find the k nearest neighbours of a new instance


I label it by majority voting
I needs an efficient indexing structure for large datasets

## k-NN classification
k <- 20
newTS <- sc[501, ] + runif(100) * 15
distances <- dist(newTS, sc, method = "DTW")
s <- sort(as.vector(distances), index.return = TRUE)
# class IDs of k nearest neighbours
table(classId[s$ix[1:k]])
##
## 4 6
## 3 17

Results of majority voting: class 6

34 / 40
The TSclust Package

I TSclust: a package for time seriesclustering †


I measures of dissimilarity between time series to perform time
series clustering.
I metrics based on raw data, on generating models and on the
forecast behavior
I time series clustering algorithms and cluster evaluation metrics


http://cran.r-project.org/web/packages/TSclust/
35 / 40
Contents

Introduction

Time Series Decomposition

Time Series Forecasting

Time Series Clustering

Time Series Classification

Online Resources

36 / 40
Online Resources

I Book titled R and Data Mining: Examples and Case


Studies [Zhao, 2012]
http://www.rdatamining.com/docs/RDataMining-book.pdf
I R Reference Card for Data Mining
http://www.rdatamining.com/docs/RDataMining-reference-card.pdf
I Free online courses and documents
http://www.rdatamining.com/resources/
I RDataMining Group on LinkedIn (27,000+ members)
http://group.rdatamining.com
I Twitter (3,300+ followers)
@RDataMining

37 / 40
The End

Thanks!
Email: yanchang(at)RDataMining.com
Twitter: @RDataMining
38 / 40
How to Cite This Work

I Citation
Yanchang Zhao. R and Data Mining: Examples and Case Studies. ISBN
978-0-12-396963-7, December 2012. Academic Press, Elsevier. 256
pages. URL: http://www.rdatamining.com/docs/RDataMining-book.pdf.
I BibTex
@BOOK{Zhao2012R,
title = {R and Data Mining: Examples and Case Studies},
publisher = {Academic Press, Elsevier},
year = {2012},
author = {Yanchang Zhao},
pages = {256},
month = {December},
isbn = {978-0-123-96963-7},
keywords = {R, data mining},
url = {http://www.rdatamining.com/docs/RDataMining-book.pdf}
}

39 / 40
References I

Brockwell, P. J. and Davis, R. A. (2016).


Introduction to Time Series and Forecasting, ISBN 9783319298528.
Springer.

Burrus, C. S., Gopinath, R. A., and Guo, H. (1998).


Introduction to Wavelets and Wavelet Transforms: A Primer.
Prentice-Hall, Inc.

Keogh, E. J. and Pazzani, M. J. (2001).


Derivative dynamic time warping.
In the 1st SIAM Int. Conf. on Data Mining (SDM-2001), Chicago, IL, USA.

Zhao, Y. (2012).
R and Data Mining: Examples and Case Studies, ISBN 978-0-12-396963-7.
Academic Press, Elsevier.

40 / 40

You might also like