Time Series Forecasting with NeuralProphet: A Complete Guide

Traditional time series forecasting models like ARIMA excel at statistical linearity but struggle with complex multi-seasonal trends and exogenous variables. While Facebook's Prophet revolutionized accessible time series forecasting, it relies on Stan-based curve fitting, making it difficult to integrate deep learning components or high-frequency neural network layers.

Enter NeuralProphet. Built on PyTorch, NeuralProphet combines traditional time series decomposition (trend, seasonality, holidays) with AR-Net neural network layers, allowing you to model non-linear relationships, lag observations, and custom future covariates seamlessly.

How NeuralProphet Works

NeuralProphet modularizes time series forecasting by stacking additive components powered by PyTorch optimization:

  • Trend & Changepoints: Automatically detects structural shifts in the time series using piecewise linear trends governed by sparse regularization.
  • Seasonality via Fourier Series: Models yearly, weekly, and daily seasonal periodicities using Fourier terms, capturing smooth overlapping cyclical patterns.
  • Autoregressive (AR-Net) Layer: Uses a feed-forward neural network to model lagged target values directly, bridging traditional statistical autoregression with deep learning.

Prophet vs. NeuralProphet vs. ARIMA

FeatureARIMAFacebook ProphetNeuralProphet
Underlying BackendStatistical Maximum LikelihoodStan optimization frameworkPyTorch deep learning framework
Lagged Features & ARNative linear autoregressionNot natively supported (requires external covariates)Built-in neural AR-Net for past target lags
GPU AccelerationNoneNoneFully supported via PyTorch CUDA tensors
Future CovariatesSupported via SARIMAXSupported via additive regressorsSupported with advanced lagged and future covariate networks

Python Implementation Blueprint

Using the neuralprophet library, you can train a robust forecasting model with seasonality and custom trends in just a few lines of code:

Python
Training a NeuralProphet forecasting model in Python
import pandas as pd
from neuralprophet import NeuralProphet

# 1. Load time series dataframe with 'ds' (timestamp) and 'y' (target) columns
df = pd.read_csv("air_passenger_data.csv")

# 2. Initialize NeuralProphet with seasonal and autoregressive components
m = NeuralProphet(
    n_forecasts=1,
    n_lags=7,
    yearly_seasonality=True,
    weekly_seasonality=True,
    learning_rate=0.01
)

# 3. Fit model on training data
metrics = m.fit(df, freq="D", epochs=50)

# 4. Generate future predictions
future = m.make_future_dataframe(df, periods=30)
forecast = m.predict(future)
print(forecast.tail())

Production Best Practices

Deploying NeuralProphet models into production forecasting pipelines requires careful hyperparameter tuning and data preparation:

  • Scale Your Inputs: Ensure your target values and exogenous regressors are properly normalized or scaled to stabilize PyTorch gradient descent during training.
  • Tune Regularization Parameters: Adjust trend changepoint sparsity (`changepoint_regularization`) to prevent overfitting on noisy historical time series data.
  • Validate with Rolling Windows: Use NeuralProphet's built-in cross-validation utility (`cross_validation`) to evaluate out-of-sample performance across multiple historical cutoff dates.