# Forecasting/estimating daily hotel room demand

Suppose we have an hotel and we know all the reservations of the last five years. We would like to forecast/estimate the room demand day-by-day for the next year.

I'm a mathematician but not a statistician, I'm sorry if I'm saying something trivial or dumb.

I'm wondering if a "standard model" (as ARMA, ARIMA, SARIMA) exists for such a problem. The main doubt I have, it is about the regularity of the variable "# of reservations". Is it predictable?

As a mathematician I can understand a model for forecasting, but I don't really know the domain of application of such a model.

Let's take the example of Christmas day. It is a "regular event" because it is the same day every year, so I imagine I can easily make a prediction, but how about Easter? Obviously I cannot estimate it by the data I have, because the actual day of Easter changes every springtime, I need an extraordinary information.

1. Is it a time-series analysis problem?
2. standard models work for this problem? (I have just read about ARMA, ARIMA, SARIMA and linear models, looking for time series)
3. If not, do other models exist for treating this case?
4. Or basically we need to invoke the experience of the people who work in the hotel? :)

Looking on the internet I found many things on "forecasting tourism demand", but all these analysis try to estimate the number of tourists per month (by the query on google, by the last years data, etc.). But maybe I'm wrong.

Thanks.

# UPDATE 20/01/17

I'm trying to get an idea out of the comments posted so far. I know that, even Christmas, it's more complicated because it depends on the day ("Christmas on a Thursday will lead to Friday being taken to create a four-day weekend, for example" cit. @Wayne). But the point is the same: are these complications "treatable" or not?

