• Descriptive
    • Moments
    • Concentration
    • Central Tendency
    • Variability
    • Stem-and-Leaf Plot
    • Histogram & Frequency Table
    • Data Quality Forensics
    • Conditional EDA
    • Quantiles
    • Kernel Density Estimation
    • Normal QQ Plot
    • Bootstrap Plot

    • Multivariate Descriptive Statistics
  • Distributions
    • Binomial Probabilities
    • Geometric Probabilities
    • Negative Binomial Probabilities
    • Hypergeometric Probabilities
    • Multinomial Probabilities
    • Dirichlet
    • Poisson Probabilities

    • Exponential
    • Gamma
    • Erlang
    • Weibull
    • Rayleigh
    • Maxwell-Boltzmann
    • Lognormal
    • Pareto
    • Inverse Gamma
    • Inverse Chi-Square

    • Beta
    • Power
    • Beta Prime (Inv. Beta)
    • Triangular

    • Normal (area)
    • Logistic
    • Laplace
    • Cauchy (standard)
    • Cauchy (location-scale)
    • Gumbel
    • Fréchet
    • Generalized Extreme Value

    • Normal RNG
    • ML Fitting
    • Tukey Lambda PPCC
    • Box-Cox Normality Plot
    • Noncentral t
    • Noncentral F
    • Sample Correlation r

    • Empirical Tests
  • Hypotheses
    • Theoretical Aspects of Hypothesis Testing
    • Bayesian Inference
    • Minimum Sample Size

    • Empirical Tests
    • Multivariate (pair-wise) Testing
  • Models
    • Manual Model Building
    • Guided Model Building
  • Time Series
    • Time Series Plot
    • Decomposition
    • Exponential Smoothing

    • Blocked Bootstrap Plot
    • Mean Plot
    • (P)ACF
    • VRM
    • Standard Deviation-Mean Plot
    • Spectral Analysis
    • ARIMA

    • Cross Correlation Function
    • Granger Causality
  1. Introduction to Time Series Analysis
  2. 146  Decomposition of Time Series
  • Preface
  • Getting Started
    • 1  Introduction
    • 2  Why Do We Need Innovative Technology?
    • 3  Basic Definitions
    • 4  The Big Picture: Why We Analyze Data
  • Introduction to Probability
    • 5  Definitions of Probability
    • 6  Jeffreys’ axiom system
    • 7  Bayes’ Theorem
    • 8  Sensitivity and Specificity
    • 9  Naive Bayes Classifier
    • 10  Law of Large Numbers

    • 11  Problems
  • Probability Distributions
    • 12  Bernoulli Distribution
    • 13  Binomial Distribution
    • 14  Geometric Distribution
    • 15  Negative Binomial Distribution
    • 16  Hypergeometric Distribution
    • 17  Multinomial Distribution
    • 18  Poisson Distribution

    • 19  Uniform Distribution (Rectangular Distribution)
    • 20  Normal Distribution (Gaussian Distribution)
    • 21  Gaussian Naive Bayes Classifier
    • 22  Chi Distribution
    • 23  Chi-squared Distribution (1 parameter)
    • 24  Chi-squared Distribution (2 parameters)
    • 25  Student t-Distribution
    • 26  Fisher F-Distribution
    • 27  Exponential Distribution
    • 28  Lognormal Distribution
    • 29  Gamma Distribution
    • 30  Beta Distribution
    • 31  Weibull Distribution
    • 32  Pareto Distribution
    • 33  Inverse Gamma Distribution
    • 34  Rayleigh Distribution
    • 35  Erlang Distribution
    • 36  Logistic Distribution
    • 37  Laplace Distribution
    • 38  Gumbel Distribution
    • 39  Cauchy Distribution
    • 40  Triangular Distribution
    • 41  Power Distribution
    • 42  Beta Prime Distribution
    • 43  Sample Correlation Distribution
    • 44  Dirichlet Distribution
    • 45  Generalized Extreme Value (GEV) Distribution
    • 46  Frechet Distribution
    • 47  Noncentral t Distribution
    • 48  Noncentral F Distribution
    • 49  Inverse Chi-Squared Distribution
    • 50  Maxwell-Boltzmann Distribution
    • 51  Distribution Relationship Map

    • 52  Problems
  • Descriptive Statistics & Exploratory Data Analysis
    • 53  Types of Data
    • 54  Datasheets

    • 55  Frequency Plot (Bar Plot)
    • 56  Frequency Table
    • 57  Contingency Table
    • 58  Binomial Classification Metrics
    • 59  Confusion Matrix
    • 60  ROC Analysis

    • 61  Stem-and-Leaf Plot
    • 62  Histogram
    • 63  Data Quality Forensics
    • 64  Quantiles
    • 65  Central Tendency
    • 66  Variability
    • 67  Skewness & Kurtosis
    • 68  Concentration
    • 69  Notched Boxplot
    • 70  Scatterplot
    • 71  Pearson Correlation
    • 72  Rank Correlation
    • 73  Partial Pearson Correlation
    • 74  Simple Linear Regression
    • 75  Moments
    • 76  Quantile-Quantile Plot (QQ Plot)
    • 77  Normal Probability Plot
    • 78  Probability Plot Correlation Coefficient Plot (PPCC Plot)
    • 79  Box-Cox Normality Plot
    • 80  Kernel Density Estimation
    • 81  Bivariate Kernel Density Plot
    • 82  Conditional EDA: Panel Diagnostics
    • 83  Bootstrap Plot (Central Tendency)
    • 84  Survey Scores Rank Order Comparison
    • 85  Cronbach Alpha

    • 86  Equi-distant Time Series
    • 87  Time Series Plot (Run Sequence Plot)
    • 88  Mean Plot
    • 89  Blocked Bootstrap Plot (Central Tendency)
    • 90  Standard Deviation-Mean Plot
    • 91  Variance Reduction Matrix
    • 92  (Partial) Autocorrelation Function
    • 93  Periodogram & Cumulative Periodogram

    • 94  Problems
  • Hypothesis Testing
    • 95  Normal Distributions revisited
    • 96  The Population
    • 97  The Sample
    • 98  The One-Sided Hypothesis Test
    • 99  The Two-Sided Hypothesis Test
    • 100  When to use a one-sided or two-sided test?
    • 101  What if \(\sigma\) is unknown?
    • 102  The Central Limit Theorem (revisited)
    • 103  Statistical Test of the Population Mean with known Variance
    • 104  Statistical Test of the Population Mean with unknown Variance
    • 105  Statistical Test of the Variance
    • 106  Statistical Test of the Population Proportion
    • 107  Statistical Test of the Standard Deviation \(\sigma\)
    • 108  Statistical Test of the difference between Means -- Independent/Unpaired Samples
    • 109  Statistical Test of the difference between Means -- Dependent/Paired Samples
    • 110  Statistical Test of the difference between Variances -- Independent/Unpaired Samples

    • 111  Hypothesis Testing for Research Purposes
    • 112  Decision Thresholds, Alpha, and Confidence Levels
    • 113  Bayesian Inference for Decision-Making
    • 114  One Sample t-Test
    • 115  Skewness & Kurtosis Tests
    • 116  Paired Two Sample t-Test
    • 117  Wilcoxon Signed-Rank Test
    • 118  Unpaired Two Sample t-Test
    • 119  Unpaired Two Sample Welch Test
    • 120  Two One-Sided Tests (TOST) for Equivalence
    • 121  Mann-Whitney U test (Wilcoxon Rank-Sum Test)
    • 122  Bayesian Two Sample Test
    • 123  Median Test based on Notched Boxplots
    • 124  Chi-Squared Tests for Count Data
    • 125  Kolmogorov-Smirnov Test
    • 126  One Way Analysis of Variance (1-way ANOVA)
    • 127  Kruskal-Wallis Test
    • 128  Two Way Analysis of Variance (2-way ANOVA)
    • 129  Repeated Measures ANOVA
    • 130  Friedman Test
    • 131  Testing Correlations
    • 132  A Note on Causality

    • 133  Problems
  • Regression Models
    • 134  Simple Linear Regression Model (SLRM)
    • 135  Multiple Linear Regression Model (MLRM)
    • 136  Logistic Regression
    • 137  Generalized Linear Models
    • 138  Multinomial and Ordinal Logistic Regression
    • 139  Cox Proportional Hazards Regression
    • 140  Conditional Inference Trees
    • 141  Leaf Diagnostics for Conditional Inference Trees
    • 142  Conditional Random Forests
    • 143  Hypothesis Testing with Linear Regression Models (from a Practical Point of View)

    • 144  Problems
  • Introduction to Time Series Analysis
    • 145  Case: the Market of Health and Personal Care Products
    • 146  Decomposition of Time Series
    • 147  Ad hoc Forecasting of Time Series
  • Box-Jenkins Analysis
    • 148  Introduction to Box-Jenkins Analysis
    • 149  Theoretical Concepts
    • 150  Stationarity
    • 151  Identifying ARMA parameters
    • 152  Estimating ARMA Parameters and Residual Diagnostics
    • 153  Forecasting with ARIMA models
    • 154  Intervention Analysis
    • 155  Cross-Correlation Function
    • 156  Transfer Function Noise Models
    • 157  General-to-Specific Modeling
  • Model Building Strategies
    • 158  Introduction to Model Building Strategies
    • 159  Manual Model Building
    • 160  Model Validation
    • 161  Regularization Methods
    • 162  Hyperparameter Optimization Strategies
    • 163  Guided Model Building in Practice
    • 164  Diagnostics, Revision, and Guided Forecasting
    • 165  Leakage, Target Encoding, and Robust Regression
  • References
  • Appendices
    • Appendices
    • A  Method Selection Guide
    • B  Presentations and Teaching Materials
    • C  R Language Concepts for Statistical Computing
    • D  Matrix Algebra
    • E  Standard Normal Table (Gaussian Table)
    • F  Critical values of Student’s \(t\) distribution with \(\nu\) degrees of freedom
    • G  Upper-tail critical values of the \(\chi^2\)-distribution with \(\nu\) degrees of freedom
    • H  Lower-tail critical values of the \(\chi^2\)-distribution with \(\nu\) degrees of freedom

