# Building a time-series demand forecasting model

I am forecasting demand for certain types of goods and services, which I expect to be correlated to a sub-set of a basket of macroeconomic indicators (considering 15-20 indicators)

I do not know which indicators influence the demand more, whether they have a simple correlation influence or whether a derivative of change influences the demand (i.e. GDP or GDP change for example) or whether there’s a delayed effect on demand (e.g. increased government spend in last year may better predict this year’s demand?). Some macro indicators may be correlated to each other.

I have some basic hypotheses on likely indicators - that may be right or wrong.

Questions 1. What are good time-series forecasting models? What can be considered, apart from just a multivariate regression? 2. Is there a tool whereby I can input the historical demand, historical macro indicators, which will then output which set of indicators best predict the demand and which model works best?

I know how to do regressions in excel, but that’s just one set of indicators at a time. 20 indicators (plus derivatives, plus lag) throws up so many possibilities I cannot manually simulate.

Any help appreciated.

• Welcome to DataScienceSE. I don't know much about time series regression but I would try something like conditional random fields. A more simple approach is to use simple regression models (such as decision trees) but adding various statistics about the recent trend of the indicators. In both cases you would probably need to use more advanced ML tools than Excel, and it will probably involve some programming. Jul 7 '19 at 12:29
• you can use MLforecast package. It provides various ml models. github.com/Akai01/MLforecast Aug 5 '20 at 6:53

## 1 Answer

Time series forecasting with exogenous variables (a.k.a. external regressors, like GDP you mentioned) can be complex. I'd suggest starting with an ARIMA (autoregressive integrated moving average) model that includes exogenous variables, like arima in R or sarimax from statsmodels in Python.