Description
Objectives of the lab
1. Examine how smoothing can be used to estimate trend and seasonal effects in time
series.
2. Investigate sample autocorrelation plots for several time series with the aim to
appreciate how features of an observed time series translate into the properties of
its sample acf.
Instructions
This lab must be completed in R Markdown. You can use the template provided in lab 1.
Please create a pdf file (via ’knit to pdf’) or html file and use it as your lab submission.
Useful R commands for time series analysis
• acf()
• rollmean()
• decompose()
• stl()
1. The dataset “dataTempPG.csv” contains the annual mean of homogenized daily
minimum temperatures at Prince George, BC, over the period from 1919 to 2008.
(a) (Features of the data)
• Read the data into R using read.csv().
• The column labelled “Annual” includes the yearly mean minimum temperatures. Extract those data, and coerce them into a time series object
in R, suitably specifying arguments to function ts().
• Plot the time series, remembering to label the plot and axes using arguments main, xlab, ylab).
• Comment on main features of this series (e.g., seasonality, trend)
(b) (Sample Autocorrelation) Use command acf() to create the autocorrelation function for the annual mean minimum temperature data. Comment on
the behaviour of the sample acf as a function of the lag.
(c) (Smoothing)
• Using command window(), extract the portion of the time series between
years 1968 and 2008. Plot this recent record of the data.
• The function rollmean() allows you to compute rolling mean or moving
average of a given order k (just as was done in the in-class activity #1).
Setting the moving average parameter to k = 5, add the smoothed series to
the plot of the temperature data (use function lines()). Add the legend
to your plot using function legend().
Suggestions: You can define a new variable, say ma5 <- rollmean(dat,k=5)
and then use lines(ma5). Use the argument col=”red” to distinguish the
smoothed series from the original one. Alternatively, you can combine the
two steps into one command lines(rollmean(dat, k=5),col=2).
2. Recall the dataset “LakeLevels.csv” containing the daily depths (in meters) of a
lake from 2007 to 2011, inclusive. Read the data into R and coerce it into a time
series object using command ts().
(a) Use command acf() to create the sample autocorrelation function for this time
series and comment on its behaviour.
(b) The function decompose() can be used to decompose a time series into trend,
seasonal component and an error term using moving average processes. It can
handle both an additive and multiplicative models. Plot the trend, seasonal
component and error for the lake level data assuming the additive seasonal
decomposition model.
Suggestions: You can achieve this in one step combining the two functions:
plot(decompose(dat, type=”additive”)). Alternatively, you can first save
the decomposition component into one variable:
dat.decom <- decompose(dat, type=”additive”) and then create a plot:
plot(dat.decom).
The individual decomposition components can be extracted as follows:
trend <- dat.decom$trend # this is the same as rollmean(level,
k=365)
seas <- dat.decom$seasonal # simple seasonal effect estimation
using averaging
error <- dat.decom$random # the remaining term
(c) An alternative method to perform the trend and seasonal effect decomposition
is via a method called loess smoothing. The method is implemented in function
stl(). Set the argument s.window to “periodic”. Plot the trend, seasonal
component and error using the loess method.
Further notes: To extract the individual decomposition components, a slightly
different approach has to be used. Below is a sample code for your reference
only.
lev.stl <- stl(dat, s.window=”periodic”)
trend <- dat.stl$time.series[,”trend”]
seas <- dat.stl$time.series[,”seasonal”]
error <- dat.stl$time.series[,”remainder”]