I'm not sure what words I should look for. I have an under determined dataset of 8000 correlated variables (sales) over 12 months (ie 12 observations for each variable). And I basically want to predict the future. Where should I start? PCA?

My question is, what are the techniques used to deal with lots of (correlated) variables and few observations in the case of time series.

I'm looking for orientations (but a full solution is of course welcome!).

I'm agnostic, so stats/econometrics/model-based are as fine as machine learning/AI/not-model-based, as long as they yield results that are useful and mean something. Repeatable/standardizable solutions are more than welcome.

  • $\begingroup$ What is the expected horizon for your projections (1 month, 1 quarter)? Will you be using only sales data or some exogenous variables like CPI, PPI with known official forecasts to overcome the Zach's mentioned problem while forecasting either the principal components or some selected leading indicators? $\endgroup$ – Dmitrij Celov Jan 10 '12 at 13:45
  • $\begingroup$ @DmitrijCelov, those are excellent questions and I must admit I haven't done a good job exploring them before posting. I'd say that as a start I won't include any exogenous variable. The reason I asked this question is that coming from a stats world I'd have some ideas if there were only 2 or 3 variables; with so many variables I naturally thought of more "ML" techniques that deals with tons of features. But my little knowledge of those techniques doesn't include anything specific to time series. $\endgroup$ – Arthur Jan 11 '12 at 16:46

If you want to build any kind of casual model, you're going to run into problems if you try to forecast a time series in relation to other time series, because you'll need good forecasts of the independent time series before you can forecast the dependent time series. This can turn into a recursive problem.

12 observations isn't a heck of a lot to work with, but one suggestion would be to check out the forecast package for R, specifically the auto.arima and ets functions, which will automatically fit univariate arima and exponential smoothing models to your data. Fit some models to the 1st 11 points in each time series, and look at your aggregate error on point 12. If you want to really do it right, cross-validate each time series model.

If building your own solution doesn't appeal to you, there's lots of proprietary software out there that is designed to help solve this sort of problem. One good example is forecast pro, which is very fast and will automatically choose between exponential smoothing and arima models.

Keep in mind that no proprietary software is going to allow you to build causal models without first forecasting the independent variables.

| cite | improve this answer | |
  • $\begingroup$ Don't you think I should be able to exploit relations between variables? A Vector AutoRegressive model does it. And, yes, I'm totally into building my own solution. I'm on Stata and C++, and I may dive into R/Rcpp some day. Thanks! $\endgroup$ – Arthur Jan 10 '12 at 13:33
  • $\begingroup$ (+1) in general I share the same ideas as yours, if not all of the prices are in coincident state, there still is hope to detect some leading indicator or define common and idiosyncratic part. In general the interval forecasts will be quite wide, but who knows. Diffusion index model may be technically applied since $T<<N$, but the uncertainty in time domain will be too high IMHO. $\endgroup$ – Dmitrij Celov Jan 10 '12 at 13:48
  • $\begingroup$ @Arthur: Sure! I know very little about vector autoregressive models, but I'm guessing they're harder to build correctly than simple time series models. It may be worth seeing the performance of a simple solution you can code up in an hour before you get into anything more complex. Also keep in mind you have 12 observations of 8000 variables, which will make it very easy to overfit flexible models. Try to hold out at least one observation from each series as a test set! $\endgroup$ – Zach Jan 10 '12 at 14:05

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

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