Table of contents

  • 146.1 Classical Decomposition of Time Series by Moving Averages
    • 146.1.1 Model
    • 146.1.2 Analysis
    • 146.1.3 Interpretation
    • 146.1.4 Conclusion
    • 146.1.5 Assignment
  • 146.2 Seasonal Decomposition of Time Series by Loess
    • 146.2.1 Model reference
    • 146.2.2 Analysis
    • 146.2.3 Assignment
  1. Introduction to Time Series Analysis
  2. 146  Decomposition of Time Series

146  Decomposition of Time Series

The decomposition of a time series may provide insight into the relative importance of the long-run trend and seasonality. The production manager may be interested in the seasonal component because it shows how the total variance of sales depends on seasonal fluctuations. If the rate of production is nearly constant and if it is necessary to deliver goods on demand (retailers don’t want to keep a large inventory) then it is obvious that the company needs to stock overproduction (in months with low demand) to meet the orders in months with high demand (and insufficient production capacity).

The variance of the seasonal component may be an important factor that determines the size of inventory (at least if we assume a constant market share). The behavior of trends and business cycles on the other hand, may be important factors in making strategic decisions on the medium or long run.

146.1 Classical Decomposition of Time Series by Moving Averages

146.1.1 Model

Classical decomposition of time series can be performed by Moving Averages. The definitions of Moving Averages are treated in more detail at a later stage. For now it is sufficient to define:

  • the time series under investigation as \(Y_t\)
  • the long-run trend as \(L_t\)
  • the seasonal component as \(S_t\)
  • and the error as \(e_t\)

