I am working on teaching myself some forecasting techniques that I can use in the future.

Imagine a shopping mall. The mall contains many shops which each sell different products.

I have a bunch of data relating to each shop:

Number of products they sell

Price of these products

Historical sales figures

The type of shop

How many customers visit each shop in a given window

How many days a week the shop is open for



I am looking for a way to predict based on the above how much revenue a given shop is likely to take in a month?

E.g. A computer shop with 500 products that is open everyday and took 5000, 3700, 4900,...,6000 is estimated to bring in 5400USD next month.

I have had some limited success in the past using time series methods but I feel like there is not really any seasonal growth for a large number of shops and I am wondering about other methods.

Also I know that all of the data I have may not be relevant (for instance the number of products they sell may not make any difference to the predicted values of sales going forward) but I have a lot of data so want to incorporate some of it into the model rather than just a straight time series.

Can anyone suggest any types of models that might be appropriate?

I have heard about logistic regression and linear regression and have vaguely looked at the former and seem a bit of the latter are these useful?

If not could someone tell me what kind of models I could be researching into in order to build a model that utilises the data as I don't think I am making the most of the large amounts of data I have.



4 Answers 4


Simple linear regression is a good place to start. This type of model is used to answer "if I increase $X$ by 1, how much will $Y$ increase?"

The results of a simple regression would give you this answer in the $\beta$ values, as estimates in the output. There are a billion regression packages out there, but for your case, start with something very simple to get started, and go from there using trial-and-error.

Try the lm() base function in R. Simple, free, and the output is easily interpreted. After you wrap your head around the basic idea of variable relationships, then move on to trickier stuff like time-series forecasting.


To answer your question in the comments, I am editing. I could not fit it all in one comment.

  1. There are roughly 1 billion websites dedicated to determining the best model for a dataset. This is a hotly debated question. If you do not know any modeling, start with regression as it is most basic.
  2. Yes. It is called "multiple linerar regression". Instead of $y = \alpha + \beta x + \epsilon$, you now have $y = \alpha + \beta_1 x_1 + ... + \beta_n x_n + \epsilon$, where $n$ represents the number of predictors (covariates) in your model.
  3. Non-continuous data can easily be incorporated using a variety of methods, which mainly involves the computer coding your categorical data to leveled factors. Here is a decent tutorial in R: Here is the link
  • $\begingroup$ Okay I will certainly look into linear regression. I have seen this before a little bit but I have a few questions if you wouldn't mind: 1) How can we tell if it is an appropriate model to use? 2) Normally I have seen something like using a linear regression model to predict weight based on height (or something like that). So something like Weight = Height*Constant+Intercept. Can this be expanded to more variables? 3) How does linear regression incorporate data that isn't numerical, for instance, sticking with my example, the difference between a computer shop and a book shop? Thanks $\endgroup$
    – Ryan S
    Jul 11, 2018 at 21:30
  • $\begingroup$ Also, if you have another unique question with multiple parts like this, you should generally accept the answer on this question and ask a new question. @RyanS $\endgroup$
    – ERT
    Jul 11, 2018 at 22:06

I second E. Trauger's recommendation to look at regression. This allows you to model causal drivers. Since you mention that you have a lot of potential variables, you may want to consider regularization to avoid overfitting. Take a look at the Lasso.

You mention logistic regression. This will not be useful, as it only works for 0-1 valued series.

Don't be surprised if you can't improve on (simple) time series algorithms. In forecasting, it can be surprisingly hard to improve on simple benchmarks.

You may want to look at Forecasting: Principles and Practice, specifically the section on regression.

  • $\begingroup$ The frequent inability to improve upon "simple" time-series forecasting algorithms is a frustrating but undeniable truth. $\endgroup$
    – ERT
    Jul 11, 2018 at 11:01
  • $\begingroup$ I would argue that BSTS allows you to have the best of both worlds. Simple robust time series forecasting (you can implement a basic trend model or seasonal trend model in BSTS) and then add the causal drivers as a regressors. $\endgroup$
    – Skander H.
    Jul 11, 2018 at 17:04

"for instance the number of products they sell may not make any difference to the predicted values of sales going forward"

I disagree. The number of products they sell is called a retail assortment and usually has a significant effect on the revenu of a store (if you wanted to buy a new outfit, do you go to the store that has only 3 options or the store that has 30 options?)

Can anyone suggest any types of models that might be appropriate?

Bayesian Structural Time Series are good for this type of problem, where you can add other variables besides the time series to generate forecasts.

Also most of the forecasts methods in R's Forecast package can take in exogenous variables (i.e. other variables besides the time series itself), I don't know how good they are though.


I think as a starting point, an ANCOVA would be interesting. As the ANOVA part would allow you to compare differing stores, and the Regression part would allow you to see which factors are important for which stores and possible allow comparisons of the effect of factors between stores.


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

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