1. Seasonal adjustment overview
Seasonal adjustment is widely used in statistics as a technique for enabling interpretation of data series gathered over time (time series). The purpose of seasonal adjustment is to remove systematic calendar-related variation in the data associated with the time of the year (i.e. seasonal effects).
In real-time indicators, we are seeking to seasonally adjust all real-time indicator datasets with identifiable seasonality.
At present, the following datasets have been seasonally adjusted at the monthly aggregate level:
- Value Added Tax (VAT) flash estimates
- Daily UK flights (also seasonally adjusted at the daily level)
- Weekly shipping indicators
- Monthly direct debit failure rate and average transaction amount
- Energy Performance Building Certificates (EPC)
- Revolut spending on debit cards
We are currently working on seasonally adjusting:
Nôl i'r tabl cynnwys2. Why we seasonally adjust our data
A time series can be broken down into three components which have distinct behaviours:
the seasonal component
the trend component
the irregular component
Seasonal adjustment is the process of identifying and removing the seasonal component from a time series, leaving the trend and irregular components.
Removing the seasonal component provides a more accurate understanding of the true direction and behaviour of a time series. It also enables easier and more powerful comparisons between, and within a time series. This is because movements in a time series' trend and irregular components can be altered or masked by the seasonal component.
Specifically:
the seasonal component is consistent and systematic variation in the time series which is associated with the time of year. This can be either:
- calendar events (e.g., repeated events such as bank holidays or religious dates, or one-off events such as coronations or extreme weather events)
- broad changes over different time periods (e.g., weekly, monthly, quarterly, or yearly effects)
the trend component represents the underlying direction of the time series, which includes the long-term behaviour of the overall series, and mid-term influences
the irregular component represents unpredictable changes and stochastic noise inherently associated with time series that cannot be attributed to the trend or the seasonal component
In the figure below, seasonal adjustment has been applied to the real time indicator daily UK flight data to remove weekly and annual patterns from the series.
Figure 1: Removing seasonality in daily UK flight data to analyse long term trends
Number of daily UK flights, seven day rolling average, 1 January 2022 to 15 June 2025
Source: EUROCONTROL
Download this chart Figure 1: Removing seasonality in daily UK flight data to analyse long term trends
Image .csv .xlsFurther information on seasonal adjustment, and how it is used in the ONS, can be found in this methodology article.
Nôl i'r tabl cynnwys3. Real-time indicator seasonal adjustment process
Within the economic activity and social change in the UK, real-time indicators bulletin, several series are seasonally adjusted, and work is continuing to seasonally adjust more series.
We firstly test a time series for seasonality using a variety of methods. This primarily involves (but is not exclusive to) the following:
Kruskal-Wallis tests
Friedman and f significance tests
autocorrelation and partial autocorrelation tests
plotting periodograms
The time series is tested for seasonality over any applicable time period. For our real time indicators, this tends to be across the following time periods:
weekly: seasonality would be detected if there is consistent variation associated with the day of the week. Many time series show consistent heights during the working week, with decreases at the weekend (or vice versa)
monthly: seasonality would be detected if there is consistent variation associated with the day/ point within the month. Most time series that detail payment and purchases data identify increases at the very end and start of the month, likely because of pay day occurring at the end of the month for most people in employment
quarterly: seasonality would be detected if there is consistent variation associated with the point within the quarter. Some time series that detail business activity show quarterly seasonality, as business trading can change consistently throughout each quarter of the year
yearly: seasonality would be detected if there is consistent variation associated with the point within the year. Most time series show yearly seasonality as specific times of year, such as the lead-up to the winter holiday period and subsequent January decline. This effect can be seen in most of our published time series
Please note that the frequency of data effects the periods over which a time series can be seasonal (and therefore tested). A time series which has raw daily data can be tested over all these periods, whereas monthly data can only be tested over a quarterly or yearly period.
The time series are then tested for stationarity, using an Augmented Dickey-Fuller test. A series is stationary if it exhibits a consistent mean and variance throughout the series.
If a time series is found to be seasonal and stationary, an additive seasonal adjustment model is then implemented. Otherwise, the data are transformed (e.g., using a log or logit transformation) to make them stationary, and then the seasonal adjustment process is started. To date, all seasonally adjusted series which we have published have either been stationary initially, or have been stationary after being log transformed, however, if a series was not stationary after transformation, a multiplicative model would be used to seasonally adjust the series.
After identifying seasonality, a calendar of suitable calendar effects (regressors) is constructed for the time series. Initially all suitable regressors are included, however, not all regressors are suitable for all series. The full suite of regressors that we currently consider include:
bank holidays
Easter period (dates between, and including, Good Friday to Easter Monday)
Christmas and Boxing Day (if they do not fall on their associated bank holiday)
Black Friday
the final Friday of each month
the final trading day each month
the final trading day each quarter
the Platinum Jubilee of Queen Elizabeth II
the funeral of Queen Elizabeth II
the Coronation of King Charles III
the COVID-19 pandemic
officially classified storms or other major weather events
When a calendar is constructed containing all suitable regressors, the raw, unadjusted series is linearised. Linearisation is the process of "cleaning" the raw series, which is done by identifying and removing the effect of each regressor, as well as identifying and removing the effect of outliers. This returns a clean, linearised series with the only seasonal signal being the broad effects that are associated with different time periods.
After linearisation is completed with a calendar containing all regressors, the strength of each regressor is checked. A new calendar is constructed that only contains the regressors that had a significant effect, and the linearisation process is rerun with the reduced calendar. This calendar changes over time, and the significant regressors are adapted to account for this.
After this, the series can be seasonally adjusted. This is done in a stepwise method from the shortest time period to the longest. For example, if a daily series was found to have significant weekly and yearly seasonal effects, the series would be seasonally adjusted over a weekly time period first, and then yearly.
For high-frequency data (series which contain daily or weekly data) we use an ARIMA-based fractional airline decomposition model to seasonally adjust the series. For lower-frequency data (monthly series) we typically use an X-13 ARIMA-SEATS model. Specific model specifications vary from series to series and are selected using traditional model selection techniques. More information on the modelling methods, seasonality tests and other techniques described in this article can be found on the JDemetra+ repository of information.
All modelling is done in R statistical software using the RJDemetra or RJDemetra3 suite of packages, developed by The National Bank of Belgium. RJDemetra, suitable for seasonally adjusting monthly data, is available on CRAN (The Comprehensive R Archive Network). While the RJDemetra3 suite, suitable for daily, weekly, or monthly seasonal adjustment, are available from their open source GitHub repository.
Once a series has been seasonally adjusted for all time periods in which a significant seasonal effect was detected, any level shift outliers identified during the linearisation process are re-added to the seasonally adjusted series. The seasonally adjusted series is retested for seasonality, to ensure that all seasonality has been removed. If no seasonality is detected in the adjusted series, it is considered seasonally adjusted.
Please note that all seasonally adjusted series undergo review every 12 months to ensure that the seasonal adjustment method is still suitable, and, if necessary, any changes are made to improve the method. This could include altering the time periods over which a series is seasonally adjusted, as well as adding or removing calendar regressors if the significance of their effect changes, or if new events occur which could affect our published series.
Additionally, please note that the suite of indictors we publish in the Real-time indicators bulletin have relatively short time series (less than 5 years), and most have significant periods during which the data were affected by the COVID-19 pandemic. Ideal conditions for seasonal adjustment would contain 5 years of unaffected data. As a result, and typically with seasonal adjustment, we expect the accuracy of our seasonally adjusted outputs to improve as more data are added to the raw series.
Nôl i'r tabl cynnwys5. Cite this article
Office for National Statistics (ONS), released 25 June 2025, ONS website, article, Economic activity and social change in the UK, real-time indicators: seasonal adjustment article.