What's the statistical strategy to compute 2 month's ahead sales forecasts? I'm trying to build a chart for some software I'm creating.

Piecemealing this together with a lot of thought, it appears that I'm faced with:

  • Seasonal Delta (SD) Sales often tend to be seasonal, no matter the business. If sales went up or down in Q4 last year, they often, but not always, will mimic this pattern in Q4 this year.

  • Large Sample Delta (LSD) There's already often, but not always, a natural rate of growth or decline occurring from now and 12 months prior to now, and one can carry that out too. That then becomes a factor.

  • Recent Sample Delta (RSD) There's already often, but not always, a natural rate of growth or decline occurring from now and the prior month, and one can carry that out too. That then becomes a factor.

Therefore, I guess if I average the top 3 delta's together, I get a Best Guess Delta (BSD) that I can apply to this month's average to get next month's average. Do it one more time and get the month following that. So, that's a 2 month forecast.

Is that the statistical strategy to do this? Or, should I weight things? For instance, wouldn't RSD have more weight in probability than LSD and SD? And wouldn't LSD have the least weight in probability?

Please note -- my math training stopped right before Calculus. So, Algebra, Trig, Geometry -- these are things I know. I'm also a PHP programmer, if that means anything.


I would have a look at Holt-Winters exponential smoothing. You can implement this fairly easily in R.

It picks up quite easily on trend and seasonality, and it will often (according to Colin Chatfield) give as good results as more complicated techniques such as ARIMA modelling.

Are you familiar with R?

You can download it here

There is a tutorial on Holt-Winters here

But I wouldn't get too bogged down in the equations (unless you want to! :) ).

Let me know if that's not enough detail.

EDIT: This tutorial is better I think http://a-little-book-of-r-for-time-series.readthedocs.org/en/latest/src/timeseries.html#forecasts-using-exponential-smoothing

  • $\begingroup$ The "Chatfield" reference is a reference to "The Analysis of Time Series" by Colin Chatfield. $\endgroup$ – Simon Hayward Oct 31 '12 at 14:50
  • $\begingroup$ Just to let you know I have flagged your question, not because it is bad, but because I cannot edit tags. I think this would get more attention with the "forecasting" and "time series" tags on it. :) $\endgroup$ – Simon Hayward Oct 31 '12 at 15:06
  • 1
    $\begingroup$ Question retagged. $\endgroup$ – chl Oct 31 '12 at 15:10
  • $\begingroup$ Wow, thanks Simon! Early this morning when I signed off, I figured I'd only get snarky comments because, well, I'm not really in this league of knowledge (not a mathematician or statistics pro, never took Calculus), even though I try. Your suggested answer here is very useful. $\endgroup$ – Volomike Oct 31 '12 at 17:20
  • 1
    $\begingroup$ I found a way to do this in PHP, finally: stackoverflow.com/q/13168568/105539 $\endgroup$ – Volomike Oct 31 '12 at 23:12

Chris Chatfield's comments came about 10-15 years and were based on his experiences with Box-Jenkins methods that did not include features commonly available today as his software was inadequate as compared to today's software.

Holt-Winters model may be adequate if and only if

1) You assume that the parameters of the model are invariant over time 2) assume non-stationarity in the mean should be dealt with by one trend and not adjusting for multiple mean shifts in the data or multiple trends 3)assume seasonal structure is autoregressive rather than deterministic (seasonal pulses) rather than considering mixing and matching both deterministic and autoregressive structure 4)assume that any power transformation can be identified from the y series rather than the error series which is where the assumptions are placed 5)assume that the error variance of the model is homogenous and glm is unneeded 6) assume that there are no known support/explanatory variables like price, promotion, Holidays/events etc.

In summary the introductory texts teach what is easy to understand but simply inadequate to deal with real world data that is plagued by outliers, seasonal pulses, multiple level shifts and/or local time trends.

What I am saying here is meant to uplift the group and highlight that academic refences made many decades ago sometimes have a date stamp on them !

  • $\begingroup$ Very nice call-out of the underlying assumptions (+1). I agree with most. Do you have any references to papers or methods that deal well on real-world data and address any of the six listed issues? $\endgroup$ – Assad Ebrahim Nov 29 '12 at 7:29

Since this question cannot possibly be answered with the best answer because it deals with simulations and it's only speculation, I thought I'd also include what another friend told me to consider as well. He suggested looking at Monte Carlo simulations.


  • $\begingroup$ Really? Sounds like a sledgehammer to crack a nut to me... $\endgroup$ – Simon Hayward Oct 31 '12 at 19:59
  • $\begingroup$ Based on reading this, it looks more suitable to Engineering, doesn't take into consideration seasonal trends, and also most business management books recommend Holt-Winters for sales forecasts. $\endgroup$ – Volomike Oct 31 '12 at 22:58
  • 1
    $\begingroup$ Monte Carlo is perhaps more appropriate once you've built a connected model that uses your sales forecasts, for example a complete supply chain model, where you're trying to understand risks associated with various scenarios or the impact of certain policy decisions (target stock holding, budget) on connected variables such as availability, customer service level, capital investment, profitability. That becomes a tougher problem for which the sledgehammer starts to become more appropriate. $\endgroup$ – Assad Ebrahim Nov 29 '12 at 7:34

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.