@AnscombesGimlet said they are treatable, but I'm wondering: how many manual corrections do I have to do in order to have a suitable model? If I have to do a lot of corrections, of course I'm still using a "model", but I won't say it's "standard" and I would answer "No" to 2. Up to what I've understood (and I think it's the same point of @IrishStat), each "hotel" has its own history and its own variables/coefficients: a mechanism for understanding these peculiarities does not exist(well, let's call it experience or savoir-faire).

Tell me if I'm wrong. Suppose I'm one of the best statisticians trained in the black art of time series, what would I do to tackle this problem? Here my set list:

1. Prepare all the datas from my hotel
2. Start plotting datas with different time scales years/(seasons)/months/(weeks)/days
3. Finding maybe different "time scales" (instead of plotting january-february etc, maybe 15th of january to 15th of february etc because the data looks more uniform)
4. Start using my favorite method (let's say ARIMA) and start doing some projection about my data, with the parameters I think fit better the data I have already studied.
5. Make the model a good model.

I won't do: 1. Prepare all the datas from my hotel 2. Take e.g. ARIMA with "standard parameters" that I imagine would work because more or less I think I will have a pick for the summer and for holidays 3. Launch it and then try to understand the parameters of ARIMA looking how far is the model from the reality 4. Approximate the model to a good one.

The difference between these two approaches can be perceived in this example:

What if I change the hotel? The first technique (which I would call "non standard") has to be applied anew if I take a different hotel (and I will spend a lot of time on it). The second one(which I would call "standard") could be implemented (more or less) for every hotel.

So now the question is: can both methods work? are both reliable?

• There are a ton more. From classic decomposition to transfer function methods, from Kalman filters to dynamic regression...maybe show us your data so that we can help? BTW, even the date for Christmas may be in some sense "uncertain", because on a leap year it's not the 359th day of the year, but the 360th. Leap years are easily taken care of. For Easter it's a bit more complicated, but still, being a deterministic effect, it's doable. Commented Jan 19, 2017 at 10:18
• @DeltaIV: Though on the downside, Christmas won't fall on the same day of the week each year, and I'd posit that matters a lot in hotel plans. (And Christmas will affect the days around it differently, too: Christmas on a Thursday will lead to Friday being taken to create a four-day weekend, for example.) In five years, Christmas won't have fallen even once on each day of the week. Daily or weekly forecasts are painful, in my experience. I like your mention of Kalman Filters, which are often called a State Space approach. I can also see a poor-man's approach using hierarchical regression. Commented Jan 19, 2017 at 21:26
• One simple(-ish) way to include holidays (and weekends) is to introduce them as exogenous variables in a (S)ARIMA model, turning it into a (S)ARIMAX model. I say simple, because you have to try it with your own dataset to assess the performance of your model. Commented Jan 19, 2017 at 22:03
• I updated the post with your suggestions. Now the question it's slightly changed. Commented Jan 20, 2017 at 10:23

1. Yes
2. Yes - but you incorrectly assume ARIMA is the 'standard". There are no standard models. I'd highly recommend reading a time series book (of which there are a number of excellent free books online). They typically will cover using ARIMA models with external regressors, dynamic regression, ETS models, etc.
3. NA
4. Maybe; depends on what your data looks like.

Depending on what you're using the data for and how important forecast accuracy is, there are a number of approaches you'll want to test using time series cross validation and/or test set holdouts. But essentially, you should look at ARIMA models that include external regressor variables for Easter. Holidays do not always fall on the same index day/week due to leap years.

Ideas for approaches to take:

1. Use daily data and include seasonal regressors for holidays and specify multiple seasonal periods (daily, yearly). Since we know information the model doesn't (holidays) it would be a pretty bad idea not to at least test using them.

2. You could aggregate the data at a weekly or monthly level, forecast those and then use a distribution pattern by month based on moving average for that month's volume from previous years. For example, day 1 December historically has averaged 3% of the total volume in that month, day 2 gets 2.3%, etc. The value of this method is monthly forecasting is typically more accurate than daily due to the noise to signal level at the daily resolution.

3. I am really impressed with the recent advances via Temporal Hierarchical Forecasting. There is an implementation of this methodology in the R thief package. This methodology can work really well on high frequency data (daily, weekly data). Still, you'll want to include holidays as external regressors even to this model framework since hotel usage is likely highly impacted by holidays.

4. Seasonal naive using a linear adjustment up/down based on your year-over-year trend (usually decent to stick with a naive approach to the trend). You'll still need to account for leap years and holidays, as they may not align using this method.

Reading a good practical forecasting book will likely be the best place to start.

EDIT: Free online practical forecasting book link:

https://www.otexts.org/fpp

• why not including an explicit reference to one or two practical forecasting books? It would make the answer more complete, in my opinion. Commented Jan 19, 2017 at 18:39
• @AnscombesGimlet I'm not sure about the definition of "standard model" you use. That's why I uploaded my question. Commented Jan 20, 2017 at 10:24

Forecasting daily data is the objective which seems on the surface to be an everyday (pun) standard problem. Standard this ain't ! Even free online texts might not be very helpful as "model identification is the problem/opportunity" . Time series models (ARIMA) incorporating predictor series (X) is the suggested answer where the form of X is to be patiently disciovered. It is known as a Transfer Function and commonly referred to as a Dynamic Regression with ARIMA (XARMAX). ARIMA alone is definitely not the standard as one also needs to incorporate both known and unknown deterministic effects (the X's) as @anscombesgimlet wisely suggested. Smoothing at a higher level of frequency like weeks or months or quarters or years as a "fudge factor" is often (always !) inadequate because of the assumed proportional factors which are in my opinion are often a bad rule of thumb as they often (always) vary over time. Developing daily models that incorporate memory (ARIMA) , daily effects , particular day-of-the-month effects, lead and lag effects around holidays, weekly and monthly effects and even week within month effects , long-weekend effects while dealing with changes in day-of-the-week effects, level/step shifts , local time trends and changes in trends , user-suggested causal variables like weather/price/promotion is not for the weak of heart or those without resources or a lot of coding time on their hands.

Additionally there should be some concern for parameter changes and error variance changes over time as these two are often violated by the "bad data" that really isn't bad but "real-life" and untreated/ignored can throw monkey-wrenches into deficient (standard) analyses.

I became involved in the business of understanding and developing data-based solutions/software for daily data when a "small beer company in St.Louis that had horses" asked to predict (very tactical) daily sales for 50 products for 600,000 retail outlets using any and all known factors such as projected prices and temperature while incorporating possible cannibalization factors. Nothing like a good real-world example to get the juices flowing !. In fact I find that real-world data often drives theoretical development as an impetus that won't go away.

Besides reading what you can find in resources like SE, I suggest that you acquaint yourself with possible solution providers/local statisticians trained in the black-art of time series and deliver a typical data set to them for their fun and pleasure and your education. Search SE for the string "DAILY DATA" and pursue some threads.

You could start by posting one of your time series here and offering a reward for a successful responder. The data doesn't have to be real , it could be coded data . It could be fabricated/simulated to reflect information that lies hidden in the data waiting to be discovered or most likely ignored as the case may be.

As @whuber once opined and I paraphrase from memory "there are a lot of wrong ways to solve a difficult problem and usually only one correct way"

This problem in some ways is more complex than loading beer onto supermarket shelves because hotel occupancy prediction should/must incorporate the "current reservation count" that is known for all future dates and varies over time. This is an interesting twist that is both a complication and an opportunity. It would be interesting to me to find out exactly how this problem is currently being handled by existing methods in order to craft a workable solution.

You shouldn't fret about when holidays occur as most forecasting packages routinely handle that accounting. What you should fret about is "how to detect appropriate lead and lag effects around the holidays" among other things heretofore mentioned.

EDITED 1/20

As an example of what @darXider is suggesting (incorporating fixed effects ) look at http://www.autobox.com/cms/index.php/afs-university/intro-to-forecasting/doc_download/53-capabilities-presentation .. slide 49-68 . Use this as a prototype and even if you decode to roll your own solution examine the approach. Plotting data as you suggested can be pretty time-intensive and very inefficient and would never be sufficient/cost-effective to form useful models for each of your hotels. I would be looking for productivity aids to use honed model identification schemes wherever I could find them. As I suggested you might want to get help from an experienced daily-time series statistician and have them provide guidance to you. AUTOBOX which I helped develop has a data-based solution for this with both SAS and SPSS as two other possibilities.

• I changed the question, please tell me if I've understood your point of view. Commented Jan 20, 2017 at 10:25