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())
ts
FALSE
, 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
.<testonly>od <- options(digits = 5)</testonly>
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)
<testonly>options(od)</testonly>
Run the code above in your browser using DataLab