2
$\begingroup$

I have two years daily demand data, corresponding to which I have to forecast the daily demand for next year. I am new to time series, and used Arima model for this purpose. But it predicts only about 10 days data for next year, for rest of the days it is simply a mean. How can I forecast daily demand for next year. Any help will greatly appreciated. Thanks. Here is the plot of the forecast

$\endgroup$
4
  • 1
    $\begingroup$ You have two years of data and you want to forecast for the next year. The problem is practically the same as if you had only two points and you want to forecast the third one. The simple rule of thumb is that your forecasting period must be at most 10% of the observation period. So at best you can predict next quarter reliably, but not the whole year. Even data issues aside, your question is too broad. Depending on what kind of demand this is there are myriad of models that can produce the forecasts, chosing amon them requires additional knowledge about your data. $\endgroup$
    – mpiktas
    Feb 19, 2015 at 7:11
  • 3
    $\begingroup$ @mpiktas: I don't agree that the forecasting period should not be more than 10% of the history. I routinely do one-year ahead forecasting on two years of data. Sure, the accuracy one year ahead is not the same as one day ahead, but if your accuracy expectation is well-adjusted, even this kind of long-range forecasting can add value. $\endgroup$ Feb 19, 2015 at 7:24
  • $\begingroup$ @StephanKolassa If you adjust your accuracy expectations then you can forecast any number of years :) Long-range forecasting certainly does add value, but if the length of the forecasting horizon is comparable to the sample size, any measure of accuracy is purely subjective. $\endgroup$
    – mpiktas
    Feb 19, 2015 at 7:48
  • $\begingroup$ hi , have you done it, I also want to predict daily in a year $\endgroup$
    – tktktk0711
    Jul 19, 2017 at 5:58

1 Answer 1

3
$\begingroup$

From eyeballing your data, it appears like there is yearly seasonality, which one would expect a forecasting model to pick up and extrapolate. ARIMA here doesn't, although (assuming you are using R's auto.arima()) it does check and model seasonality.

I would guess that the problem lies in the high variation we still see in the data. This makes it hard to find the signal (i.e., the seasonality).

Now, if these are daily demands, then some sort of intra-week pattern may be occurring. I would recommend that you plot seasonality plots, plotting each week over a Mon-Sun axis.

OK, now let's assume that you do have intra-week seasonality. Unfortunately, standard ARIMA implementations won't model two kinds of seasonality (intra-week and intra-year). So you now have a few options:

  • Recode your daily time series to have a period not of 365.25 days, but of 7 days. Then ARIMA should choose a seasonal model (assuming, as above, that intra-week seasonality exists) and give you periodic weekly forecasts. However, we still won't see the yearly seasonality.
  • Run an ARIMAX model with day-of-week dummies. You can feed these into auto.arima() via the xreg parameter.
  • Look at forecasting models that do allow multiple kinds of seasonality. There are some such models out there, most of them in an exponential smoothing/state space formulation. For instance, look at this paper (an ungated preprint can be found here), which describes the so-called TBATS model, which the authors implemented in the tbats() function in R's forecast package. (Incidentally, one of the authors also authored this free online forecasting textbook which I will never stop recommending and which I already linked to above in recommending seasonality plots.)
$\endgroup$
1
  • $\begingroup$ Thank you Sir for the answer. I will look forward to your suggestions. $\endgroup$ Feb 19, 2015 at 16:05

Your Answer

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

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