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
parameterx
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]
.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