enter image description here The above time series plot is a daily closing stock index of a company. I want to know which model between additive and multiplicative best suits the above data. I know what the two models are, but i haven't been able to figure out the correct model for the above data. Also, is there any way other than simple visualisation which can help me decide the correct model?

  • $\begingroup$ With "best model" you only refer to the accuracy of the forecast, right? $\endgroup$
    – Leevo
    Mar 9, 2020 at 8:17

5 Answers 5


I want to know which model between additive and multiplicative best suits the above data.

It is hard to tell just by looking at it.

A multiplicative decomposition roughly corresponds to an additive decomposition of the logarithms. The additive decomposition is the most appropriate if the magnitude of the seasonal fluctuations, or the variation around the trend-cycle, does not vary with the level of the time series. When the variation in the seasonal pattern, or the variation around the trend-cycle, appears to be proportional to the level of the time series, then a multiplicative decomposition is more appropriate. Multiplicative decompositions are common with economic time series.

An alternative to using a multiplicative decomposition is to first transform the data until the variation in the series appears to be stable over time, then use an additive decomposition. So, basically you need to check for heteroskedasticity, eliminate that if it is there by transformations and do an additive decomposition of the transformed series.

Most common transformations are log or square root of the series and are special cases of Power transform.

Reference: Forecasting principles and practice

  • $\begingroup$ In which way are you going to transform the data until the variation appears to be stable? Just asking as I'm trying to learn these days. $\endgroup$ May 23, 2020 at 13:49
  1. Calculate one day returns.
  2. Plot histogram of daily returns.
  3. Calculate $log(\frac{price_{i+1}}{price_i})$.
  4. Plot histogram of above logarithm.
  5. If second plot is more likely to be normally distributed then choose multiplicative model. Else, choose additive model.

You can also perform statistical test for normal distribution and check, which one has higher p-value.


Additive model is used when the variance of the time series doesn't change over different values of the time series.

On the other hand, if the variance is higher when the time series is higher then it often means we should use a multiplicative models.

Additive model:

$return_i = price_i-price_{i-1}=trend_i-trend_{i-1}+seasonal_i-seasonal_{i-1}+error_i-error_{i-1}$

If error's increments have normal iid distributions then $return_i$ has also a normal distribution with constant variance over time.

Multiplicative model:

If log of the time series is an additive model then the original time series is a multiplicative model, because:

$log(price_i)=log(trend_i \cdot seasonal_i \cdot error_i)=log(trend_i)+log(seasonal_i)+log(error_i)$

So the return of logarithms:

$log(price_i)-log(price_{i-1})= log(\frac{price_i}{price_{i-1}})$

must be normal with constant variance.

  • $\begingroup$ Could you please explain the logic behind the algorithm? $\endgroup$
    – Jor_El
    Feb 25, 2019 at 16:03
  • $\begingroup$ I've added some explanations in my post above. $\endgroup$ Feb 25, 2019 at 17:39

To determine whether a time series is additive or multiplicative, we can use seasonal_decompose which provides us three separate components (trend, seasonality, and residual). We can check the variance of seasonality and residual components for additive and multiplicative decompose. The seasonality and residual components with constant variance represent the time series well.

from statsmodels.tsa.seasonal import seasonal_decompose
# Multiplicative Decomposition
mul_decompose = seasonal_decompose(df['value'], model='multiplicative', extrapolate_trend='freq')
# Additive Decomposition
add_decompose = seasonal_decompose(df['value'], model='additive', extrapolate_trend='freq')

enter image description here

Using this image we can very clearly observe variance of seasonality, and the residual component is constant for multiplicative decompose. So the time series is a multiplicative time series.

  • $\begingroup$ Both plots look similar to me! $\endgroup$
    – Yahya
    Feb 11, 2023 at 1:20

The easiest way to identify if a timeseries is additive or multiplicative will be decomposition. Also it depends on which kind of additivity and multiplicativity you are looking for ? is it trend or seasonal ?

Below steps to be followed: 1) Decompose the time series using stl() or decompose() functions in R 2) Look seasonality component(if looking for seasonal additive/multiplicative) or trend(if looking for trend additive/multiplicative). 3) IF the variance in the graph is constant through out from central line then its additive else multiplicative.

Simple.. isn't it? ..... :) Hope this will help.


Gain method given above which plot the histogram for gain and conclude whether it is additive or multiplicative is flawed for the following.

Consider the following case which is x*sinx which is clearly a multiplicative model. enter image description here

but when I plot histogram of the gain without taking any log, it turns out to be normal which suggest additive model which is wrong.

enter image description here

The better thing is to check the variance over time. If it is increasing over time then underlying model may be is multiplicative but if it is constant then it surely an additive model


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.