Forecasting Rossmann Sales

ADS1002 Group Project · Final Presentation · Monash University

Can historical sales data support a reliable four-week sales plan?

Forecasting Rossmann sales: why it matters → focus the data → test fairly → plan four weeks.

Historical data1,115 storesJan 2013 to Jul 2015
FocusTop 20% = 223 storesby cumulative Sales
Validate3 × 28-day windowsplus an untouched July test
ForecastAug 1–28 scenariosconditional on promotion plans

Presenters and roles

MemberSlidesResponsible part
Li Yiming1–2Business context, data and research questions
Lim Ying Yu3–4Data wrangling and store statistics
Tay Chen Zhe5–6Calendar patterns, customers and promotions
Huang Qingyue7–8Forecast design and model results
Yanyu Zhu9–10Scenarios, recommendations and next steps

Five presenters, two slides each, one connected story from data to decision.

Slide 2 · Speaker: Li Yiming

Business problem, data and four research questions

Start with three things: the business decision, the available data, and what can be known at forecast time.

Original network
1,115
stores in the supplied train data
Analytical focus
223
top 20% by cumulative recorded Sales
Observations
208,226
selected store-day records
Date range
2013–2015
1 Jan 2013 to 31 Jul 2015

Why forecasting matters

  • Inventory planning
  • Staffing decisions
  • Budgeting and short-term resource allocation
  • Promotion-aware demand planning

Four questions guide the project

Understand the data first, then test a four-week forecast under realistic information limits.

Data: the Rossmann training file named in the project brief (Kaggle Rossmann Store Sales). No other competition files are used.

Slide 3 · Speaker: Lim Ying Yu

Data wrangling and business meaning

No missing cells does not mean a complete calendar.

Original data1,115 storessupplied training file
RankCumulative Salesstore-level aggregation
FocusTop 20% = 223project-defined cohort
Concentration31.0% of Sales208,226 store-days

Quality checks

Missing cells
0
no cell imputation required
Duplicate store-dates
0
each observed key is unique
Weekday mismatches
0
DayOfWeek agrees with Date
Short calendars
10
213 stores have 942 dates; 10 have 758
31.0% of recorded Sales come from the top 223 stores; the other 892 stores account for 69.0%.Sales split including closed days.

How zeros and gaps are handled

  • Dates parsed, weekdays checked, records sorted by store and date
  • Holiday codes kept as categories
  • Closed-day zeros retained as real zeros
  • 7 selected open-day zero records retained (cause unknown)
  • Missing dates never converted to zero demand

Missing cell, missing date and zero Sales are not the same thing.

Slide 4 · Speaker: Lim Ying Yu

Sales differences across the selected stores

Even among the top-selling stores, daily sales levels differ a lot.

Observation-weighted mean
8,748
open-day mean = 10,409
Overall standard deviation
5,086
range = 0 to 41,551
Store-mean range
6,918 to 20,719
Store 262 has the highest mean

Distribution of 223 store means

Mean Sales per store (thousand units) against number of stores. Most stores sit at the lower end; a few sell far more.

Use store-specific history: one network average is not enough.

Slide 5 · Speaker: Tay Chen Zhe

Calendar patterns and coverage

Sales move over time, and the same broad pattern appears with or without shorter calendars.

All 223 selected stores213 complete-calendar stores (dashed)Weekly mean Sales per store-day

Weekday means

December mean
12,728
peaks in both Dec 2013 and Dec 2014
Open Sundays
10,322
a small, selective subset, not a normal Sunday pattern. With closures included Sunday falls to 790.

December peaks occur in both series. Coverage alone is unlikely to explain the broad movement.

Slide 6 · Speaker: Tay Chen Zhe

Customer and promotion associations

Customers strongly track realised Sales; Promo can be planned in advance.

Customers ↔ Sales
r = 0.755
Open-day r uses all observations. Plot shows 220 sampled points.
Promotion signal
+34.9%
Matched store × weekday median difference: +34.1%.

Mean open-day Sales

No promotion 9,016 vs promotion 12,161 units.

Realised Customers are unavailable for future forecasts. Promotion differences remain associations.

Slide 7 · Speaker: Huang Qingyue

