I create a demand forecast for a company that sells, say, toasters. We have one old standby model that's just finally stocked out, and a series of much newer models with shorter time series of sales to work with.

Our historic forecasting method (in R) was a much more complicated version of this:

fit <- Arima(old_standby)
refit <- Arima(shiny_new_model, model = fit)
new_model_future <- forecast(refit, h = 60)

This was all well and good until two things happened. First, we stopped selling the old standby, so we don't have any recent data on that. Not necessarily a problem - as long as sales for the old standby in the past look like sales for new models now, it shouldn't screw things up.

The second issue is the problem though. We also gave out 1-week coupons for our new models that caused a massive temporary spike in sales. Usually, I'd incorporate these as additional regressors in the Arima, but I can't do it because we had already stocked out of the old standby at that point.

Is there any way to fit an Arima to the data for the old standby, refit it to the data for the new model (incorporating a dummy regressor for the coupon), and then predict? Something like this:

fit <- Arima(old_standby)
refit <- Arima(shiny_new_model, model = fit, xreg = coupon_dummy)
new_model_future <- forecast(refit, h = 60, xreg = new_coupons)

I'm guessing the answer is "no," because you can't fit the auto-regressive portion of the model against two different sets of data at the same time. But I still thought it was worth asking if anybody had any ideas.

  • $\begingroup$ Perhaps I don't understand, but you could constrain the parameter values in the new model to be essentially equal to the values from the old model. e.g., in the arima function in R, there's an argument optim.control that will help you set upper and lower bounds. If this seems like the right idea, I can elaborate in an answer. $\endgroup$
    – rbatt
    May 18 '15 at 22:41
  • $\begingroup$ This definitely sounds like you're on the right track... That would be very helpful! I was also wondering about passing an argument to the "fixed" parameter in the arima / Arima (forecast). $\endgroup$ May 19 '15 at 13:27
  • $\begingroup$ Hmm, actually I'm sorry to say that I'm having trouble passing the lower and upper arguments to optim via arima ... if forgot that those arguments are in the control list, but are separate. I fiddled with it a bit, but I couldn't get it. Also, is there any chance you could provide an example data set/ simulated data + code that demonstrates the problem? $\endgroup$
    – rbatt
    May 19 '15 at 17:31
  • $\begingroup$ Sure... I'll see if I can put together some dummy data. $\endgroup$ May 19 '15 at 18:10

Your Answer

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

Browse other questions tagged or ask your own question.