HoltWinters(x, alpha = NULL, beta = NULL, gamma = NULL, seasonal = c("additive", "multiplicative"), start.periods = 2, l.start = NULL, b.start = NULL, s.start = NULL, optim.start = c(alpha = 0.3, beta = 0.1, gamma = 0.1), optim.control = list())tsFALSE, the function will do exponential smoothing.FALSE, an non-seasonal model is fitted."additive"
(the default) or "multiplicative" seasonal model. The first
few characters are sufficient. (Only takes effect if
gamma is non-zero).alpha,
beta, and gamma containing the starting values for the
optimizer. Only the values needed must be specified. Ignored in the
one-parameter case.optim if this is used. Ignored in the
one-parameter case."HoltWinters", a list with components:
a, b, s1, ..., sp
containing the estimated values for the level, trend and seasonal
componentsseasonal parameter The multiplicative Holt-Winters prediction function (for time series
with period length p) is
$$\hat Y[t+h] = (a[t] + h b[t]) \times s[t - p + 1 + (h - 1) \bmod p].$$
where $a[t]$, $b[t]$ and $s[t]$ are given by
$$a[t] = \alpha (Y[t] / s[t-p]) + (1-\alpha) (a[t-1] + b[t-1])$$
$$b[t] = \beta (a[t] - a[t-1]) + (1-\beta) b[t-1]$$
$$s[t] = \gamma (Y[t] / a[t]) + (1-\gamma) s[t-p]$$
The data in x are required to be non-zero for a multiplicative
model, but it makes most sense if they are all positive.
The function tries to find the optimal values of $\alpha$ and/or
$\beta$ and/or $\gamma$ by minimizing the squared one-step
prediction error if they are NULL (the default). optimize
will be used for the single-parameter case, and optim otherwise.
For seasonal models, start values for a, b and s
are inferred by performing a simple decomposition in trend and
seasonal component using moving averages (see function
decompose) on the start.periods first periods (a simple
linear regression on the trend component is used for starting level
and trend). For level/trend-models (no seasonal component), start
values for a and b are x[2] and x[2] -
x[1], respectively. For level-only models (ordinary exponential
smoothing), the start value for a is x[1].
P. R. Winters (1960) Forecasting sales by exponentially weighted moving averages, Management Science 6, 324--342.
predict.HoltWinters, optim.
require(graphics)
## Seasonal Holt-Winters
(m <- HoltWinters(co2))
plot(m)
plot(fitted(m))
(m <- HoltWinters(AirPassengers, seasonal = "mult"))
plot(m)
## Non-Seasonal Holt-Winters
x <- uspop + rnorm(uspop, sd = 5)
m <- HoltWinters(x, gamma = FALSE)
plot(m)
## Exponential Smoothing
m2 <- HoltWinters(x, gamma = FALSE, beta = FALSE)
lines(fitted(m2)[,1], col = 3)
Run the code above in your browser using DataLab