Forecast design: how we tested models fairly

Use only information available at each forecast date, then keep July untouched until the end.

Four 28-day horizons (select one)

Jan 2013Jan 2014Jan 2015Aug 2015
history for profiles365-day model fit window28-day forecast

Leakage controls

  • Re-rank stores using past data at each origin
  • Build profiles from earlier Sales only
  • Fit transformations on training rows only
  • Freeze profiles for the full 28-day horizon

Information allowed at forecast time

  • Historical Sales profiles
  • Weekday, month and trend
  • Known Open, Promo and holiday schedules
  • Realised future Customers excluded

Models compared: historical profile, OLS, Ridge regression, decision trees and random forests. Settings chosen by RMSE, with MAE also checked.

Try it: which inputs are allowed at the August origin (31 July)?

Choose models on earlier windows. Use July only once as an independent test.

Slide 8 · Speaker: Huang Qingyue

The forest wins validation, but loses in July

A small 2.2% validation edge does not survive the independent July test.

Eight candidates ranked by mean RMSE over three 28-day validation windows (lower is better). Select a model to highlight it, then reveal the July test.

Validation RMSE: forest 1,335 vs profile 1,366 (−2.2%). Validation MAE: profile 882 vs forest 910.

Slide 9 · Speaker: Yanyu Zhu

August scenarios: promotion schedules change the plan

August outcomes are unavailable, so these are conditional planning scenarios, not accuracy claims.

Pick a scenario, or toggle weekdays to build your own. Each day shows the forest’s predicted Sales (million units, 223 stores) with or without promotion that day.

55.59
million Sales units, 223 stores, 1–28 Aug
+6.70
million vs no promotion, 10 of 20 weekdays promoted
Scenario assumptionsOpen: weekday majority in the last 56 days. SchoolHoliday: last observed value. StateHoliday: assumed 0. Reference Promo: 18–31 July repeated twice. Only the promotion schedule changes between cases.

These scenarios support planning; they do not prove causal campaign returns.

Slide 10 · Speaker: Yanyu Zhu

Recommendations: what managers should do next

July supports a simple reference model, confirmed business inputs, and monitored use.

1. Confirm the business inputs

WHYForecast totals depend on Open, Promo and holiday inputs.

DOReplace assumptions with confirmed schedules.

2. Historical profile as the reference

WHYThe forest wins validation but loses the July test.

DOUse the profile as reference; keep the random forest as challenger.

3. Monitor errors by store and period

WHYLarge misses and promotion bias affect operations (forest bias on promoted open days: +731 units).

DOMonitor by store and period; compare the business cost of over- vs under-forecasting.

+34.9%
open-day Sales with a promotion (12,161 vs 9,016); +34.1% within store and weekday
10.1%
baseline July WAPE, vs 10.9% for the forest
87.7%
July coverage of a nominal 90% residual band
Evidence boundariesTop-20% stores only, not the full network. August schedules are assumptions. Promotion effects are associative, not causal.
Next analytical stepTest shorter and longer training windows, then use metrics that reflect the cost of over- vs under-forecasting.

A useful four-week forecast needs realistic inputs, fair testing and continuous monitoring.

Thank you

Questions welcome. Open “Q&A extras” for prepared answers.

Why exclude Customers?
It correlates 0.755 with Sales on open days but is unknown at forecast time. Using it would overstate accuracy.
Why keep the high sales values?
They can be genuine promotion days. Removing them would make validation look easier.
Why keep the seven open-day zeros?
Their cause is unknown, so deleting them would be a guess. Missing dates are a different case and are never filled with zero.
Is the forest really worse?
July RMSE was 6.6% higher, but a 7-day-block bootstrap range (−320 to 81) spans zero. The evidence is inconclusive, not proof the profile is better.
Why do the open Sundays look so strong?
Only a small, selective group of stores opens on Sunday, so its 10,322 mean is not a typical Sunday.
Where do the planner’s daily values come from?
They are the fitted 120-tree forest’s daily totals from the no-promotion and every-weekday runs. The recent-schedule run uses exactly those values on promoted and unpromoted days, so the three report totals are reproduced. Custom mixes reuse the same per-day outputs.