Now the additive model can be written as \(Y_t = L_t + S_t + e_t\) for \(t=1, 2, …, T\) and the multiplicative model as \(Y_t = L_t \cdot S_t \cdot e_t\) for \(t=1, 2, …, T\).

Interactive Shiny app (click to load).
Open in new tab

146.1.2 Analysis

The HPC time series was analyzed by the R module named “Classical Decomposition” which is available online:

  • https://shiny.wessa.net/decomposition/
  • RFC menu item Time Series / Decomposition

The result of the additive, classical decomposition analysis clearly shows that a positive trend is present. In addition, a strong seasonal component (showing a distinctive, regular pattern) is present which leads us to believe that it should be possible to generate predictions about the time series based on historical information.

A detailed look at the y-axes of the plots reveals that the trend component is much more important than seasonality.

146.1.3 Interpretation

A much better way to identify the previously mentioned properties is to make use of the Autocorrelation Function (ACF). The ACF of the Classical Decomposition can be obtained by changing the setting in the Type of Plot selection list and shows some remarkable features. For background on interpreting these diagnostics, see the (P)ACF chapter (PACF.qmd) and the periodogram chapter (Chapter 93):

  • The trend component exhibits a slowly (linearly) decreasing series of autocorrelation coefficients. This is the typical pattern for a long-run trend1.
  • The seasonal component shows persistent (non-decaying) positive autocorrelation spikes at time lags \(k = 12, 24, 36, \ldots\). This is the typical pattern of strong deterministic seasonality.
  • Finally, the error component2 displayed in the Figure shows a (regular) series of non-zero autocorrelations (significant at the 5% type I error level). This is important because it implies that the prediction errors of the Classical Decomposition model are not independent (they are in fact autocorrelated). In other words: past prediction errors contain systematic information that can be used to predict future prediction errors - hence, they can also be used to improve the forecasts of the time series.

