R: Holt-Winters Filtering

HoltWinters {stats} | R Documentation

## Holt-Winters Filtering

### Description

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

### 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] … 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

Yhat[t+h] = a[t] + h * b[t] + s[t - p + 1 + (h - 1) mod p],

where a[t], b[t] and s[t] are given by

a[t] = α (Y[t] - s[t-p]) + (1-α) (a[t-1] + b[t-1])

b[t] = β (a[t] - a[t-1]) + (1-β) b[t-1]

s[t] = γ (Y[t] - a[t]) + (1-γ) s[t-p]

The multiplicative Holt-Winters prediction function (for time series with period length p) is

Yhat[t+h] = (a[t] + h * b[t]) * s[t - p + 1 + (h - 1) mod p],

where a[t], b[t] and s[t] are given by

a[t] = α (Y[t] / s[t-p]) + (1-α) (a[t-1] + b[t-1])

b[t] = β (a[t] - a[t-1]) + (1-β) b[t-1]

s[t] = γ (Y[t] / a[t]) + (1-γ) 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 α and/or β and/or γ 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:

`fitted` | 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).
`x` | The original series
`alpha` | alpha used for filtering
`beta` | beta used for filtering
`gamma` | gamma used for filtering
`coefficients` | A vector with named components `a, b, s1, ..., sp` containing the estimated values for the level, trend and seasonal components
`seasonal` | The specified `seasonal` parameter
`SSE` | The final sum of squared errors achieved in optimizing
`call` | The call used

### Author(s)

David Meyer David.Meyer@wu.ac.at

### 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. doi: 10.1287/mnsc.6.3.324.

### See Also

`predict.HoltWinters`, `optim`.

### Examples

    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)

[Package stats version 3.5.1 Index]