Point forecasts versus the whole distribution
Today let's look at why a single forecasted number can hide a lot, using sixty days of real cake orders from a small bakery.
Maple & Rye is a bakery that takes orders for custom celebration cakes. Over the last 60 days it logged how many were ordered each day, mostly between 0 and 8 cakes, but with five catering-spike days jumping to between 15 and 22 at once. Across all 60 days the mean comes to 4.65 cakes a day, well above the median of 3.
Look at how those five catering-spike days tower over the rest of the history above. Any forecast for tomorrow has to somehow account for days like that, not just the quiet, ordinary ones.
What forecast() gives you by default: the mean
fable's simplest forecasting model is MEAN(): it takes the average of the whole history and repeats that same number as its forecast for every future day. Fit it on Maple & Rye's 60 days of orders, then forecast 14 days ahead.
bootstrap = TRUE and times = 2000 tell forecast() to build each day's distribution by resampling the model's own residuals 2000 times, instead of assuming the distribution follows a bell curve. The Orders column holds each day's whole distribution, printed as sample[2000] since it is really 2000 simulated values, not one number. The .mean column pulls out just one summary of that distribution: its arithmetic mean.
Read the very first row. Day 61 is tomorrow, and .mean there is 4.62. That is forecast()'s own point forecast: the single number it hands you if you only look at .mean.
Maple & Rye cannot bake 4.62 of a cake, so the bakery would round this up to 5 whole cakes.