Of course, we can also compute the periodogram or cumulative periodogram to examine the components of the decomposition. The bottom line, however, is always the same and leads to identical conclusions.

146.1.4 Conclusion

There are two conclusions from this analysis:

  • A forecasting model that is based only on Moving Averages is incomplete and should be used with caution.
  • The model clearly indicates the presence of a long-run trend and a strongly seasonal pattern that can be predicted (but we need a more sophisticated model).

If you prefer to compute the Classical Decomposition on your local machine, the following script can be used in the R console:

Note: the local script below uses AirPassengers as a generic template dataset. The embedded app and chapter interpretation use the HPC series, so numeric outputs will differ unless you replace x with the HPC data.

x <- AirPassengers
par1 = 'additive' #Type of Seasonality 
par2 = 12 #Seasonal Period 
x <- ts(x, frequency = par2)
m <- decompose(x,type=par1)
plot(m)

mylagmax <- length(x)/2
op <- par(mfrow = c(2,2))
acf(as.numeric(x),lag.max = mylagmax,main='Observed')
acf(as.numeric(m$trend),na.action=na.pass,lag.max = mylagmax,main='Trend')
acf(as.numeric(m$seasonal),na.action=na.pass,lag.max = mylagmax,main='Seasonal')
acf(as.numeric(m$random),na.action=na.pass,lag.max = mylagmax,main='Random')

par(op)
op <- par(mfrow = c(2,2))
spectrum(as.numeric(x),main='Observed')
spectrum(as.numeric(m$trend[!is.na(m$trend)]),main='Trend')
spectrum(as.numeric(m$seasonal[!is.na(m$seasonal)]),main='Seasonal')
spectrum(as.numeric(m$random[!is.na(m$random)]),main='Random')

par(op)
op <- par(mfrow = c(2,2))
cpgram(as.numeric(x),main='Observed')
cpgram(as.numeric(m$trend[!is.na(m$trend)]),main='Trend')
cpgram(as.numeric(m$seasonal[!is.na(m$seasonal)]),main='Seasonal')
cpgram(as.numeric(m$random[!is.na(m$random)]),main='Random')

par(op)

146.1.5 Assignment

Compare the additive and multiplicative models:

  • Which model is better?
  • When would you (theoretically) expect a large difference between the additive and multiplicative model3
  • Apply additive and multiplicative decomposition to the Airline time series to empirically verify the theoretical answer4.

146.2 Seasonal Decomposition of Time Series by Loess

146.2.1 Model reference

Seasonal Decomposition by Loess is more sophisticated than the previous method and is described in full detail in Cleveland et al. (1990).

Interactive Shiny app (click to load).
Open in new tab

146.2.2 Analysis

The HPC time series was analyzed by the R module “Decomposition by Loess” which is available on-line:

  • https://shiny.wessa.net/decomposition/
  • RFC menu item Time Series / Decomposition

Based on the default parameters, the Decomposition by Loess analysis clearly confirms the positive long-run trend. Similarly, the seasonal component shows a distinctive, regular pattern just like in the previous model.

