There are additional concepts of additivity and multiplicativity for
- trend (
trend{“add”, “mul”, “additive”, “multiplicative”, None}) and - seasonality (
seasonal{“add”, “mul”, “additive”, “multiplicative”, None})
in the Statsmodels implementation [1, 2] of the Triple Exponential Smoothing (Holt-Winter's Method).
Actually, this means different methods of calculating the initializing values of seasonality and trend correspondingly (according to source code):
m = self.seasonal_periods
l0 = initial_level
b0 = initial_trend
if has_seasonal:
l0 = y[np.arange(self.nobs) % m == 0].mean() if l0 is None else l0
if b0 is None and has_trend:
# TODO: Fix for short m
lead, lag = y[m : m + m], y[:m]
if trend == "mul":
b0 = np.exp((np.log(lead.mean()) - np.log(lag.mean())) / m)
else:
b0 = ((lead - lag) / m).mean()
s0 = list(y[:m] / l0) if seasonal == "mul" else list(y[:m] - l0)
elif has_trend:
l0 = y[0] if l0 is None else l0
if b0 is None:
b0 = y[1] / y[0] if trend == "mul" else y[1] - y[0]
s0 = []
else:
if l0 is None:
l0 = y[0]
b0 = None
s0 = []
In other words, when there is seasonality
- the initial additive trend will be:
$$ b_0 = \frac{1}{N} \sum^{N}_{i=0} \frac{y_{i+m} - y_i}{m}$$
- the initial multiplicative trend will be:
$$ b_0 = \frac{ \ln \left( {\frac{1}{m}\sum^{m}_{i=0}y_{i+m}} \right) - \ln \left({\frac{1}{m}\sum^{m}_{i=0}y_{i}} \right)}{m} $$
where $m$ is the length of the one period, and $\mathbf{y}$ is the input vector (time series).
When there is no seasonality
- the initial additive trend will be:
$$ b_0 = y_1 - y_0 $$
- the initial multiplicative level will be:
$$ \ln(b_0) = \ln(y_1) - \ln(y_0) $$
The zero value of the seasonality (zero period) for its additive or multiplicative form is defined as the difference or ratio between the first m samples and the zero value of the level, respectively.
AND this is NEITHER a classical additive/multiplicative decomposition or additive/multiplicative Exponential smoothing as I understand. Moreover, trend and seasonality can be additive or multiplicative independently of each other in Statsmodels.
So, the questions:
- Does somebody have got any reference about the right selection of the values of the parameters?
- Can anybody explain for what cases these parameters should be used?
I'll be appreciated your replies!
References: