Nixtla / neuralforecast

Scalable and user friendly neural :brain: forecasting algorithms.
https://nixtlaverse.nixtla.io/neuralforecast
Apache License 2.0
3.02k stars 348 forks source link

Multivariate Time Series #384

Closed asifmustafa87 closed 1 year ago

asifmustafa87 commented 1 year ago

Hi,

I want to know like if Nixtla supports Multivariate Time Series Forecasting. If so, where can I find the workout examples?

kdgutier commented 1 year ago

Hi @asifmustafa87,

  1. All NeuralForecast's models use cross-learning optimization, you can think of them as multivariate/global models.

  2. Additionally you can use the exogenous variables inputs to directly leverage predictive correlations across series, here is an exogenous variables example notebook.

  3. We are still working to allow the network's outputs to accept multivariate distributions, or multivariate losses.

  4. Finally, we are already modeling the forecast horizon as a multivariate regression problem. As we tend to prefer the multistep forecasting strategy over the recurrent strategy due to its computational efficiency and accuracy.

Let me know if this helps.

candalfigomoro commented 1 year ago

Hi @kdgutier ,

in Darts you can use multivariate timeseries so that "each dimension consumes the (lagged) values of all other dimensions".

Is there an easy way to do this in neuralforecast (as in Darts), or do we have to do it manually by adding the other time series as exogenous variables to each time series?

Thanks

kdgutier commented 1 year ago

Hi @candalfigomoro,

Thanks for using NeuralForecast. We are currently working towards a full-multivariate model if you want to try it check this notebook:

In my experience unless the dataset has plenty of Granger-causal relationships a Vector Autoregressive approach tends to make the models unnecessary complicated, as the models tries to learn noisy cross-series relationships. I would definitely compare the predictions of the full-multivariate model to one where you manually feed the model the exogenous variables through the stat_exog_list, hist_exog_list, futr_exog_list parameters.