← 7. Time series
Time series forecasting
Try this analysis →

Time Series Forecasting with Prophet

It shows not just the forecast, but where the forecast came from.

ChangepointsWeekly & yearly seasonalityEvent effectsBacktesting

Trend420Weekly seasonality+75Yearly seasonality-15Confirmed event effect+40Final forecast520 ticketsComponents for January 3, 2026

Suppose a venue's operations team wants to estimate ticket sales for the next two weeks. Sales go up on weekends, and orders pour in when presales for a particular show open. On days the venue is closed, on the other hand, sales may drop. Prophet is a method you can use to forecast data like this, where long-term change over time, repeating patterns, and the effects of special dates all show up together.

Prophet is a forecasting model that represents a time series as components such as trend, seasonality, and holiday and event effects. Because you can see how much each component contributes to the result, it's useful for explaining not just the forecast but why the forecast came out the way it did. It isn't a method that always performs well once it's set up, though, so information about events that will be known in the future and validation in time order are important.

In this article we'll use a real example to look at Prophet's basic structure, changepoints, seasonality, event effects, key settings, forecasts and uncertainty, backtesting, and how it differs from ARIMA and ETS.

SECTION 1

What kind of method is Prophet?

Prophet forecasts future values by modeling the trend and repeating patterns of a time series separately.

It works well with data recorded at regular dates, such as daily or weekly data, and can be applied to data that has not only day-to-day changes but also weekly or yearly repeating patterns. The standard additive model is written as follows.

y(t) = g(t) + s(t) + h(t) + εt

Last 120 daysTrend g(t)380 ~ 420Weekly seasonality s(t)-30 ~ 100Yearly seasonality s(t)-50 ~ 50Event effect h(t)-240 ~ 1802025-102025-112025-12
Component decomposition

Here g(t) is the trend, s(t) the seasonality, h(t) the effect of holidays or events, and εt the remaining variation. Depending on the situation, Prophet can also use multiplicative seasonality and include additional regressors. A distinctive feature is that you can look at each component separately, but interpreting a component doesn't mean it's a causal effect.

SECTION 2

Real-world example: ticket sales at a venue

Suppose a multi-hall performance venue recorded daily ticket sales from January 1, 2023 to December 31, 2025.

The analysis looks at the number of paid tickets per day, with a consistent rule for how cancellations and refunds are handled. The operations team wants to forecast demand for January 2026 to plan front-of-house staffing and customer support.

ItemSetting
Unit of observationDaily ticket sales (tickets)
Training data2023-01-01~2025-11-30
Final validation data2025-12-01~2025-12-31
Final forecast target2026-01-01~2026-01-14
Repeating patternsDay-of-week differences in sales, yearly seasonality
Special datesClosure days, presale opening days for major shows
200400600202320242025December validationChangepointticketsChangepoint
Daily ticket sales

Here we assume that, for presale opening days of major shows, only dates already confirmed when the forecast is made are used. If you fill in future show dates that hadn't been decided yet by looking back at past results, you'd be using information that wouldn't be available in a real operating setting.

SECTION 3

What patterns should you check first?

Before applying Prophet, it's a good idea to check the time series plot for level shifts, seasonality, and outliers.

For example, weekend sales may be higher than weekday sales, and sales may rise overall during the year-end show season. There may also be temporary spikes on the presale opening day of a particular show.

These patterns don't all mean the same thing. A difference that repeats every week is closer to weekly seasonality, and a rise or fall in sales levels over several months can be seen as a change in trend. A spike that happens only on a particular date should be examined as an event effect or an outlier. But first check whether it reflects a real operational change or an error in data collection or recording.

Days with zero sales during closures also need care. If online ticketing is available even on closure days, a closure day itself doesn't mean zero sales. Date variables should be defined to match how sales actually work.

SECTION 4

What are the trend and changepoints?

Prophet's trend describes how the level of sales changes over time.

For example, average daily sales may gradually rise as the venue becomes better known. But if a new competing venue opens or the ticketing channel changes, the rate of growth can change.

A changepoint is a point in time where the slope of the trend can change. By default, Prophet estimates changes in the trend using several candidate points in the training period. If you allow changepoints too freely, the trend can follow even temporary fluctuations; if you restrict them too tightly, it may not respond enough to real structural changes.

30040050020242025Small · smooth and sluggishDefault · structural changes onlyLarge · even minor wiggles
Changepoint flexibility

The key setting changepoint_prior_scale controls how flexible these trend changes are. A larger value lets the trend respond more flexibly to change but raises the risk of overfitting, while a smaller value tends to give a smoother trend. Which value works best should be compared with validation in time order.

SECTION 5

How are weekly and yearly seasonality included?

