# Holt's linear trend method

Holt (1957) extended simple exponential smoothing to allow forecasting of data with a trend. This method involves a forecast equation and two smoothing equations (one for the level and one for the trend):

where $\ell_t$ denotes an estimate of the level of the series at time $t$, $b_t$ denotes an estimate of the trend (slope) of the series at time $t$, $\alpha$ is the smoothing parameter for the level, $0\le\alpha\le1$ and $\beta^*$ is the smoothing parameter for the trend, $0\le\beta^*\le1$ (we denote this as $\beta^*$ instead of $\beta$ for reasons that will be explained in Section 7/7).

As with simple exponential smoothing, the level equation here shows that $\ell_t$ is a weighted average of observation $y_t$ and the within-sample one-step-ahead forecast for time $t$, here given by $\ell_{t-1} + b_{t-1}$. The trend equation shows that $b_t$ is a weighted average of the estimated trend at time $t$ based on $\ell_{t} - \ell_{t-1}$ and $b_{t-1}$, the previous estimate of the trend.

The forecast function is no longer flat but trending. The $h$-step-ahead forecast is equal to the last estimated level plus $h$ times the last estimated trend value. Hence the forecasts are a linear function of $h$.

The error correction form of the level and the trend equations show the adjustments in terms of the within-sample one-step forecast errors:

where $e_t=y_{t} -(\ell_{t-1} + b_{t-1})=y_{t}-\pred{y}{t}{t-1}$.

## Example 7.2 Air Passengers

In Table 7.3 we demonstrate the application of Holt’s linear method to air transportation data for all passengers with an Australian airline. To initialise the method we set $\ell_0 = y_1$ and $b_0 = y_2 - y_1$ as suggested in Table 7.9. Alternatively we could fit a linear trend to the first few observations (see Section 4/8) and use the estimates of the intercept and the slope as the initial values for the level and the trend respectively.

For demonstration purposes the smoothing parameters are set to $\alpha=0.8$ and $\beta^*=0.2$. Otherwise, the smoothing parameters together with the initial values could be estimated by minimizing the SSE for the within-sample one-step forecast errors as in Section 7/1.

Year | t |
y_{t} |
ℓ_{t} |
b_{t} |
ŷ_{t} |
ℓ_{t} |
b_{t} |
ŷ_{t} |
---|---|---|---|---|---|---|---|---|

1989 | 0 | 17.55 | 4.31 | 17.55 | 1.25 | |||

1990 | 1 | 17.55 | 18.41 | 3.62 | 21.86 | 18.41 | 1.21 | 21.86 |

1991 | 2 | 21.86 | 21.89 | 3.59 | 22.03 | 21.93 | 1.20 | 22.21 |

1992 | 3 | 23.89 | 24.21 | 3.33 | 25.48 | 24.39 | 1.18 | 26.38 |

1993 | 4 | 26.93 | 27.05 | 3.24 | 27.54 | 27.32 | 1.17 | 28.89 |

1994 | 5 | 26.89 | 27.57 | 2.69 | 30.29 | 27.91 | 1.14 | 32.02 |

1995 | 6 | 28.83 | 29.12 | 2.46 | 30.26 | 29.44 | 1.12 | 31.88 |

1996 | 7 | 30.08 | 30.38 | 2.22 | 31.58 | 30.68 | 1.11 | 33.10 |

1997 | 8 | 30.95 | 31.28 | 1.96 | 32.60 | 31.56 | 1.09 | 33.99 |

1998 | 9 | 30.19 | 30.80 | 1.47 | 33.24 | 31.04 | 1.07 | 34.47 |

1999 | 10 | 31.58 | 31.72 | 1.36 | 32.27 | 31.91 | 1.06 | 33.23 |

2000 | 11 | 32.58 | 32.68 | 1.28 | 33.08 | 32.84 | 1.06 | 33.89 |

2001 | 12 | 33.48 | 33.57 | 1.20 | 33.96 | 33.71 | 1.05 | 34.66 |

2002 | 13 | 39.02 | 38.17 | 1.88 | 34.78 | 38.29 | 1.07 | 35.39 |

2003 | 14 | 41.39 | 41.12 | 2.10 | 40.06 | 41.28 | 1.07 | 40.86 |

2004 | 15 | 41.60 | 41.92 | 1.84 | 43.22 | 42.10 | 1.06 | 44.13 |

h |
ŷ_{T+h} |
T |
|ŷ_{T+h|T} |
|||||

2005 | 1 | 43.76 | 44.60 | |||||

2006 | 2 | 45.59 | 47.24 | |||||

2007 | 3 | 47.43 | 50.04 | |||||

2008 | 4 | 49.27 | 53.01 | |||||

2009 | 5 | 51.10 | 56.15 |

fit1 <- holt(air, alpha=0.8, beta=0.2, initial="simple", h=5)

fit2 <- holt(air, alpha=0.8, beta=0.2, initial="simple", exponential=TRUE, h=5)

# Results for first model:

fit1\$model\$state

fitted(fit1)

fit1$mean

plot(fit2, type="o", ylab="Air passengers in Australia (millions)", xlab="Year",

fcol="white", plot.conf=FALSE)

lines(fitted(fit1), col="blue")

lines(fitted(fit2), col="red")

lines(fitted(fit3), col="green")

lines(fit1$mean, col="blue", type="o")

lines(fit2$mean, col="red", type="o")

lines(fit3$mean, col="green", type="o")

legend("topleft", lty=1, col=c("black","blue","red","green"),

c("Data","Holt's linear trend","Exponential trend","Additive damped trend"))