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")

Arguments

f

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

S

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

period

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

timevar

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

Details

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.

Value

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.

Author

M. Paul, with contributions by S. Meyer

See also

Examples

# 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)