# HoltWinters

##### Holt-Winters Filtering

Computes Holt-Winters Filtering of a given time series. Unknown parameters are determined by minimizing the squared prediction error.

- Keywords
- ts

##### Usage

```
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())
```

##### Arguments

- x
An object of class

`ts`

- alpha
\(alpha\) parameter of Holt-Winters Filter.

- beta
\(beta\) parameter of Holt-Winters Filter. If set to

`FALSE`

, the function will do exponential smoothing.- gamma
\(gamma\) parameter used for the seasonal component. If set to

`FALSE`

, an non-seasonal model is fitted.- seasonal
Character string to select an

`"additive"`

(the default) or`"multiplicative"`

seasonal model. The first few characters are sufficient. (Only takes effect if`gamma`

is non-zero).- start.periods
Start periods used in the autodetection of start values. Must be at least 2.

- l.start
Start value for level (a[0]).

- b.start
Start value for trend (b[0]).

- s.start
Vector of start values for the seasonal component (\(s_1[0] \ldots s_p[0]\))

- optim.start
Vector with named components

`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.control
Optional list with additional control parameters passed to

`optim`

if this is used. Ignored in the one-parameter case.

##### Details

The additive Holt-Winters prediction function (for time series with period length p) is $$\hat Y[t+h] = a[t] + h b[t] + 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 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]`

.

##### Value

An object of class `"HoltWinters"`

, a list with components:

A multiple time series with one column for the filtered series as well as for the level, trend and seasonal components, estimated contemporaneously (that is at time t and not at the end of the series).

The original series

alpha used for filtering

beta used for filtering

gamma used for filtering

A vector with named components `a, b, s1, ..., sp`

containing the estimated values for the level, trend and seasonal
components

The specified `seasonal`

parameter

The final sum of squared errors achieved in optimizing

The call used

##### References

C. C. Holt (1957)
Forecasting seasonals and trends by exponentially weighted moving averages,
*ONR Research Memorandum, Carnegie Institute of Technology* **52**.
(reprint at http://dx.doi.org/10.1016/j.ijforecast.2003.09.015).

P. R. Winters (1960).
Forecasting sales by exponentially weighted moving averages.
*Management Science*, **6**, 324--342.
10.1287/mnsc.6.3.324.

##### See Also

##### Examples

`library(stats)`

```
# NOT RUN {
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)
# }
```

*Documentation reproduced from package stats, version 3.5.2, License: Part of R 3.5.2*