Skip to main content

A transformer-based architecture for robust panel time series forecasting, extending the Temporal Fusion Transformer with multi-scale decomposition, Segment-wise Attention, cross-entity attention, and adaptive trend-seasonal modeling.

Project description

Panelformer

Project Research Lead Contributor Contributor Contributor

Panelformer is a transformer-based deep learning model designed for accurate and scalable panel time series forecasting. Built on top of the Temporal Fusion Transformer (TFT), Panelformer introduces several innovations to address the limitations of existing models when applied to heterogeneous panel datasets.

🔑 Keywords

Panel time series, Temporal Fusion Transformer, Transformer architecture, Forecasting, Panelformer

🔍 Overview

Panel time series involve multiple entities (e.g., countries, products) observed over time — requiring models to handle both temporal and cross-sectional complexity. Panelformer enhances forecasting accuracy across diverse panel structures by integrating the following features:

  • Segment-wise Attention: Reduces complexity and captures local patterns in long sequences.
  • Multi-Scale Series Decomposition: Separates trend and seasonal components using learnable moving averages.
  • Cross-Entity Attention: Models dependencies between different panel entities.
  • Parallel Trend-Seasonal Paths: Dedicated processing for distinct temporal dynamics.
  • Adaptive Component Weighting: Learns to prioritize seasonal vs. trend features dynamically.

🚀 Key Results

Evaluated on 11 real-world datasets spanning economics, energy, climate, and health domains, Panelformer achieved:

  • 7.99% average MAPE improvement over baseline TFT
  • Robust performance on balanced/unbalanced, short/long, micro/macro panels
  • Significant accuracy gains on high-frequency datasets like foreign exchange, surface temperature, and electricity

📦 Installation

pip install panelformer

🛠️ How to Use

Using Panelformer involves four main steps:

🧬 Step 1: Data Preparation

Prepare your panel dataset with columns for entity IDs, timestamps, and target values. Convert your date column to datetime format and create a sequential time index for modeling.

🧩 Step 2: Dataset Creation

Use the pytorch_forecasting library’s TimeSeriesDataSet class to define training, validation, and test datasets. This includes specifying encoder and decoder lengths, grouping by entity, and applying normalization.

🏋️ Step 3: Train the Model

Instantiate the Panelformer model using the prepared dataset, configure hyperparameters (like learning rate, hidden sizes, attention heads), and train with a PyTorch Lightning Trainer for efficient training management.

from Panelformer import Panelformer

import lightning.pytorch as pl
from lightning.pytorch.callbacks import EarlyStopping, LearningRateMonitor
from lightning.pytorch.loggers import TensorBoardLogger
from pytorch_forecasting.metrics import QuantileLoss

early_stop_callback = EarlyStopping(monitor="val_loss", min_delta=1e-10, patience=5, verbose=False, mode="min")
lr_logger = LearningRateMonitor()
logger = TensorBoardLogger("lightning_logs")

trainer = pl.Trainer(
    max_epochs = 50
    enable_model_summary=True,
    gradient_clip_val=0.1,
    callbacks=[lr_logger, early_stop_callback],
    logger=logger,
)

model = Panelformer.from_dataset(
    training,
    learning_rate=0.001,
    hidden_size=16,
    attention_head_size=2,
    dropout=0.1,
    segment_size=4,
    decomposition_kernel_sizes=[3, 7, 15, 31],
    trend_processing_layers=2,
    use_cross_series_attention=True,
    adaptive_trend_weight=True,
    hidden_continuous_size=8,
    loss=QuantileLoss()
)

trainer.fit(model, train_dataloaders=train_dataloader, val_dataloaders=val_dataloader)

📈 Step 4: Make Predictions

Use the trained model to predict on new data by passing a test dataloader, retrieving forecasts for evaluation or downstream use.

predictions = model.predict(test_dataloader, mode="raw", return_x=True)

🧪 Step 5: Evaluation Utilities

Panelformer comes with a built-in utility module to simplify model evaluation and visualization. This includes standard regression metrics and diagnostic plots to help assess performance.

✅ Features:

  • Residual analysis (Residuals vs Predictions)
  • Actual vs Predicted scatter plot
  • Error distribution histogram
  • Standard metrics: R², MAPE, MSE, RMSE, MAE
  • Correlation metrics: Pearson, Spearman
  • Standardized error metrics (optional)

🔧 Example Usage:

from Panelformer import utils

# Evaluate on validation set
print("Validation Metrics:")
val_r2, val_mape, val_mse, val_rmse, val_mae, val_error_std, val_pearson_corr, val_spearman_corr = utils.calculate_metrics(val_dataloader, model)

# Evaluate on test set
print("\nTest Metrics:")
test_r2, test_mape, test_mse, test_rmse, test_mae, test_error_std, test_pearson_corr, test_spearman_corr = utils.calculate_metrics(test_dataloader, model)

🎯 Output:

  • Metrics printed to console

  • Diagnostic plots shown:

    • Residuals vs Predictions
    • Actual vs Predicted
    • Error Distribution

This helps visually diagnose model behavior, including overfitting, heteroscedasticity, or bias in predictions.

🛠 License

Released under the MIT License. Built on top of PyTorch Forecasting.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

panelformer-0.2.3.tar.gz (12.5 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

panelformer-0.2.3-py3-none-any.whl (15.8 kB view details)

Uploaded Python 3

File details

Details for the file panelformer-0.2.3.tar.gz.

File metadata

  • Download URL: panelformer-0.2.3.tar.gz
  • Upload date:
  • Size: 12.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.12.9

File hashes

Hashes for panelformer-0.2.3.tar.gz
Algorithm Hash digest
SHA256 f058c373b12528a88786b9848620f86853c18776186d5ee3c25522aa14ee8c0d
MD5 641580636677568c1f3d3ec84c4fb6bc
BLAKE2b-256 f9862df8243f3c3415512af08e7f578486a74de14ffecd1c62d94ab1d2f2a8ef

See more details on using hashes here.

Provenance

The following attestation bundles were made for panelformer-0.2.3.tar.gz:

Publisher: release.yml on aaivu/Panelformer

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file panelformer-0.2.3-py3-none-any.whl.

File metadata

  • Download URL: panelformer-0.2.3-py3-none-any.whl
  • Upload date:
  • Size: 15.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.12.9

File hashes

Hashes for panelformer-0.2.3-py3-none-any.whl
Algorithm Hash digest
SHA256 3d66b2148823cecad52da912eda4a2cf73765dc97f9e8bbbd036f17c2da26c8f
MD5 fc02596ecb10362c624f26493dd9b954
BLAKE2b-256 52b3a7a0ec000f07b597f52b8599d52f7e90a48fa5edf224d0abb37ac89e1720

See more details on using hashes here.

Provenance

The following attestation bundles were made for panelformer-0.2.3-py3-none-any.whl:

Publisher: release.yml on aaivu/Panelformer

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page