Topic 7 | Lab Exercises: Holt-Wiinters Method for Trend and Seasonality
1
MS924D Spreadsheet Modelling & Demand Forecasting
Lab Exercises:
Holt-Winters Method for Trend and Seasonality
The exercises on this sheet allow you to extend you suite of exponential smoothing
methods to include both trend and seasonal data patterns. First we shall set up a basic
static model where the parameters are estimated from past data to provide projected
forecasts. Second we shall show how an updating mechanism can be built in to the
model so that the parameter estimates can be revised as they learn from the data.
Details about the new modelling methods are described in the relevant parts of the
exercise questions below. Fuller details about each method can be found in the directed
reading material. The exercises are designed to help you develop your understanding of
the methods and to translate your understanding through the spreadsheet application of
the methods to data. The spreadsheet is simply being used as calculator hence our
focus is upon the correctness of the method implementation.
All exercises assume a time series is the data input to modelling and, in general, is
denoted by
1 2
, ,…
t
Y Y Y where
t
Y is the observed demand at time period t. Our goal is to
obtain a forecast for the next time periods,
1 2 3
, , ,…
t t t
F F F
.
The data sets with the observed the time series are given in excel files as directed in
each exercise. As well as showing your calculations in your spreadsheet, please note
your interpretation of your findings as this will provide a useful record of your analysis
and will help you prepare for the assignment.
Exercise 1
The managing director of an umbrella factory wants to forecast demand for his
umbrellas to aid in planning production. He is aware of the seasonality of the demand
for his product, and so splits the year into 5 equal periods for planning purposes (the
factory is closed for 2 weeks in the summer). He has the following data on demand
over the past 3 years:
Season
Year
1 2 3 4 5
Weeks 1-10 11-20 23-32 33-42 43-52
winter spring summer autumn winter
2014
2015
2016
129 177 34 70 130
152 225 40 82 163
200 252 48 104 186
(in hundreds)
2
(a) Plot the time series and comment on the pattern of umbrella sales.
(b) We want to set up a basic Holt-Winter’s forecast model to forecast sales for
2017 and 2018. Since our data set shows a systematic increasing linear trend
and also regular periodicity then we need a model that captures these patterns.
Our Holt-Winters model can be written as follows
Does the expression of the model make intuitive sense? You should be able to
see the linear trend model as used in Holt’s method that is then multiplied by a
parameter that represents the effect of season. This parameter effectively inflates
or deflates the underlying trend of the data to take account of the peaks and
troughs of demand associated with systematic seasonal patterns. For our data, l
= 5 because there are 5 periods (or seasons) in our data. Since we want to
forecast for the next two years, then m is set to 1 to 10 corresponding to the five
periods in each of 2017 and 2018.
Here we set up the basic model which means that we use the observed data for
2014-2016 to estimate all parameters our model associated with the level, trend
and seasonal effects. Then we use this model to project demand in future time
periods.
The following steps lead you through the set-up of this model in a spreadsheet.
The steps involve estimating the parameters of the modelling components in
turn. Then using the model components to project the trend forward and adjust
by the relevant seasonal index to obtain a forecast for a particular period.
Most calculations will involve adding columns to extend the workings across
the rows corresponding to the time horizon to be modelled (e.g. 2014 period 1 –
2018 period 5). However we shall also create records of the common parameters
estimated across all the parameters. So think about creating a reserved, say, at
the top of your spreadsheet or to the side that is kept for the parameter estimates
calculated across all the historical data (i.e. 2014-6) and will be referenced when
we project forecasts for 2017-8.
i. First we need to obtain the underlying trend of the data. We start to
characterise this by fitting an appropriate moving average to smooth
fluctuations in the data. Since we have 5 periods in our “season” then
we use an MA(5) to smooth the data. Since this moving average is used
where
step ahead forecast
level of underlying stationary series at time
trend at time
seasonal index at time
length of season in time periods
t m t t t m l
t m
t
t
t
F L mT I
F m
L t
T t
I t
l
3
to smooth the data, we record the computed value of the moving average
in the cell aligned with the centre of the observations being averaged.
That is, if we average over time periods 1 to 5 then the computed value
of the moving average will be recorded in a cell aligned with time period
3. On completing this step you should have a new column with the
MA(5) values aligned with the mid-point of the set of values from which
the average has been calculated.
NOTE that this is different from the approach we take when making a
forecast with moving averages because then we usually record the
forecast value in the cell corresponding to the time period to which the
forecast relates. For example, if we use a moving average of time
periods 1-5 to forecast the demand in time period 5 then the value is
recorded in a cell aligned with time period 6. This was the approach we
used earlier when we were forecasting directly with moving averages.
ii. Now we want to obtain the slope parameter. First create a new column
and record the calculated difference between consecutive moving
average values. Second compute the average of these differences and
record this value in cell that is clearly labelled in your reserved space for
parameters as we shall reference it in later calculations since the average
difference provides an initial estimate of the slope of the linear trend.
Does this operation make sense? We are effectively averaging out the
local slopes between consecutive times to get an estimate of the global
slope for all the past data. This global slope becomes the estimate of the
trend parameter.
iii. Now we want to set up a new column that contains the values of the
trend at each time period, past and future. We do this by setting the mid-
point of the historical trend value to be equal to the average of the
smoothed moving average values. To do this you should identify the row
aligned with the middle point of the past data set (i.e. period 3 in 2015)
and then record the average the smoothed MA(5) values in this cell.
Then the rest of the trend values can be extrapolated by or adding the
slope value (the value recorded in the cell with the trend parameter saved
at the end of step ii) for time periods before or after the mid-point,
respectively.
iv. Now we estimate the seasonal effects for all past observed data. In a new
column calculate the seasonal value as the ratio of the appropriate
observed demand (input sales data) relative to the trend values
(computed in step iii) for each time period in each year (from period 1
2014 to period 5 2016). By calculating the seasonal value as a ratio we
are assuming a multiplicative seasonal effect.
v. Now we obtain seasonal indices for each “season” by averaging over the
seasonal values for the equivalent “season” in each year in the
initialisation data set. You should obtain five seasonal indices, one for
each of season 1-5. Hence for period 1, you will be averaging over the
three seasonal ratios computed in step iv for 2015. 2015, 2016 to obtain
4
one period 1 seasonal index. Record and label these five seasonal indices
appropriately in your reserved space for parameter estimates.
vi. We have now obtained all the parameter estimates for the past data and
are ready to start making our forecasts. We start by project the trend for
each period in 2017 and 2018. That is, extend the column created in step
iii to record the trend for each of the 5 periods in each of these two years.
You can conduct the calculations in several ways. The easiest is to
simply add on the value of the trend parameter (created in step ii) to
every row for the time period 1 2017 through to period 5 in 2018 as an
extension of the column of past trends created in step iii. This is a
practical way of implementing the linear trend expression that is at the
heart of the Holt-Winters model.
vii. Now we need to adjust the projected trend to take account of seasonal
effects by multiplying by the appropriate seasonal index. That is, we
record our forecasts in a new column and compute them as the product
of the projected trend values from step vi times the relevant seasonal
index computed in step v. For example, when forecasting for period 2 in
2017 and 2018 the appropriate trend values will be multiplied by the
seasonal index computed for period 2.
viii. Plot your time series including both the observed data and the new
forecasts you have just created. Does the pattern in the forecast data
make sense? If you have completed your calculations correctly then the
patterns for the forecast should just be an extension of the patterns
observed for the relevant time periods in the past data.
ix. Now consider the situation where we have data for the actual demand for
umbrellas in 2017. The data are:
Season 1 2 3 4 5
2017 209 320 60 117 219
Calculate the forecast errors for 2017 and calculate the ME, MAD, MSE,
MPE and the MAPE. Keep a record of your forecast error summaries
clearly labelled as we shall use them later when we compare this basic
Holt-Winters forecast model with a more dynamic version.
(c) Now we shall show how to create a more dynamic version of Holt-Winters that
involves updating the parameter estimates as new data become available. We
shall assume that the model has been initialised using past data as in part (b) and
then consider how we might use the data for 2017 to update the parameter
estimates and make forecasts based on the most recent data. The data we shall
use for the updating is shown below. Please imagine that this data is becoming
available on a period by period basis as 2017 unfolds so that you start to
appreciate the time dynamics of the data generating process.
Season 1 2 3 4 5
2017 209 320 60 117 219
5
We now want to dynamically update the forecasts using new data as it
becomes available. That is, at the end of period 1 of 2017 a forecast is to be
made to period 2, and so on.
We have an equation to update each of the level, trend and seasonal parameters
in our Holt-Winters model, respectively given by
You should be able to observe that the updating formulae for each of the Holt-
Winters parameters for the stationary, trend and seasonal parameters are based
upon an exponential smoothing mechanism. All formula essentially take a
weighted average of the last value of the parameter of interest with the most
recent relevant numerical estimate of that parameter from the latest observed
demand data. You should be able to see that the structure of the three formulae
are the same and in the form of an “exponential smoothing”, although the
equations differ for each of the parameters because they relate to different
components of the data patterns. The notation used is as defined in part (b).
i. You might find it useful to try writing out these equations in words (e.g.
T = trend, I = seasonal index, Y = observed demand etc) if this helps you
better appreciate the reasoning underpinning the updating mechanism.
ii. Think about how you might organise your spreadsheet. For example, it
might make sense to create a new worksheet where include a copy of
your working for steps I – v in part (b) since these correspond to the
initialisation of the model parameters from the past data. You can then
extend the number of rows to allow for the forecasting in 2017 and add
extra columns for additional workings associated with each of the
parameter updates required for this dynamic updating version.
iii. Assume the following values for your smoothing coefficients
0.6 . You might want to set up your spreadsheet so that
these values can be changed so that you can try out different values to
see the effect. As usual, values of the coefficients that are closer to 1
implies more responsiveness of the parameter estimates to recent data.
1 11
t
t t t
t l
Y
L L T
I
1 11t t t tT L L T
1tt t l
t
Y
I I
L
where , , are smoothing coefficients taking values between 0 and 1.
6
iv. Set up your spreadsheet to calculate updated values of the stationary,
trend and seasonal indices for each period in 2017, and hence obtain
forecasts for periods 1-5 in 2017.
Note 1 – for the stationary and trend parameters you will need to update
based on the value from the previous time period (e.g. period 1 in 2017
will be an update of period 5 in 2016). However for the seasonal indices
then the updates need to correspond to the appropriate season. (e.g.
period 3 in 2017 will be an update of period 3 in 2016).
Note 2 – in our basic Holt-Winters method set up in part (b) we did not
need to explicitly make calculations using the stationary value (L). This
was because our operations in step vi in part (b) projected the trend for
2017 and 2018 from the level in period 5 in 2016 quite naturally by
adding on the trend parameter estimate to the last value. For our
dynamic version of Holt-Winters with updating we need to be more
explicit in referencing the cell that contains the last value of the level
which we shall update. Please use the value of the cell corresponding to
period 5 of 2016 calculated in step iii of part (b) as your value for L at t-
1, assuming t corresponds to period 1 in 2017.
v. Plot your forecasts and the past data. Do you forecasts make sense in
relation to the patterns of past demand?
vi. Since you have the data for 2017, compute the error between the
forecasts generated under the dynamic updating and the observed
demand. Also, obtain the usual set of forecast error summaries (e.g.
MAPE etc).
(d) Compare your forecasts for 2017 with obtained in parts (b) and (c) based on
your time plots and your set of forecast error calculations. Which do you think
is most useful forecasting method in an operational context and why?
(e) If you have set up your spreadsheet in a way that allows you to change the
specified values of the smoothing coefficients, then try out different
combinations of coefficient values. Think through what effect you might expect
this to have on your model and then examine the effects on the forecasts
generated and the errors statistics. What set of smoothing values would you
recommend and why?
7
Exercise 2
The table below, also given in the Excel file “Air Passengers”, shows the number of
inward passengers to the UK travelling by air on scheduled services, during the period
from the first quarter of 1995 to the third quarter of 2004.
We shall use this data set to show how we can generate de-seasonalised values under an
additive model so that we understand the underlying data patterns adjusted
appropriately for time of year effects. We will then extend the analysis to obtain
forecasts for 2014.
Less direction is given in each step since we are creating a variant of the process
followed in Exercise 1. The variants relate to, for example, the length of the season, the
form of the seasonal effect, and the interim purpose of modelling which is to de-
seasonalise as well as forecast.
Year Quarter Passengers Year Quarter Passengers
1995 I 9337 2000 I 13665
1995 II 13335 2000 II 18636
1995 III 16545 2000 III 22743
1995 IV 11287 2000 IV 16034
1996 I 10262 2001 I 14302
1996 II 13572 2001 II 17782
1996 III 16583 2001 III 22987
1996 IV 12075 2001 IV 14684
1997 I 11003 2002 I 14269
1997 II 14926 2002 II 18858
1997 III 18147 2002 III 23347
1997 IV 13066 2002 IV 16702
1998 I 11929 2003 I 15150
1998 II 16323 2003 II 19430
1998 III 19949 2003 III 24521
1998 IV 14251 2003 IV 17818
1999 I 13083 2004 I 16447
1999 II 17249 2004 II 21602
1999 III 21137 2004 III 26213
1999 IV 15110
Source: Monthly Digest of Statistics.
8
(a) Plot the time series and comment upon the patterns displayed in the number of
air passengers.
(b) Model the trend in the data using an appropriate moving average. We now have
an even number of seasons per year and so a form of centred moving averages
are appropriate. Centred moving averages means calculating the moving
averages twice so that we centre the averaged value in the middle of the data
being averaged.
(c) Plot the smoothed data set created in part (b) on the original observations and
comment on how well the smoothed data tracks the trend.
(c) Compute the seasonal values for each quarter by computing the difference (or
deviation) between the observed and the trend values, and averaging for each
season to obtain the four seasonal indices. Differencing corresponds to an
additive time series model (unlike a multiplicative time series model where the
seasonal components are calculated as the ratio of observed to trend as in
Exercise 1). In general, an additive model is more appropriate when the
amplitude of seasonal cycles are the same, while a multiplicative model is more
appropriate the amplitude of seasonal cycles may vary.
(d) Compute the seasonally adjusted time series values by subtracting the
appropriate seasonal indices from the actual observations for each time point.
We shall call these new values the de-seasonalised series.
(e) Plot the de-seasonalised series and note the patterns you observe? Does it match
what you expect after you have removed the seasonal effects?
(e) Using a basic additive Holt-Winters make forecasts for the last quarter of 2004
by using an appropriate selection of the past data. Justify your choice of data to
initialise your forecasting model. You will need to compute the trend in a
similar manner to Exercise 1 and then project this trend and adjust by adding the
value of the appropriate seasonal index.