If you prefer to compute the Seasonal Loess Decomposition on your local machine, the following script can be used in the R console:

Note: the local script below uses AirPassengers as a generic template dataset. The embedded app and chapter interpretation use the HPC series, so numeric outputs will differ unless you replace x with the HPC data.

x <- AirPassengers
par1 = 12 #Seasonal period
par2 = 'periodic' #Seasonal window
par3 = 0 #Seasonal degree
par4 = NULL #Trend window
par5 = 1 #Trend degree
par6 = '' #Low-pass window
par7 = 1 #Low-pass degree
par8 = FALSE #Robust loess fitting
main = 'Seasonal Decomposition by Loess'
nx <- length(x)
x <- ts(x,frequency=par1)
if (par6 != '') {
  m <- stl(x,s.window=par2, s.degree=par3, t.window=par4, t.degree=par5, l.window=par6, l.degree=par7, robust=par8)
} else {
  m <- stl(x,s.window=par2, s.degree=par3, t.window=par4, t.degree=par5, l.degree=par7, robust=par8)
}
plot(m,main=main)

mylagmax <- nx/2
op <- par(mfrow = c(2,2))
acf(as.numeric(x),lag.max = mylagmax,main='Observed')
acf(as.numeric(m$time.series[,'trend']),na.action=na.pass,lag.max = mylagmax,main='Trend')
acf(as.numeric(m$time.series[,'seasonal']),na.action=na.pass,lag.max = mylagmax,main='Seasonal')
acf(as.numeric(m$time.series[,'remainder']),na.action=na.pass,lag.max = mylagmax,main='Remainder')

par(op)
op <- par(mfrow = c(2,2))
spectrum(as.numeric(x),main='Observed')
spectrum(as.numeric(m$time.series[!is.na(m$time.series[,'trend']),'trend']),main='Trend')
spectrum(as.numeric(m$time.series[!is.na(m$time.series[,'seasonal']),'seasonal']),main='Seasonal')
spectrum(as.numeric(m$time.series[!is.na(m$time.series[,'remainder']),'remainder']),main='Remainder')

par(op)
op <- par(mfrow = c(2,2))
cpgram(as.numeric(x),main='Observed')
cpgram(as.numeric(m$time.series[!is.na(m$time.series[,'trend']),'trend']),main='Trend')
cpgram(as.numeric(m$time.series[!is.na(m$time.series[,'seasonal']),'seasonal']),main='Seasonal')
cpgram(as.numeric(m$time.series[!is.na(m$time.series[,'remainder']),'remainder']),main='Remainder')

par(op)

146.2.3 Assignment

Compare the analysis of Classical Decomposition and Seasonal Decomposition by Loess. Answer the following questions for both methods:

  • Is the trend component more important than the seasonal?
  • Describe the typical pattern of the Autocorrelation Function for all components
  • Interpret and describe the autocorrelation plots in your own words
  • Is the second (that is, more sophisticated) method doing a better job5?
Cleveland, Robert B, William S Cleveland, Jean E McRae, and Irma Terpenning. 1990. “STL: A Seasonal-Trend Decomposition Procedure Based on Loess.” Journal of Official Statistics 6 (1): 3–73.

  1. It does not matter if the trend is positive or negative - the ACF pattern is the same in both cases.↩︎

  2. In the R module this is called the “random” term.↩︎

  3. Hint: think about how the seasonal pattern may become stronger (on the long run) as the number of consumers in the HPC market grows. In other words, there may be a relationship between the long-run trend and the seasonal component. This question is also closely related to the concept of heteroskedasticity (for a formal treatment, see Chapter 143).↩︎

  4. The Airline Passenger time series is - unlike the HPC time series - characterized by the fact that seasonality becomes stronger as the level of Airline passengers grows. There is a direct relationship between trend and seasonality which is a special case of heteroskedasticity.↩︎

  5. Hint: the words “random” and “remainder” both relate to the prediction error (they are synonyms).↩︎

145  Case: the Market of Health and Personal Care Products
147  Ad hoc Forecasting of Time Series

© 2026 Patrick Wessa. Provided as-is, without warranty.

Feedback: e-mail | Anonymous contributions: click to copy (Sats) | click to copy (XMR)

Cookie Preferences