8.3 Methods with seasonality | Forecasting: Principles and Practice (3rd ed) (2024)

8.3 Methods with seasonality

Holt (1957) and Winters (1960) extended Holt’s method to capture seasonality. The Holt-Winters seasonal method comprises the forecast equation and three smoothing equations — one for the level \(\ell_t\), one for the trend \(b_t\), and one for the seasonal component \(s_t\), with corresponding smoothing parameters \(\alpha\), \(\beta^*\) and \(\gamma\). We use \(m\) to denote the period of the seasonality, i.e., the number of seasons in a year. For example, for quarterly data \(m=4\), and for monthly data \(m=12\).

There are two variations to this method that differ in the nature of the seasonal component. The additive method is preferred when the seasonal variations are roughly constant through the series, while the multiplicative method is preferred when the seasonal variations are changing proportional to the level of the series. With the additive method, the seasonal component is expressed in absolute terms in the scale of the observed series, and in the level equation the series is seasonally adjusted by subtracting the seasonal component. Within each year, the seasonal component will add up to approximately zero. With the multiplicative method, the seasonal component is expressed in relative terms (percentages), and the series is seasonally adjusted by dividing through by the seasonal component. Within each year, the seasonal component will sum up to approximately \(m\).

Holt-Winters’ additive method

The component form for the additive method is:\[\begin{align*} \hat{y}_{t+h|t} &= \ell_{t} + hb_{t} + s_{t+h-m(k+1)} \\ \ell_{t} &= \alpha(y_{t} - s_{t-m}) + (1 - \alpha)(\ell_{t-1} + b_{t-1})\\ b_{t} &= \beta^*(\ell_{t} - \ell_{t-1}) + (1 - \beta^*)b_{t-1}\\ s_{t} &= \gamma (y_{t}-\ell_{t-1}-b_{t-1}) + (1-\gamma)s_{t-m},\end{align*}\]where \(k\) is the integer part of \((h-1)/m\), which ensures that the estimates of the seasonal indices used for forecasting come from the final year of the sample. The level equation shows a weighted average between the seasonally adjusted observation \((y_{t} - s_{t-m})\) and the non-seasonal forecast \((\ell_{t-1}+b_{t-1})\) for time \(t\). The trend equation is identical to Holt’s linear method. The seasonal equation shows a weighted average between the current seasonal index, \((y_{t}-\ell_{t-1}-b_{t-1})\), and the seasonal index of the same season last year (i.e., \(m\) time periods ago).

The equation for the seasonal component is often expressed as\[s_{t} = \gamma^* (y_{t}-\ell_{t})+ (1-\gamma^*)s_{t-m}.\]If we substitute \(\ell_t\) from the smoothing equation for the level of the component form above, we get\[s_{t} = \gamma^*(1-\alpha) (y_{t}-\ell_{t-1}-b_{t-1})+ [1-\gamma^*(1-\alpha)]s_{t-m},\]which is identical to the smoothing equation for the seasonal component we specify here, with \(\gamma=\gamma^*(1-\alpha)\). The usual parameter restriction is \(0\le\gamma^*\le1\), which translates to \(0\le\gamma\le 1-\alpha\).

Holt-Winters’ multiplicative method

The component form for the multiplicative method is:\[\begin{align*} \hat{y}_{t+h|t} &= (\ell_{t} + hb_{t})s_{t+h-m(k+1)} \\ \ell_{t} &= \alpha \frac{y_{t}}{s_{t-m}} + (1 - \alpha)(\ell_{t-1} + b_{t-1})\\ b_{t} &= \beta^*(\ell_{t}-\ell_{t-1}) + (1 - \beta^*)b_{t-1} \\ s_{t} &= \gamma \frac{y_{t}}{(\ell_{t-1} + b_{t-1})} + (1 - \gamma)s_{t-m}.\end{align*}\]

Example: Domestic overnight trips in Australia

We apply Holt-Winters’ method with both additive and multiplicative seasonality17 to forecast quarterly visitor nights in Australia spent by domestic tourists. Figure 8.7 shows the data from 1998–2017, and the forecasts for 2018–2020. The data show an obvious seasonal pattern, with peaks observed in the March quarter of each year, corresponding to the Australian summer.

