ARIMA Forecasting
Automatic ARIMA/SARIMA — classic statistical univariate time series forecasting
Overview
- Model ID:
arima-forecasting - Framework: pmdarima (
auto_arima) - Best for: Univariate time series, interpretable statistical models
- GPU required: No (CPU-only)
- Training time: 1-10 minutes
ARIMA (AutoRegressive Integrated Moving Average) is a classic statistical model for time series forecasting. ColabHive uses pmdarima with automatic order selection (p, d, q) and optional seasonal components (P, D, Q, m).
When to Use
✅ Perfect for:
- Univariate time series (single series)
- Datasets with clear seasonal patterns (daily, weekly, monthly)
- Use cases requiring interpretable models
- Small datasets (ARIMA works well with few data points)
- Production systems requiring fast, lightweight inference
❌ Not ideal for:
- Multi-column forecasting (use
classical-forecasting-auto) - Very long-horizon forecasts (>1 year) with complex patterns
- Non-stationary series without differencing
Quick Start
from colabhive import ColabHive
client = ColabHive(api_key="...", account_id="...")
# Upload time series dataset
dataset = client.datasets.upload(
name="sales-series",
file="./sales.csv",
)
# Train ARIMA (auto order selection)
job = client.training.create(
model="arima-forecasting",
dataset_id=dataset.id,
hyperparameters={
"date_column": "date",
"target_column": "sales",
"seasonal": True,
"m": 12, # Monthly seasonality
}
)
job.wait()
print(job.get_metrics())
Dataset Format
Your CSV should have at minimum a date column and a target column:
date,sales
2023-01-01,1200
2023-02-01,1350
2023-03-01,1100
...
Requirements:
- Date column must be parseable by pandas (
YYYY-MM-DDrecommended) - Minimum 24 data points for reliable order selection
- Regularly spaced time intervals (daily, monthly, etc.)
Hyperparameters
| Parameter | Default | Description |
|---|---|---|
date_column | "date" | Name of the date/timestamp column |
target_column | "target" | Name of the column to forecast |
seasonal | true | Enable seasonal ARIMA (SARIMA) |
m | 1 | Seasonal period (12=monthly, 7=daily-weekly, 4=quarterly) |
max_p | 5 | Max AR order to search |
max_q | 5 | Max MA order to search |
max_d | 2 | Max differencing order |
information_criterion | "aic" | Model selection criterion (aic, bic, hqic) |
forecast_horizon | 12 | Number of periods to forecast |
Common m values
| Frequency | m value |
|---|---|
| Daily (weekly seasonality) | 7 |
| Monthly (yearly seasonality) | 12 |
| Quarterly | 4 |
| Weekly (yearly seasonality) | 52 |
| No seasonality | 1 |
Output Metrics
After training, job.get_metrics() returns:
{
"aic": 245.3,
"bic": 260.1,
"mae": 42.5,
"rmse": 58.3,
"mape": 3.8,
"order": [2, 1, 1],
"seasonal_order": [1, 1, 0, 12]
}
- AIC/BIC: Lower is better (model complexity penalty)
- MAE: Mean Absolute Error
- RMSE: Root Mean Squared Error
- MAPE: Mean Absolute Percentage Error (%)
- order: Final (p, d, q) selected
- seasonal_order: Final (P, D, Q, m) selected
Register and Use for Inference
# Register as inference endpoint
endpoint = client.training.register_for_inference(
run_id=job.id,
name="arima-sales-forecast",
description="Monthly sales ARIMA model",
visibility="account",
)
# Predict next 6 months
result = client.endpoints.infer(
endpoint_id=endpoint.endpoint_id,
input_data={"forecast_horizon": 6},
)
print(result["result"])
Comparison with Other Time Series Models
| Model | Univariate | Multi-series | GPU | Auto-select | Best for |
|---|---|---|---|---|---|
arima-forecasting | ✅ | ❌ | ❌ | ✅ | Classic statistical, interpretable |
prophet-forecasting | ✅ | ❌ | ❌ | — | Seasonal patterns, holidays, credible intervals |
classical-forecasting-auto | ✅ | ✅ | ❌ | ✅ | Multi-column, auto model selection per series |
timesfm-2.5-finetune-gpu | ✅ | ✅ | ✅ | — | Foundation model, quantile predictions, complex patterns |
Learn More
- Classical Forecasting (Auto) — multi-series auto-selection
- Prophet Forecasting — holiday/seasonality decomposition
- TimesFM 2.5 — GPU foundation model
- Preparing Datasets
- Hyperparameter Tuning