4

How do I find an $h$-step prediction interval (forecast interval) for a zero-mean ARMA(p,q) process $$ x_t = \varphi_1 x_{t-1} + \dots + \varphi_p x_{t-p} + \varepsilon_t + \theta_1\varepsilon_{t-1} + \dots + \theta_q\varepsilon_{t-q} \ ? $$

Richard Hardy
  • 54,375
  • 10
  • 95
  • 219
  • For the case of multistep ARMA-GARCH forecasting (point and interval), see [this thread](https://stats.stackexchange.com/questions/352654/how-to-make-h-step-interval-forecasts-from-an-arma-garch-model). – Richard Hardy Oct 11 '18 at 19:46
  • Please, see this link in which there is a similar question https://stats.stackexchange.com/questions/419313/estimating-prediction-interval-of-arma-process-using-r-forecast-function/419328#419328 – Bert Jul 26 '19 at 15:25
  • @Bert, thanks, I like the question. +1 – Richard Hardy Jul 30 '19 at 13:37

2 Answers2

4

The $h$-step-ahead point forecast, or the predicted conditional mean, is obtained by predicting one step ahead, $$ \hat x_{t+1} = \varphi_1 x_{t} + \dots + \varphi_p x_{t-p+1} + 0 + \theta_1 e_{t} + \theta_2 e_{t-1} + \dots + \theta_q e_{t-q+1}, $$ taking that forecast and plugging it in place of the true value $x_{t+1}$ and iterating such as $$ \hat x_{t+2} = \varphi_1 \hat x_{t+1} + \dots + \varphi_p x_{t-p+2} + 0 + \theta_1\times 0 + \theta_2 e_{t} + \theta_3 e_{t-1} + \dots + \theta_q e_{t-q+2}, $$ until $\hat x_{t+h}$ is reached. Here $e_t$ stands for the estimate of $\varepsilon_t$.


The $h$-step-ahead $(1-\alpha)$-level prediction interval (large sample approximation) is constructed as $$ [ \ \hat x_{t+h} - q_{\alpha/2}(\hat\sigma^2(h)); \ \hat x_{t+h} + q_{1-\alpha/2}(\hat\sigma^2(h)) \ ] $$ where $q_\alpha$ is the $\alpha$-level quantile of the error distribution with variance $\hat\sigma^2(h)$, $$ \hat\sigma^2(h) = \hat\sigma^2\sum_{j=0}^{h-1} \hat\psi_j^2 $$ where $\hat\sigma^2$ is the estimated error variance and $\hat\psi_j$ are the estimated coefficients of a moving-average representation of the ARMA(p,q) process.

Under normally distributed errors, the interval is $$ \hat x_{t+h} \pm z_{\alpha/2}\hat\sigma(h) $$ where $z_\alpha$ is the $\alpha$-level quantile of the N(0,1) distribution.

This derivation ignores parameter estimation uncertainty, so the actual intervals should be wider (recall the qualifier large sample approximation above). The problem diminishes with the sample size, though, and vanishes asymptotically.


(Based on Brockwell and Davis "Introduction to time series and forecasting" (3rd ed., 2016), p. 93-94.)

Keywords: multi-step, multi-period, multistep, multiperiod, multiple step, multiple period, steps ahead, periods ahead, forecast, predict, forecasting, prediction, point, interval, ARMA, ARIMA.

Richard Hardy
  • 54,375
  • 10
  • 95
  • 219
  • Replacing the white noise terms $\epsilon_t,\epsilon_{t-1},...$ by zero is not a good way of computing the forecast. Instead, a better but still approximate methods is to write the model in AR$(\infty)$ form and then computing the forecast based on that the finite history (neglecting the history prior to the first observation). A second exact method is computing the finite history forecast weights via the Durbin-Levinson algorithm. A third exact and computationally efficient method (see `predict.Arima`) is computing the forecast via the Kalman filter applied to model put in state-space form. – Jarle Tufto Oct 11 '18 at 20:01
  • @JarleTufto, Thank you for an informative comment. AFAIK, I am not replacing the past errors by zero. Or am I? Could you point out exactly where this is happening? In any case, a downvote for a solution from a classical textbook? That is a bit harsh, IMHO, but it is your call... (If this was someone else's downvote, then please ignore this.) – Richard Hardy Oct 13 '18 at 07:20
  • Apologies, my mistake. But you don't really explain how to deal with the white noise terms in the formulas for $\hat x_{t+1},...$ that appear when the model has a moving average part (which is why I downvoted). – Jarle Tufto Oct 13 '18 at 13:15
  • @JarleTufto, I am following the standard practice of the point forecast for an ARMA model. The estimated past errors ($e_t$, $e_{t-1}$, ...) are propagated forward via their lags as the MA terms while the expected values of future errors are set to zero. The formulas for $x_{t+1}$ and $x_{t+2}$ hopefully give a clear pattern of how this is done. I see that I have used the notation of theoretical errors $\varepsilon$ in place estimated ones $e$; that is now corrected. Is it fine now? – Richard Hardy Oct 13 '18 at 23:14
  • @JarleTufto, ping... – Richard Hardy Jan 07 '22 at 18:25
-1

Practically it's the easiest to do it with Monte Carlo. I think that's what most people do anyways. You simulate the error term with and collect quantiles of the forecast. In R this can be done with arima.sim.

The quantiles are not so easy to estimate theoretically especially if the series are further combined with other predictions to obtain a composite forecast or when you model a transformed series, but are no brainer in simulation. The quantiles are popularized by BoE in fan charts in inflation report as shown below

enter image description here

Another application of Monte Carlo is for the case when you model correlated time series separately. Suppose, that for some reason you don't want to do a vector model, e.g. for complexity or lack of data. In this case you could still - similar to seemingly unrelated regression (SUR) - get the correlation of residuals of models, then generate correlated innovations and supply them into a command such as arima.sim to obtain correlated predictions

Aksakal
  • 55,939
  • 5
  • 90
  • 176
  • To the contrary, I think that *most people* use built-in fuctions such as `predict.Arima` in the case of R. Since `predict.Arima` does not do Monte Carlo, my conjecture is that most people do not use Monte Carlo. (R is just an example, of course, and there may be other software that has built-in Monte Carlo functionality for ARMA forecasting. Depending on how widespread it is, this could change my opinion.) – Richard Hardy Oct 12 '18 at 06:09
  • @RichardHardy, predict is used often, but in my experience `arima.sim` is more useful, because you can easily obtain quantiles for fan charts or supply it with your own innovations, which is important when your errors are correlated with other series – Aksakal Oct 12 '18 at 11:00