This function helps to construct a formula object that can be used in a call to hhh4 to model seasonal variation via a sum of sine and cosine terms.

addSeason2formula(f = ~1, S = 1, period = 52, timevar = "t")



formula that the seasonal terms should be added to, defaults to an intercept ~1.


number of sine and cosine terms. If S is a vector, unit-specific seasonal terms are created.


period of the season, defaults to 52 for weekly data.


the time variable in the model. Defaults to "t".


The function adds the seasonal terms $$ \sum_{s=1}^\code{S} \gamma_s \sin(\frac{2\pi s}{\code{period}} t) +\delta_s \cos(\frac{2\pi s}{\code{period}} t), $$ where \(\gamma_s\) and \(\delta_s\) are the unknown parameters and \(t\), \(t = 1, 2, \ldots\) denotes the time variable timevar, to an existing formula f.

Note that the seasonal terms can also be expressed as $$\gamma_{s} \sin(\frac{2\pi s}{\code{period}} t) + \delta_{s} \cos(\frac{2\pi s}{\code{period}} t) = A_s \sin(\frac{2\pi s}{\code{period}} t + \epsilon_s)$$ with amplitude \(A_s=\sqrt{\gamma_s^2 +\delta_s^2}\) and phase shift \(\tan(\epsilon_s) = \delta_s / \gamma_s\). The amplitude and phase shift can be obtained from a fitted hhh4 model via coef(..., amplitudeShift = TRUE), see coef.hhh4.


Returns a formula with the seasonal terms added and its environment set to .GlobalEnv. Note that to use the resulting formula in hhh4, a time variable named as specified by the argument timevar must be available.


M. Paul, with contributions by S. Meyer

See also


# add 2 sine/cosine terms to a model with intercept and linear trend
addSeason2formula(f = ~ 1 + t, S = 2)

# the same for monthly data
addSeason2formula(f = ~ 1 + t, S = 2, period = 12)

# different number of seasons for a bivariate time series
addSeason2formula(f = ~ 1, S = c(3, 1), period = 52)