aus_holidays <- tourism |> filter(Purpose == "Holiday") |> summarise(Trips = sum(Trips)/1e3)fit <- aus_holidays |> model( additive = ETS(Trips ~ error("A") + trend("A") + season("A")), multiplicative = ETS(Trips ~ error("M") + trend("A") + season("M")) )fc <- fit |> forecast(h = "3 years")fc |> autoplot(aus_holidays, level = NULL) + labs(title="Australian domestic tourism", y="Overnight trips (millions)") + guides(colour = guide_legend(title = "Forecast"))

8.3 Methods with seasonality | Forecasting: PrinciplesandPractice (3rded) (1)

Figure 8.7: Forecasting domestic overnight trips in Australia using the Holt-Winters method with both additive and multiplicative seasonality.

Table 8.3: Applying Holt-Winters’ method with additive seasonality for forecasting domestic tourism in Australia. Notice that the additive seasonal component sums to approximately zero. The smoothing parameters are \(\alpha = 0.2620\), \(\beta^* = 0.1646\), \(\gamma = 0.0001\) and RMSE \(=0.4169\).
QuarterTimeObservationLevelSlopeSeasonForecast
\(t\)\(y_t\)\(\ell_t\)\(b_t\)\(s_t\)\(\hat{y}_{t+1\vert t}\)
1997 Q101.5
1997 Q21-0.3
1997 Q32-0.7
1997 Q439.80.0-0.5
1998 Q1411.89.90.01.511.3
1998 Q259.39.90.0-0.39.7
1998 Q368.69.7-0.0-0.79.2
1998 Q479.39.80.0-0.59.2
2017 Q18012.410.90.11.512.3
2017 Q28110.510.90.1-0.310.7
2017 Q38210.511.00.1-0.710.3
2017 Q48311.211.30.1-0.510.6
\(h\)\(\hat{y}_{T+h\vert T}\)
2018 Q1112.9
2018 Q2211.2
2018 Q3311.0
2018 Q4411.2
2019 Q1513.4
2019 Q2611.7
2019 Q3711.5
2019 Q4811.7
2020 Q1913.9
2020 Q21012.2
2020 Q31111.9
2020 Q41212.2
Table 8.4: Applying Holt-Winters’ method with multiplicative seasonality for forecasting domestic tourism in Australia. Notice that the multiplicative seasonal component sums to approximately \(m=4\). The smoothing parameters are \(\alpha = 0.2237\), \(\beta^* = 0.1360\), \(\gamma = 0.0001\) and RMSE \(=0.4122\).
QuarterTimeObservationLevelSlopeSeasonForecast
\(t\)\(y_t\)\(\ell_t\)\(b_t\)\(s_t\)\(\hat{y}_{t+1\vert t}\)
1997 Q101.2
1997 Q211.0
1997 Q320.9
1997 Q4310.0-0.00.9
1998 Q1411.810.0-0.01.211.6
1998 Q259.39.9-0.01.09.7
1998 Q368.69.8-0.00.99.2
1998 Q479.39.8-0.00.99.2
2017 Q18012.410.80.11.212.6
2017 Q28110.510.90.11.010.6
2017 Q38210.511.10.10.910.2
2017 Q48311.211.30.10.910.5
\(h\)\(\hat{y}_{T+h\vert T}\)
2018 Q1113.3
2018 Q2211.2
2018 Q3310.8
2018 Q4411.1
2019 Q1513.8
2019 Q2611.7
2019 Q3711.3
2019 Q4811.6
2020 Q1914.4
2020 Q21012.2
2020 Q31111.7
2020 Q41212.1

The applications of both methods (with additive and multiplicative seasonality) are presented in Tables 8.3 and 8.4 respectively. Because both methods have exactly the same number of parameters to estimate, we can compare the training RMSE from both models. In this case, the method with multiplicative seasonality fits the data slightly better.

