Exploring Time Series Forecasting
Solo Developer
A hands on study of time series forecasting that compares classical statistical baselines against Facebook Prophet with external regressors, built as a clear and reproducible progression of notebooks.
Overview
About the project
Forecasting future values from historical data is deceptively hard. There is no single model that works everywhere. A simple baseline can quietly outperform a sophisticated model, and choosing the right one means first understanding the data's trend, seasonality, and noise. I wanted to build that intuition properly instead of reaching for one tool by default.
I structured the work as a guided progression of Jupyter notebooks. The first explores the data, looking at its trend, seasonality, and stationarity. The second implements classical baselines so there is an honest reference point to beat. The third applies Facebook Prophet, adding external regressors to capture effects the history alone cannot explain. Shared helper code lives in a reusable library module, and every model is compared with consistent error metrics so the results stay fair.
The project produces a clear, side by side comparison of forecasting approaches. It shows where simple baselines hold up and where Prophet's added structure earns its keep, and it leaves behind a reusable toolkit for future time series work.
System Overview
At a glance
A self directed study of time series forecasting organised as a progression of Jupyter notebooks. The work walks from raw signal exploration through classical baselines into Facebook Prophet with external regressors, all sharing a reusable helper library so every model is evaluated on the same footing.
How It Works
System Architecture
Exploratory Analysis
Inspects trend, seasonality, and stationarity in the raw series
Classical Baselines
Naive and statistical models that set an honest reference score
Prophet & Regressors
Facebook Prophet with external regressors for richer structure
Shared Library
Reusable helpers for preprocessing, plotting, and metrics
Process Flow
How the project moves from start to finish, step by step.
Explore
Profile the time series for trend, seasonality, and stationarity before any modelling begins.
Baseline
Fit simple classical models so every later result has a fair score to beat.
Forecast
Apply Prophet with external regressors, then compare every model on the same error metrics.
System Breakdown
Notebook Breakdown
The repository is organised so each notebook builds on the previous one, with shared utilities lifted into a reusable library module.
Notebook 1 — Exploration
Trend Analysis
Visualises long run direction and isolates the underlying signal.
Seasonality Decomposition
Separates seasonal and residual components for closer inspection.
Stationarity Tests
Statistical checks that decide which transformations the modelling stage needs.
Notebook 2 — Classical Baselines
Naive Forecast
A reference model any later approach must beat.
Statistical Models
Well understood classical methods used as fair, honest baselines.
Error Metrics
Consistent metrics so every later result stays comparable.
Notebook 3 — Prophet with Regressors
Prophet Setup
Prophet configured for the dataset's trend and seasonality.
External Regressors
Extra variables that capture effects history alone cannot explain.
Forecast Diagnostics
Residuals, intervals, and saved figures for visual checks.
Shared Library
Reusable Helpers
Common preprocessing, plotting, and metrics code lifted out of the notebooks.
Consistent Interfaces
Functions every notebook calls the same way so comparisons stay fair.
Workflows
End to End Process
Each phase has a single, clear purpose, with the output of one feeding the next.
Data Profiling
Purpose: Understand the series before any modelling decision is made.
How it works
- Load the raw historical data and inspect frequency, gaps, and outliers.
- Visualise trend, seasonality, and residuals.
- Run stationarity tests to decide what transforms the modelling stage needs.
- Save figures so the analysis stays reproducible.
Classical Baselines
Purpose: Set a fair, well understood reference score every later model must beat.
How it works
- Fit naive and simple statistical baselines on the same train and test split.
- Score each model with consistent error metrics.
- Record the results in a shared comparison table.
- Confirm where simple methods already cover most of the signal.
Prophet with Regressors
Purpose: Layer extra structure where the baselines fall short.
How it works
- Configure Prophet for the dataset's trend and seasonality.
- Add external regressors that capture effects the history alone cannot explain.
- Fit on the same training window used by the baselines.
- Inspect residuals and intervals to stay honest about uncertainty.
Comparison and Evaluation
Purpose: Decide where the added complexity is worth it.
How it works
- Score every model with the same metrics.
- Compare results side by side in one shared table.
- Visualise forecasts together to spot strengths and failure modes.
- Document where simple beats fancy and where Prophet earns its keep.
What It Does
Features & Capabilities
Reproducible Notebooks
A clear, ordered progression anyone can run from start to finish.
Reusable Library
Shared helper code in a lib module keeps the notebooks clean and consistent.
Fair Comparison
Consistent error metrics applied across every model in the study.
Visual Diagnostics
Saved figures for trends, residuals, and forecast quality.
Running It