Seasonality is a pattern that repeats at a regular period.

In venue ticket sales, weekly seasonality, such as the difference between weekends and weekdays, can be pronounced, and there can also be yearly seasonality tied to school vacations or the year-end show season.

-25+0+25+50+75+0Mon+10Tue+25Wed-10Thu+45Fri+75Sat+80Suntickets
Day-of-week seasonality

Prophet uses Fourier series to represent these repeating patterns flexibly. But you don't need to add arbitrarily complex seasonality just because there are day-of-week differences. Check whether the repeating pattern really exists and whether the training period covers enough of that cycle.

If the size of the seasonality grows with the level of sales, you can consider multiplicative rather than additive seasonality. For example, if the weekend effect also grows in absolute number of tickets when usual sales double, the multiplicative approach may be appropriate. Decide on the approach based on the characteristics of the actual data and validation performance.

SECTION 6

How are holidays and show events handled?

In Prophet, you can specify holidays or particular event dates as separate effects.

The idea is to try to separate yearly seasonality that repeats every year from shocks on particular dates. In this example, official closure days and presale opening days for major shows can be included in the event list.

upper_window = 2-3 days-2 days-1 day+150Opening day+80+1 day+40+2 days+3 days+4 dayslower_window = 0
Event effect window

If the effect lasts for several days after presales open, you can use lower_window and upper_window to set the period before and after the date. These ranges should, however, be based on how sales actually unfold.

Event typeExampleWhat to check
Official closure dayFacility inspection day at the start of the yearAre online sales affected too?
Presale opening for a major showTicket release announced in advanceWas the date confirmed at the time of forecasting?
Seasonal eventAnnual performing arts festivalDoes it repeat the same way every year?

An event coefficient is a related pattern the model estimates while controlling for the other components. Without a randomized experiment or an appropriate causal identification strategy, you shouldn't conclude that the event increased sales by a given amount.

SECTION 7

What are Prophet's key settings?

When using Prophet, you first need to set up the date (ds) and the observed value (y) correctly.

Then you configure the trend, seasonality, events, additional regressors, and so on.

SettingRoleJudgment in practice
growthLinear or logistic trendDoes a saturation level for growth really exist?
changepoint_prior_scaleFlexibility of trend changesBalancing structural change and overfitting
seasonality_prior_scaleFlexibility of seasonalityDoes the seasonal pattern swing too wildly?
seasonality_modeAdditive or multiplicative seasonalityDoes the size of the swings change with the level?
holidaysHoliday and event scheduleAre past and future dates accurate?
interval_widthPrediction interval level shown80% or 95%, depending on reporting purpose

To use a logistic trend, you need to set a saturation cap and, if needed, a floor. Even if you'd like to use the venue's seat count as the cap, check whether daily sales are really limited by that number of seats. If tickets for several future shows are sold on the same day, daily sales may not be directly limited by the seat count of any one venue.

Additional regressors must also have values available for the forecast period. Using actual revenue or actual visitor counts that can't be known in the future as predictors causes information leakage.

SECTION 8

Which components explain the forecast?

Prophet's component plots let you see the trend, seasonality, and event effects separately.

Here is a simplified decomposition of the expected sales for January 3, 2026.

ComponentExpected contribution (tickets)
Trend420
Weekly seasonality+75
Yearly seasonality-15
Confirmed event effect+40
Final forecast520
420Trend+75Weekly−15Yearly+40Event520 ticketsForecast
Components for January 3, 2026

In an additive model, these values add up to 520 tickets. These figures are examples set up to show how components are calculated, however, not output from actually fitting Prophet.

The values for each component can vary with the baseline level and the model settings. For example, positive weekend seasonality reflects a pattern of higher sales than on weekdays after accounting for other factors, but it isn't evidence that the weekend itself causes sales to increase.

SECTION 9

How do you read an actual forecast table?

Suppose we forecast January 1–14, 2026 based on past data.

The table below shows an excerpt for some of the dates.

DateSales forecast (tickets)95% prediction interval (tickets)
2026-01-01395290~510
2026-01-02450330~580
2026-01-03520390~665
2026-01-04485360~625
2026-01-05405295~535
2026-01-06415300~545
2026-01-07430315~560
200400600Jan 3: 520 (390–665)21 days observed2026-01-01 ~ 01-14
Forecast for January 1–14, 2026

In the figure, January 8–14 are dates not in the table, drawn by continuing the same components.

For example, the expected sales for January 3 are 520 tickets, with a 95% prediction interval of 390–665 tickets. This means the range is designed to reflect the uncertainty in future observations, on the condition that the model's assumptions and its uncertainty estimation procedure are appropriate.

