13  Annual constraining

Seasonal adjustment may affect the annual values of a series. The yearly total of an adjusted series usually differs from the total of an unadjusted series. By applying variants of the Denton Method (Cholette and Dagum (1994), Denton (1971)), the adjustment procedure can be used to enforce the totals to be equal. In seasonal, this can be performed with the option force.type = "regress".

Cholette, Pierre A., and Estela Bee Dagum. 1994. “Benchmarking Time Series with Autocorrelated Survey Errors.” International Statistical Review / Revue Internationale de Statistique 62 (3): 365–77. http://www.jstor.org/stable/1403767.
Denton, Frank T. 1971. “Adjustment of Monthly or Quarterly Series to Annual Totals: An Approach Based on Quadratic Minimization.” Journal of the American Statistical Association 66 (333): 99–102.

13.1 Annual constraining

The yearly total of a seasonally adjusted series is usually not exactly equal to the yearly total of the original series. There is no theoretical reason why the annual totals of the original series and the seasonally adjusted series should be the same. For example, the number of trading days may differ in different years, and we would expect a trading day adjusted series to be different at the annual level.

Sometimes, however, it may be useful to apply annual constraining. The reason for this is usually to lower confusion for the end users. To constrain the annual totals, X13 includes a version of the Denton method. Let’s start with a SEATS adjustment of AirPassengers:

m <- seas(AirPassengers)

The tsbox package can be used to compute annual totals. As for AirPassengers, the annual total is the sum of the monthly values, but it sometimes makes sense to use "mean" as an aggregation function:

library(tsbox)
ts_frequency(final(seas(AirPassengers)), aggregate = "sum")
#> Time Series:
#> Start = 1949 
#> End = 1960 
#> Frequency = 1 
#>  [1] 1525.447 1680.069 2051.848 2369.099 2703.072 2870.317 3408.276 3926.282
#>  [9] 4412.581 4562.307 5131.798 5684.992
ts_frequency(AirPassengers, aggregate = "sum")
#> Time Series:
#> Start = 1949 
#> End = 1960 
#> Frequency = 1 
#>  [1] 1520 1676 2042 2364 2700 2867 3408 3939 4421 4572 5140 5714

As we can see, there are minor differences between the series. However, in this case, the differences are rather small, and at most as large as half a percentage point:

100 * (ts_frequency(final(seas(AirPassengers)), aggregate = "sum") /
ts_frequency(AirPassengers, aggregate = "sum") - 1)
#> Time Series:
#> Start = 1949 
#> End = 1960 
#> Frequency = 1 
#>  [1]  0.358358560  0.242769857  0.482294091  0.215704372  0.113791065
#>  [6]  0.115709710  0.008105796 -0.322870814 -0.190440290 -0.212002766
#> [11] -0.159572312 -0.507657103

By applying force.type = "regress", we constrain the annual values to be the same:

ts_frequency(final(seas(AirPassengers, force.type = "regress")), aggregate = "sum")
#> Time Series:
#> Start = 1949 
#> End = 1960 
#> Frequency = 1 
#>  [1] 1520 1676 2042 2364 2700 2867 3408 3939 4421 4572 5140 5714
ts_frequency(AirPassengers, aggregate = "sum")
#> Time Series:
#> Start = 1949 
#> End = 1960 
#> Frequency = 1 
#>  [1] 1520 1676 2042 2364 2700 2867 3408 3939 4421 4572 5140 5714

13.2 Should annual values be constrained?

As previously discussed, there isn’t a theoretical justification for enforcing annual constraints. Implementing annual constraints ensures consistency in annual values across both seasonally adjusted and unadjusted series, which can reduce confusion and possibly enhance user satisfaction.

Here are some guidelines (loosely based on UK Office for National Statistics (2007), Chapter 8.2.2) on deciding whether to apply annual constraints:

UK Office for National Statistics. 2007. Guide to Seasonal Adjustment with x-12-ARIMA. http://www.ons.gov.uk/ons/guide-method/method-quality/general-methodology/time-series-analysis/guide-to-seasonal-adjustment.pdf.
Usage
Most importantly, consider how the data is used, and what is expected by users. For example, if the data are integrated into the National Accounts, they likely require constraining to align with other datasets.
Conceptual Appropriateness
Assess if annual constraints are conceptually relevant for your dataset. For example, if your data is a price index, annual constraining is not appropriate.
Consistency
For series already undergoing seasonal adjustment, a strong justification is needed to alter the constraining approach. Avoid frequently toggling the use of annual constraints to maintain methodological consistency.
Impact Analysis
Examine the differences (or ratios, if using a multiplicative model) between the constrained and unconstrained series in their final forms. If these differences are minor and other considerations support constraining, applying annual constraints may be the more suitable option.