6
$\begingroup$

Hi I have two questions that are related.

I am wanting to model sales for different areas in a business and have been looking at ARIMA, I am not too happy with the results of this especially when I look very far into the future.

Instead I am now looking at doing a drift method and also mixing a drift method with a seasonal naive forecast where I think there is likely to be seasonality.

Details of the methods are found here: https://en.wikipedia.org/wiki/Forecasting

I am wondering two things:

1) Is it a good idea to mix the two approaches where seasonality is present.

I.e. I use the drift approach but instead of using the latest value $y_T$ I use the last value of $y$ in the same time period. (So to predict August 2018 I will take August 2017 and add the drift term to account for upwards/downwards trend).

2) Say I want to predict the next $12$ months, $\hat{y}_1, \hat{y}_2,...,\hat{y}_{12}$. Should I use the predicted values going forward or is that bad form?

Let me give an example, I use the drift method to predict $\hat{y}_1$ based on actual values of data I already have. Should I use $\hat{y}_1$ to predict $\hat{y}_2$ and then use $\hat{y}_1$ and $\hat{y}_2$ to predict $\hat{y}_3$ and so on?

Hopefully I am clear but if there is any questions let me know and I will get back to you!

$\endgroup$
2
  • $\begingroup$ I'm not experienced with this drift or seasonal methods, but from an inferential point of view I would expect super wide prediction intervals which would render the predictions useless. Have you tried the model and checked it's effenciency using cross validation or similar methods? $\endgroup$
    – dietervdf
    Commented Aug 1, 2018 at 22:22
  • $\begingroup$ Generally, one would like to avoid compounding errors in this fashion, if possible. Using $n+$-period lagged observations could potentiallyallow you to predict $n$ periods in the future $\endgroup$
    – ERT
    Commented Aug 1, 2018 at 22:23

2 Answers 2

10
$\begingroup$

I will answer your questions in reverse order:

2) Your approach is correct. This is called recursive forecasting: Generate a forecast for one step ahead $\hat{y}_{t+1} = f(y_t)$, then use that to generate a forecast for two steps ahead $\hat{y}_{t+2} = f(\hat{y}_{t+1})$, etc...until you have $\hat{y}_{T}$ for your desired $T$ steps ahead. This approach is used by most statistical forecasting models such as ARIMA and Exponential Smoothing. We could say that it is the standard approach.

Another possibility is direct forecasting - where your build a model for forecasting $\hat{y}_T$ directly. This is called direct forecasting, and although theoretically it shows promise, I haven't seen it widely used except sometimes when using neural networks for forecasting. See here for details.

1) You could do that, and it should work (depends on your data obviously), but you would get a similar result using Holt-Winters, STL or Seasonal ARIMA. I suspect you are not applying ARIMA correctly if you think that your data is seasonal but your are still getting bad results.


In response to @Ben's comment that

The auto-regression is at a fixed lag, but I don't agree that this leads to a seasonal part with fixed frequency and phase angle. (I should have said: it is the phase angle that gets thrown off here.) Run a seasonal ARIMA for a long time and you will see that random error eventually pushes the seasonal fluctuation out-of-sync with what it was at the start of the series. As I understand it, you cannot mimic a periodic regression with seasonal ARIMA for this reason.

This is not correct. The seasonality is structurally built into a Seasonal ARIMA model (in the same way that it is in a Holt-Winters or Seasonal BSTS model), so it can't deviate from the frequency, even after long term forecasts.

Below is an example of an ARIMA model of a monthly seasonal series where a long term forecast maintains a fixed seasonality even with a very, very long forecast horizon (216 steps ahead) - generate using the R Forecast package auto.arima() function:

enter image description here

$\endgroup$
18
  • 1
    $\begingroup$ +1. ARIMA should be able to model both seasonality and drift, so I suspect the OP is doing something wrong. $\endgroup$ Commented Aug 2, 2018 at 7:12
  • 6
    $\begingroup$ @Ben if forecasting a time series 17 years forward doesn't constitute a long forecast horizon, please enlighten me what real world scenario does? $\endgroup$
    – Skander H.
    Commented Aug 2, 2018 at 23:32
  • 13
    $\begingroup$ @Ben, you can't edit someone else's answer to insert your point of view. Please don't do that again. $\endgroup$ Commented Aug 3, 2018 at 1:35
  • 9
    $\begingroup$ @Ben, it's his answer, he can say he disagrees w/ you. In your answer, you can say you disagree w/ him. Note that I'm taking no stance on who's right. It's just that your answer is the place for your position, & his answer is the place for his. $\endgroup$ Commented Aug 3, 2018 at 1:50
  • 5
    $\begingroup$ @Ben I have included the entirety of your comment as per your request. I will go over my objection to your comment one more time: The frequency of a Seasonal ARIMA model is fixed because it is a parameter that the user defines. It is not inferred from the data and therefore it cannot deviate or change. And a seasonal ARIMA model is perfectly capable of mimicking a periodic signal as I demonstrated in my graph using a real world data set. $\endgroup$
    – Skander H.
    Commented Aug 3, 2018 at 2:06
4
$\begingroup$

(1) You should "mix" the approaches by using a model that captures both features. When your data shows multiple features (e.g., drift and seasonality) it is a good idea to use a model that captures all of these features together. This is preferable to attempting to make ad hoc changes to a model that only captures one feature of the data. If you have a seasonal component with a fixed frequency, you can add this into your model by using an appropriate seasonal variable. In the case of monthly data with an annual seasonal component, this can be done by adding factor(month) as an explanatory variable in your model. By having both a drift term and a seasonal term in your model, you are able to estimate both effects simultaneously, in the presence of the other. You can then forecast from your fitted model without having to make ad hoc changes.

(2) Predictions are functions of observed data; they are not new data. When you want to make forward predictions in time-series data, your predictions will be functions of the observed data and the parameter estimates from your fitted model. For time-series models with an auto-regressive component, the form of the predictions is simplified by expressing the later predictions in terms of earlier predictions. The later predictions are implicitly still functions of the observed data and the estimated parameters; they are just expressed in a simplified form through previous predictions.

For example, suppose you observe $y_1,...,y_T$ and you estimate parameters $\hat{\tau}$ for a model. Then if your model has an auto-regressive component, you make predictions $\hat{y}_{T+1} = f(y_1,...,y_T, \hat{\tau})$ and $\hat{y}_{T+2} = f(y_1,...,y_T, \hat{y}_{T+1}, \hat{\tau})$, where the later prediction is expressed as a function of the earlier prediction. The prediction $\hat{y}_{T+2}$ is still an implicit function of $y_1,...,y_T, \hat{\tau}$, so this is just a shorthand way of simplifying the expressed predictions, to take advantage of the auto-regression.

If you are doing this correctly, your uncertainty about your predictions (e.g., confidence intervals, etc.) should account of the uncertainty in earlier predictions, and so your uncertainty should tend to "balloon" as you get further and further from the observed data. You must make sure that the earlier predictions are not treated as new observed data - i.e., the prediction $\hat{y}_{T+1}$ is not the same as the actual data point $y_{T+1}$. So long as you treat this correctly, accounting for the additional uncertainty, there is no problem with expressing later predictions as being dependent on earlier predictions.

$\endgroup$
1
  • 5
    $\begingroup$ Your last point applies mostly to density forecasts or prediction-intervals, less so for mean point forecasts, where we typically assume that we indeed have unbiased predictions, so we can simply feed the point forecasts in as "actuals" to get future point forecasts. $\endgroup$ Commented Aug 2, 2018 at 7:10

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.