0% found this document useful (0 votes)
207 views18 pages

ARIMA Modelling Notes PDF

The document is an introduction to time series forecasting using ARIMA models in R. It discusses preparing time series data, identifying patterns like trends and seasonality, differencing to achieve stationarity, and using autocorrelation functions to identify the AR and MA components to select an appropriate ARIMA model for forecasting. Code examples are provided to illustrate applying these steps to a dataset of daily bicycle counts, including data cleaning, differencing, model identification, and forecasting.

Uploaded by

Francis Mtambo
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
207 views18 pages

ARIMA Modelling Notes PDF

The document is an introduction to time series forecasting using ARIMA models in R. It discusses preparing time series data, identifying patterns like trends and seasonality, differencing to achieve stationarity, and using autocorrelation functions to identify the AR and MA components to select an appropriate ARIMA model for forecasting. Code examples are provided to illustrate applying these steps to a dataset of daily bicycle counts, including data cleaning, differencing, model identification, and forecasting.

Uploaded by

Francis Mtambo
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 18

Introduction to Forecasting with ARIMA in R https://www.datascience.com/blog/introduction-to-forecasting-with-arim...

1 of 32 1/27/2019, 4:35 PM
Introduction to Forecasting with ARIMA in R https://www.datascience.com/blog/introduction-to-forecasting-with-arim...

forecast tseries ggplot2.

2 of 32 1/27/2019, 4:35 PM
Introduction to Forecasting with ARIMA in R https://www.datascience.com/blog/introduction-to-forecasting-with-arim...

tsclean()

3 of 32 1/27/2019, 4:35 PM
Introduction to Forecasting with ARIMA in R https://www.datascience.com/blog/introduction-to-forecasting-with-arim...

decompose() stl()

adf.test()

4 of 32 1/27/2019, 4:35 PM
Introduction to Forecasting with ARIMA in R https://www.datascience.com/blog/introduction-to-forecasting-with-arim...

(p, d, q)

Y
p

φ1 φ 2

d I(d)

et q

yd Y d c

5 of 32 1/27/2019, 4:35 PM
Introduction to Forecasting with ARIMA in R https://www.datascience.com/blog/introduction-to-forecasting-with-arim...

(p, d, q)

1 library('ggplot2')
2 library('forecast')
3 library('tseries')
4
5 daily_data = read.csv('day.csv', header=TRUE, stringsAsFactors=FALSE)

6 of 32 1/27/2019, 4:35 PM
Introduction to Forecasting with ARIMA in R https://www.datascience.com/blog/introduction-to-forecasting-with-arim...

1 daily_data$Date = as.Date(daily_data$dteday)
2
3 ggplot(daily_data, aes(Date, cnt)) + geom_line() + scale_x_date('month'
4 xlab("")

7 of 32 1/27/2019, 4:35 PM
Introduction to Forecasting with ARIMA in R https://www.datascience.com/blog/introduction-to-forecasting-with-arim...

1 count_ts = ts(daily_data[, c('cnt')])


2
3 daily_data$clean_cnt = tsclean(count_ts)
4
5 ggplot() +
6 geom_line(data = daily_data, aes(x = Date, y = clean_cnt)) + ylab('Cleaned Bicy

8 of 32 1/27/2019, 4:35 PM
Introduction to Forecasting with ARIMA in R https://www.datascience.com/blog/introduction-to-forecasting-with-arim...

m
Y k

m = 2k + 1

M
A(q) M A(q)

1 daily_data$cnt_ma = ma(daily_data$clean_cnt, order=7) # using the clean count


2 daily_data$cnt_ma30 = ma(daily_data$clean_cnt, order=30)
3
4
5 ggplot() +
6 geom_line(data = daily_data, aes(x = Date, y = clean_cnt, colour = "Counts"
7 geom_line(data = daily_data, aes(x = Date, y = cnt_ma, colour = "Weekly Movin
8 geom_line(data = daily_data, aes(x = Date, y = cnt_ma30, colour = "Monthly Movi
9 ylab('Bicycle Count')

9 of 32 1/27/2019, 4:35 PM
Introduction to Forecasting with ARIMA in R https://www.datascience.com/blog/introduction-to-forecasting-with-arim...

10 of 32 1/27/2019, 4:35 PM
Introduction to Forecasting with ARIMA in R https://www.datascience.com/blog/introduction-to-forecasting-with-arim...

St T E

11 of 32 1/27/2019, 4:35 PM
Introduction to Forecasting with ARIMA in R https://www.datascience.com/blog/introduction-to-forecasting-with-arim...

(P, D, Q)

stl()

1 count_ma = ts(na.omit(daily_data$cnt_ma), frequency=30)


2 decomp = stl(count_ma, s.window="periodic")
3 deseasonal_cnt <- seasadj(decomp)
4 plot(decomp)

stl()
allow.multiplicative.trend=TRUE

seasadj()
forecast

ts()

12 of 32 1/27/2019, 4:35 PM
Introduction to Forecasting with ARIMA in R https://www.datascience.com/blog/introduction-to-forecasting-with-arim...

13 of 32 1/27/2019, 4:35 PM
Introduction to Forecasting with ARIMA in R https://www.datascience.com/blog/introduction-to-forecasting-with-arim...

14 of 32 1/27/2019, 4:35 PM
Introduction to Forecasting with ARIMA in R https://www.datascience.com/blog/introduction-to-forecasting-with-arim...

1 adf.test(count_ma, alternative = "stationary")


2
3 Augmented Dickey-Fuller Test
4
5 data: count_ma
6 Dickey-Fuller = -0.2557, Lag order = 8, p-value = 0.99
7 alternative hypothesis: stationary

(d = 2)

15 of 32 1/27/2019, 4:35 PM
Introduction to Forecasting with ARIMA in R https://www.datascience.com/blog/introduction-to-forecasting-with-arim...

M A (q)

AR(p)

16 of 32 1/27/2019, 4:35 PM
Introduction to Forecasting with ARIMA in R https://www.datascience.com/blog/introduction-to-forecasting-with-arim...

1 Acf(count_ma, main='')
2
3 Pacf(count_ma, main='')

d=1

17 of 32 1/27/2019, 4:35 PM
Introduction to Forecasting with ARIMA in R https://www.datascience.com/blog/introduction-to-forecasting-with-arim...

1 count_d1 = diff(deseasonal_cnt, differences = 1)


2 plot(count_d1)
3 adf.test(count_d1, alternative = "stationary")
4
5 Augmented Dickey-Fuller Test
6
7 data: count_d1
8 Dickey-Fuller = -9.9255, Lag order = 8, p-value = 0.01
9 alternative hypothesis: stationary

p q

1 Acf(count_d1, main='ACF for Differenced Series')


2 Pacf(count_d1, main='PACF for Differenced Series')

18 of 32 1/27/2019, 4:35 PM

You might also like