The estimated components for both models are plotted in Figure 8.8. The small value of \(\gamma\) for the multiplicative model means that the seasonal component hardly changes over time. The small value of \(\beta^{*}\) means the slope component hardly changes over time (compare the vertical scales of the slope and level components).

8.3 Methods with seasonality | Forecasting: PrinciplesandPractice (3rded) (2)

Figure 8.8: Estimated components for the Holt-Winters method with additive and multiplicative seasonal components.

Holt-Winters’ damped method

Damping is possible with both additive and multiplicative Holt-Winters’ methods. A method that often provides accurate and robust forecasts for seasonal data is the Holt-Winters method with a damped trend and multiplicative seasonality:\[\begin{align*} \hat{y}_{t+h|t} &= \left[\ell_{t} + (\phi+\phi^2 + \dots + \phi^{h})b_{t}\right]s_{t+h-m(k+1)} \\ \ell_{t} &= \alpha(y_{t} / s_{t-m}) + (1 - \alpha)(\ell_{t-1} + \phi b_{t-1})\\ b_{t} &= \beta^*(\ell_{t} - \ell_{t-1}) + (1 - \beta^*)\phi b_{t-1} \\ s_{t} &= \gamma \frac{y_{t}}{(\ell_{t-1} + \phi b_{t-1})} + (1 - \gamma)s_{t-m}.\end{align*}\]

Example: Holt-Winters method with daily data

The Holt-Winters method can also be used for daily type of data, where the seasonal period is \(m=7\), and the appropriate unit of time for \(h\) is in days. Here we forecast pedestrian traffic at a busy Melbourne train station in July 2016.

sth_cross_ped <- pedestrian |> filter(Date >= "2016-07-01", Sensor == "Southern Cross Station") |> index_by(Date) |> summarise(Count = sum(Count)/1000)sth_cross_ped |> filter(Date <= "2016-07-31") |> model( hw = ETS(Count ~ error("M") + trend("Ad") + season("M")) ) |> forecast(h = "2 weeks") |> autoplot(sth_cross_ped |> filter(Date <= "2016-08-14")) + labs(title = "Daily traffic: Southern Cross", y="Pedestrians ('000)")

8.3 Methods with seasonality | Forecasting: PrinciplesandPractice (3rded) (3)

Figure 8.9: Forecasts of daily pedestrian traffic at the Southern Cross railway station, Melbourne.

Clearly the model has identified the weekly seasonal pattern and the increasing trend at the end of the data, and the forecasts are a close match to the test data.

Bibliography

Holt, C. C. (1957). Forecasting seasonals and trends by exponentially weighted averages (ONR Memorandum No. 52). Carnegie Institute of Technology, Pittsburgh USA. Reprinted in the International Journal of Forecasting, 2004. [DOI]

Winters, P. R. (1960). Forecasting sales by exponentially weighted moving averages. Management Science, 6(3), 324–342. [DOI]

  1. Our implementation uses maximum likelihood estimation as described in Section 8.6 while Holt and Winters originally minimized the sum of squared errors. For multiplicative seasonality, this will lead to slightly different parameter estimates. Optimizing the sum of squared errors can be obtained by setting opt_crit="mse" in ETS().↩︎

8.3 Methods with seasonality | Forecasting: Principles and Practice (3rd ed) (2024)

FAQs

What is the formula for seasonality? ›

To calculate the seasonality index, one must divide the sales up for a given year into quarters (or another appropriate time frame). Once divided, find the average sales for the year. Once that is completed, divide the quarterly sales by the average sales for the year.

What is the seasonality method? ›

Seasonal method of forecasting is used where data shows both increasing and decreasing pattern over a certain time period. In this method pattern is repeated over regular interval of time period.

What is the Holt Winters model equation? ›

Holt-Winters' multiplicative method

The component form for the multiplicative method is: ^yt+h|t=(ℓt+hbt)st+h−m(k+1)ℓt=αytst−m+(1−α)(ℓt−1+bt−1)bt=β∗(ℓt−ℓt−1)+(1−β∗)bt−1st=γyt(ℓt−1+bt−1)+(1−γ)st−m.

What is the difference between additive and multiplicative exponential smoothing? ›

