← 7. Time series
Time series analysis
Try this analysis →

Seasonal Decomposition

An analysis method that splits change over time into trend, seasonality and residual to identify repeating patterns.

Time series explorationTrend · seasonality · residualAdditive · multiplicativeSTL

JanFebMarAprMayJunJulAugSepOctNovDecMonthly pattern that repeats much the same each year = seasonality
Original series=Trend+Seasonality+Residual
Components of seasonal decomposition

Why do sales rise every December? Did sales grow this year compared with last year because the business grew, or because seasonal demand got bigger?

Time series data can show both long-lasting change and movements that repeat at regular intervals. If you do not separate the two, it is easy to read a temporary increase as long-term growth, or to mistake a recurring change for something unexpected.

Seasonal decomposition is a method that splits an observed time series into trend, seasonality and residual to look at how each component moves. It lets you see in which months a repeating pattern appears and what the long-term course looks like once that pattern is removed.

In this guide we use an example of monthly retail sales to walk through the principle of seasonal decomposition, the result plots, additive and multiplicative decomposition, STL settings and cautions for the analysis, in that order.

SECTION 1

What is seasonal decomposition?

It looks at observed change by splitting it into several components.

Seasonal decomposition is an analysis method that looks at the changes in data recorded in time order by splitting them into trend, seasonality and residual. It is used to tell whether an increase in sales comes from long-term growth or from a recurring change that appears in about the same months every year.

Seasonal decomposition is less a way to predict a single observation than a process of understanding the structure in which the observed data have moved. Once the repeating movements are separated out, temporary spikes and drops also become easier to spot.

SECTION 2

Why is seasonal decomposition needed?

It separates recurring seasonal change from the long-term trend.

Just because December sales are higher than November's, you cannot conclude that the business suddenly grew. If the same thing happened every December, seasonal demand may have played a role.

On the other hand, if sales in the same month rose steadily year after year, the long-term trend also has to be considered. Seasonal decomposition helps you separate and compare these two movements.

Key question

Among the changes in sales, which movements persist steadily, and which repeat every year?

SECTION 3

How does seasonal decomposition work?

Distinguish the structure of the additive model from that of the multiplicative model.

Additive decomposition expresses the observation at a time point as trend + seasonality + residual. It is easy to think about when the seasonal effect for the same month is similar in absolute amount.

Observation = trend + seasonality + residual
Additive model

Multiplicative decomposition expresses it as trend × seasonality × residual. It can be considered when the size of seasonal swings grows as the level of the data grows, and the observations must be positive. For positive data, another approach is to log-transform the data so the multiplicative relationship can be handled as an additive one.

Neither approach means the components actually exist completely independently. They are the result of the model used splitting the data apart to explain it.

SECTION 4

Worked example: seasonality in monthly retail sales

We follow one example from the original series through to the residual.

Suppose an online retailer recorded sales for the 48 months from January 2022 to December 2025. The goal of the analysis is to check whether sales are increasing in the long run and whether sales rise repeatedly in particular months.

The following data are hypothetical sales generated for illustration, in units of thousands of dollars ($K). STL decomposition with a period of 12 was applied to the monthly observations.

Original seriesSeasonalityResidualTrend20222025
STL decomposition results

In the original series, an upward course and peaks that repeat every year appear together, but after decomposition you can see what the trend and seasonality each look like.

SECTION 5

How do you read the original series, trend, seasonality and residual?

Interpret each of the four plots on its own.

Original series is the sales actually recorded. Trend smooths out month-to-month swings and shows the long-term course. Seasonality is the change that repeats at the same time each year. Residual is the part not explained by trend and seasonality.

In additive decomposition, adding the trend, seasonality and residual for each month gives back the original observation. Below are decomposition values for some months of the hypothetical data.

PeriodObserved salesTrendSeasonalityResidual
2024.07328.8296.617.414.6
2024.08313.8298.615.4-0.2
2024.09297.0300.4-2.6-1.0
2024.10295.4302.4-5.6-1.6
2024.11320.2304.415.60.2
2024.12366.6306.454.85.4
ObservedTrendSeasonalityResidual2024.07328.8=296.6+17.4+14.62024.08313.8=298.6+15.4+−0.22024.09297.0=300.4+−2.6+−1.02024.10295.4=302.4+−5.6+−1.62024.11320.2=304.4+15.6+0.22024.12366.6=306.4+54.8+5.4
Components for July–December 2024

Units: $K. Values are rounded to one decimal place, so totals may differ slightly.

Reading order

Check whether the trend is rising, then find the recurring months in the seasonality, and finally look at exceptional movements left unexplained in the residual.

SECTION 6

How do you interpret the monthly seasonal pattern?

Check the recurring highs and lows of particular months.

Monthly seasonality is read as the relative high or low of sales that recurs in the same month. A bar above 0 means that month pushed sales above the trend level, and a bar below 0 means it pushed them below.

JanFebMarAprMayJunJulAugSepOctNovDecDecember peak
Average seasonal component by month

In this example you can see a pattern of sales rising sharply in December, the year-end peak season. However, a December seasonal component of +60 does not mean December sales in every year are exactly 60 above the trend. In STL, the estimated seasonal pattern can also change over time.

SECTION 7

How do additive and multiplicative decomposition differ?

Check whether the size of seasonal variation stays constant or changes in proportion.

