I'm developing an app in C# (WPF) that amongst other things, it makes a time-series based forecast of sales (4-5 months into the future). I'm an industrial engineer so I'm not pro in statistics nor in programming (basic knowledge of both).
What I'm doing right now is to aggregate my daily data into monthly data, then I test for monthly seasonality, and then either go for a Holt's exponential smoothing or for a Holt-Winters's one depending on the result.
For determining the smoothing parameters I'm using brute force (i.e. testing a lot of possible combinations) and keeping the one that would have predict the past year (backtesting) with minimum MAE.
A problem arises: this method is SLOW (obviously, as always with brute force). It takes about 0,5s only trying the smoothing parameters in 0.05 intervals which doesn't give much accuracy. I need to do this with 1000+ items so it goes over 8 minutes (too much).
So I have a few questions:
- Is there any method to determine optimal smoothing parameters without testing all of them?
- Using R.NET to use the forecast package of R will be faster?
If so, should I:
- Use daily or monthly data?
- Make also an auto.arima? How to determine which model is better?
Is my method of backtesting (make a model only with data previous to that point) valid to determine if a model is better than another?
EDIT: I have tried implementing R.NET. Time for
ets is about 0,1s if I set which model to use and use only mae as
opt.crit (if not, it goes up to 5s).
This is good enough IF I could get the same out-of-sample predictions I mention in the comment. If it's not possible then I would have to run it 12 times, adding up to 1,2s which is not fast enough.
- How can I do that (get predictions over the last 12 data without considering them in the model) in R?