tidyverts / fable

Tidy time series forecasting
https://fable.tidyverts.org
GNU General Public License v3.0
559 stars 65 forks source link

Model specific analysis features #216

Open mitchelloharawild opened 4 years ago

mitchelloharawild commented 4 years ago

Many models have tests or analysis specific to that model.

A method for model specific functionality is required.

Related: #199, #200

nathancday commented 4 years ago

If you are still looking for help, I would like to give this a go.

mitchelloharawild commented 4 years ago

Help would be greatly appreciated.

The trouble I have with this is designing an appropriate interface which is sufficiently general for any model's tests and features. It can be assumed that each model stores enough information to compute the values of interest. Applying these functions to each model would need to be done with some other function, like how features() applies a feature function to each time series.

Any ideas for how model specific functions can be applied to models in a mable would be very helpful.

nathancday commented 4 years ago

I see how the generalizing is difficult. It is ambitious, but it would be very valuable.

Do you think it's reasonable to identify a set of models (VAR, NNAR, ...) to use as pilot/test set for developing a prototype of this? Really are there any other specific model inference capabilities that you think should be considered here in addition to these two?

My thinking is a defined sample of features to be supported would provide something to program against. This would also give us a good idea of how hard supporting any model might be.

mitchelloharawild commented 4 years ago

Granger causality and variable importance would be a good start. I also think portmanteau tests like Ljung-Box would also fit in this framework, these wouldn't be specific to any model so long as they specify the degrees of freedom in the glance() output (#241).

I expect the possible analyses would vary substantially between models, and that others could be generalised to collections of models. For example feasts::gg_arma() plots ARMA roots (designed for ARIMA()), however it will work with any model that outputs ar_roots and/or ma_roots in the glance() output (so it could also work with AR(), tbats, etc.)