If the trend shows a linearly upward or downward tendency, we apply it additively. If it varies exponentially, it's multiplicative. If the magnitude of the seasonal patterns changes linearly, we can apply it additively. If the magnitude evolves exponentially, it is multiplicative.

How do you solve seasonality? ›

7 Ways to Conquer Seasonality in Your Business
  1. Know the Highs and Lows of Your Industry. The most successful business owners know when their sales soar and fall. ...
  2. Explore New Income Sources. ...
  3. Hire Seasonal Employees. ...
  4. Review Your Inventory. ...
  5. Manage Your Cash Flow. ...
  6. Round Up Customer Reviews. ...
  7. Talk to Your Bank.

How to determine seasonality? ›

One way to detect seasonality in a time series is to plot it and look for repeating patterns or cycles. You can also use autocorrelation and partial autocorrelation functions to measure the correlation between the values of a time series and its lagged values.

What is an example of seasonality? ›

By seasonality, we mean periodic fluctuations. For example, retail sales tend to peak for the Christmas season and then decline after the holidays. So time series of retail sales will typically show increasing sales from September through December and declining sales in January and February.

What are the three types of seasonality? ›

There are three common seasonality types: yearly, monthly and weekly.

How do you correct for seasonality? ›

To correct seasonality in time series data, you can use methods like differencing, detrending, and seasonal adjustment. Differencing involves subtracting values from previous time periods to make the data more stationary.

When to use Holt-Winters method? ›

The Holt-Winters method is used for time-series forecasting because it can capture trends and seasonality in the data, making it particularly useful for predicting future values of a time series that exhibit these patterns. The method is also relatively simple and can produce accurate forecasts.

What is the formula for the Winters model? ›

Formula. The additive model is: L t = α (Y t – S tp ) + (1 – α) [L t1 + T t1 ] T t = γ [L t – L t1 ] + (1 – γ) T.

What is Holt's method? ›

The Holt-Winters method uses exponential smoothing to encode lots of values from the past and use them to predict “typical” values for the present and future. Exponential smoothing refers to the use of an exponentially weighted moving average (EWMA) to “smooth” a time series.

How to know if seasonality is additive or multiplicative? ›

So, how you should have noticed, we use multiplicative models when the magnitude of the seasonal pattern in the data depends on the magnitude of the data. On other hand, in the additive model, the magnitude of seasonality does not change in relation to time.

What is Holt Winters multiplicative seasonality? ›

This seasonal multiplicative method multiplies the trended forecast by the seasonality, producing the Holt-Winters' multiplicative forecast. This method is best for data with trend and with seasonality that increases over time. It results in a curved forecast that reproduces the seasonal changes in the data.

What is the formula for the seasonal effect? ›

Consider a series of the form Yt = mt + St + Xt, where {mt} is the smooth trend, {St} are the seasonal effects with period s, and {Xt} is the stationary part. As mentioned above, in some cases approximate equal variance may be achieved by employing Box-Cox transformations.

How do you account for seasonality? ›

The first step to account for seasonality in sales forecasting is to identify the seasonal patterns in your sales data. You can do this by analyzing your historical sales data over a long enough period, such as two or three years, and looking for trends, peaks, and dips.

How do you calculate seasonal demand? ›

The best way to understand how your brand's seasonality and product demand during various periods throughout the year is to look at historical data. You can identify high demand by looking at previous years' sales to not only identify what times of year are most popular for sales, but your order volume at those times.

Top Articles
Latest Posts
Article information

Author: Jamar Nader

Last Updated:

Views: 6172

Rating: 4.4 / 5 (55 voted)

Reviews: 94% of readers found this page helpful

Author information

Name: Jamar Nader

Birthday: 1995-02-28

Address: Apt. 536 6162 Reichel Greens, Port Zackaryside, CT 22682-9804

Phone: +9958384818317

Job: IT Representative

Hobby: Scrapbooking, Hiking, Hunting, Kite flying, Blacksmithing, Video gaming, Foraging

Introduction: My name is Jamar Nader, I am a fine, shiny, colorful, bright, nice, perfect, curious person who loves writing and wants to share my knowledge and understanding with you.