Note that Prophet's default uncertainty intervals don't automatically reflect every real-world risk. There's no guarantee they properly cover events that haven't appeared often enough in the past, such as a sudden show cancellation or a ticketing system outage. So the actual coverage of the intervals should be checked by backtesting past forecasts.

SECTION 10

How do you validate forecast performance?

In time series forecasting, splitting training and validation data by randomly shuffling observations may be inappropriate.

To reproduce the situation of forecasting the future, you must keep the order: train on past data and forecast the period that follows.

Fold 1Fold 2Fold 3Fold 4Fold 5Training window7–14-day-ahead forecastTime →MAERMSEInterval coverage
Rolling-origin validation

In this example, you can hold out December 2025 as the final holdout and run rolling-origin validation on the earlier data, moving the forecast start point several times. At each point, you forecast sales 7 or 14 days ahead and compare performance.

Forecast performance can be evaluated with the mean absolute error (MAE), root mean squared error (RMSE), and so on. MAE shows how many tickets the forecast is off from actual sales on average, while RMSE gives more weight to large errors. You should also check how often the actual values fall inside the 95% prediction interval.

SECTION 11

How does it compare with ETS and SARIMA?

Whether Prophet is appropriate can only be judged by comparing it with other forecasting methods.

Below are forecast results using the same December 2025 holdout.

ModelMAE (tickets)RMSE (tickets)
Weekly seasonal naive forecast6991
ETS6182
SARIMA5576
Prophet4868
Weekly seasonalnaive forecast69MAE91RMSEETS61MAE82RMSESARIMA55MAE76RMSEProphet48MAE68RMSE
Error comparison by model

In this example, Prophet had the lowest MAE and RMSE. But this is just the result for the example; it doesn't mean Prophet is better on all venue data.

ETS can do well with structures where level, trend, and seasonality are smoothed, and SARIMA is suited to modeling the autocorrelation structure of a time series directly. Prophet is convenient for combining interpretable trend changes, multiple seasonalities, and events whose dates are known. Which method is best should be validated against the forecast horizon and the actual operational purpose.

SECTION 12

What to watch out for when using Prophet

First, check whether future event information is available.

You can use future dates that are already confirmed, such as presale opening days, but entering future events that weren't known at forecast time after the fact, by looking at what actually happened, causes information leakage.

Second, beware of too much flexibility.

If you give changepoints or seasonality too many degrees of freedom, the model can explain past data well while forecasting new periods poorly. Compare settings with validation in time order.

Third, distinguish closure days from missing dates.

A date with genuinely zero sales is different from a date whose sales record is missing. Treating both as 0 can distort the trend and seasonality.

Fourth, don't interpret prediction intervals as firm upper and lower limits.

Prediction intervals depend on the model's assumptions, and actual errors can be larger if an unusual operational incident or a structural change occurs.

Fifth, distinguish forecasting from causal analysis.

Even if a positive effect is estimated for a holiday or show event, other simultaneous changes may have played a role. You shouldn't claim a causal effect of a policy or event from Prophet's event effects alone.

SECTION 13

How do you report Prophet forecast results?

When reporting Prophet results, it's best to present the observation period and frequency, the handling of missing data, the trend and seasonality settings, the event variables, the validation design, error metrics, and prediction intervals together.

In particular, distinguish the dates on which the model was evaluated from the dates actually being forecast.

Example results report

A Prophet model was applied to forecast daily ticket sales at a performance venue. Data from January 2023 through November 2025 were used for training, and observations from December 2025 were set aside as the final validation data. The model included weekly and yearly seasonality and the effects of show dates confirmed in advance and closure days.

In the final holdout validation, Prophet's mean absolute error (MAE) was 48 tickets and its root mean squared error (RMSE) 68 tickets, lower than those of the seasonal naive forecast, ETS, and SARIMA it was compared with. The model's forecast of sales for January 3, 2026 was 520 tickets, with a 95% prediction interval of 390–665 tickets. These results indicate that Prophet showed relatively high forecast accuracy in this validation period, but later schedule changes and the actual coverage of the prediction intervals need to be monitored on an ongoing basis.

✓Wrap-up

Prophet is a time series forecasting method that uses repeating patterns and schedule information

Prophet forecasts future values by combining the trend over time, weekly and yearly seasonality, and holiday and event effects.

It can be a useful choice especially when the series shows clear repeating patterns and future event dates are known to some extent.

But the advantage of being easy to explain component by component is separate from actual forecast performance. Check that the trend changepoint and seasonality settings are appropriate, don't use information that can't be known in the future, and carry out backtesting in time order and comparisons with simple baseline models.

KEY TAKEAWAY

The heart of Prophet isn't just separating trend from seasonality; it's assessing how reliable the forecast is based on future schedules you can actually use and the results of past validation.