AspectAdditive decompositionMultiplicative decomposition
Structuretrend + seasonality + residualtrend × seasonality × residual
Seasonal effectDifference in units of the observationsRatio to the trend level
When it fitsSeasonal swings are roughly constant in sizeSwings grow as the level rises
CautionCan handle negative valuesRequires positive observations

If sales volume rises by 200 at year-end when it is at 1,000 and also rises by 200 when it is at 2,000, additive decomposition is natural. If instead it rises by 20% in both cases, multiplicative decomposition may be more natural.

The choice should be made by looking at the shape of the data, and the residual pattern of the decomposition should also be checked.

SECTION 8

How STL differs from classical seasonal decomposition

Understand the differences in how the trend is estimated and how flexible each is.

MethodFeaturesPoints to watch
Classical seasonal decompositionEstimates the trend with a moving average and computes the seasonal componentSome trend values at the ends of the series may be missing
STLEstimates trend and seasonality flexibly using LOESS smoothingAdditive by default; period and smoothing settings affect the results

STL stands for Seasonal and Trend decomposition using LOESS. In its results the seasonal pattern can change a little from year to year, and a robust setting can be used to reduce the influence of some large outliers.

In this example we used period 12, robust STL. Recording the same settings makes the results easier to reproduce when the analysis is repeated.

SECTION 9

How does it differ from other time series analyses?

Compare it with trend analysis, rolling statistics and ARIMA.

AnalysisPurposeMain results
Trend analysisIdentify long-term increases or decreases over timeSlope, trend line
Rolling statisticsCompute means and variability over windows across timeMoving average, moving standard deviation
Seasonal decompositionSplit into trend, seasonality and residualTime series for each component
ARIMA·SARIMAModel the dependence structure of a time series and forecastModel coefficients, forecasts, diagnostics

The residuals from seasonal decomposition may still contain autocorrelation. So the mere fact that you decomposed the series does not mean you can forecast future sales accurately or that all time dependence has disappeared.

SECTION 10

What should you check before the analysis?

Check the time interval, missing values, period and observation span.

Time interval and ordering

For monthly data, there should be one observation per month. If the same month appears twice or the order is mixed up, clean that up first.

Seasonal period

The annual period is usually 12 for monthly data and 4 for quarterly data; when handling an annual cycle in weekly data, calendar effects need to be considered separately. Set the period to match the recording interval and the actual repeating pattern.

Observation span and missing values

With only one or two repetitions, it is hard to judge seasonality reliably. Where possible, secure several cycles and check for missing values and outliers. This example uses 48 months of data covering four annual cycles.

Caution

Factors such as holidays that shift dates, the number of business days, promotions and changes in regulations may not be adequately explained by a simple 12-month cycle alone.

SECTION 11

Cautions when interpreting seasonal decomposition results

Distinguish decomposition results from causal relationships or forecasts.

A large seasonal component does not let you conclude that the cause is the season itself. Sales events held every year or differences in the number of business days can create similar patterns.

Also, the trend and seasonal components change with the observation span, the decomposition method and the smoothing settings. If the analysis period is short or a structural change occurs, the estimated seasonality may be unstable.

Months with large residuals deserve further investigation, but a large residual does not in itself mean a data error. To find the cause, look at outside information and operating records for that time as well.

SECTION 12

Reporting seasonal decomposition results in a sentence

State the components and the analysis conditions together.

In a report, it is good to present the period and interval analyzed, the seasonal period chosen, the decomposition method used and the seasonal pattern together. The sentence below shows how the learning example would be reported.

Example report sentence

A robust STL seasonal decomposition with a period of 12 was conducted on hypothetical monthly retail sales data from January 2022 to December 2025 (48 months). The decomposition showed a long-term upward trend and a recurring pattern of higher sales centered on December. Monthly fluctuations not explained by trend and seasonality were examined separately as the residual component.

Seasonal decomposition itself is usually not a test that provides p-values for differences between groups. So based on these results alone, without a separate test, it is not appropriate to write that 'a significant seasonal effect was confirmed'.

SECTION 13

Where can seasonal decomposition be used?

It is used in demand, operations, health and economics.

Retail and marketing can use it to separate sale seasons from peak-season demand, operations management can identify recurring patterns in order volumes or call center inquiries, health can examine recurring monthly visitor counts or cases of seasonal illness, and economics can look at the long-term course and cyclicality of production and sales indicators.

However, the purpose of seasonal decomposition is not to hit future numbers directly but to understand the structure of past data. After checking the trend and seasonality, you can build a separate forecasting model if needed.

✓ Wrap-up

Seasonal decomposition is a way to separate recurring change from the long-term course.

It goes a step beyond the fact that sales changed, to look at which movements repeat and which changes persist.


When looking at seasonal decomposition results, first look at the direction of the trend, then find the patterns that repeat at a regular period in the seasonal component. Finally, check the residual for movements that trend and seasonality alone cannot explain.

Here, the decomposition results can change with the period set and the method of analysis. Checking the original series and outside circumstances together helps avoid overinterpretation, and if forecasting is the goal, a separate forecasting model may be needed.

KEY TAKEAWAY

The key to seasonal decomposition is splitting an observed time series into trend, seasonality and residual to distinguish long-term change from repeating patterns. When reading the plots, check the seasonal period and decomposition method first, and look at the unexplained residual as well.