Initial commit
This commit is contained in:
140
skills/aeon/references/forecasting.md
Normal file
140
skills/aeon/references/forecasting.md
Normal file
@@ -0,0 +1,140 @@
|
||||
# Time Series Forecasting
|
||||
|
||||
Aeon provides forecasting algorithms for predicting future time series values.
|
||||
|
||||
## Naive and Baseline Methods
|
||||
|
||||
Simple forecasting strategies for comparison:
|
||||
|
||||
- `NaiveForecaster` - Multiple strategies: last value, mean, seasonal naive
|
||||
- Parameters: `strategy` ("last", "mean", "seasonal"), `sp` (seasonal period)
|
||||
- **Use when**: Establishing baselines or simple patterns
|
||||
|
||||
## Statistical Models
|
||||
|
||||
Classical time series forecasting methods:
|
||||
|
||||
### ARIMA
|
||||
- `ARIMA` - AutoRegressive Integrated Moving Average
|
||||
- Parameters: `p` (AR order), `d` (differencing), `q` (MA order)
|
||||
- **Use when**: Linear patterns, stationary or difference-stationary series
|
||||
|
||||
### Exponential Smoothing
|
||||
- `ETS` - Error-Trend-Seasonal decomposition
|
||||
- Parameters: `error`, `trend`, `seasonal` types
|
||||
- **Use when**: Trend and seasonal patterns present
|
||||
|
||||
### Threshold Autoregressive
|
||||
- `TAR` - Threshold Autoregressive model for regime switching
|
||||
- `AutoTAR` - Automated threshold discovery
|
||||
- **Use when**: Series exhibits different behaviors in different regimes
|
||||
|
||||
### Theta Method
|
||||
- `Theta` - Classical Theta forecasting
|
||||
- Parameters: `theta`, `weights` for decomposition
|
||||
- **Use when**: Simple but effective baseline needed
|
||||
|
||||
### Time-Varying Parameter
|
||||
- `TVP` - Time-varying parameter model with Kalman filtering
|
||||
- **Use when**: Parameters change over time
|
||||
|
||||
## Deep Learning Forecasters
|
||||
|
||||
Neural networks for complex temporal patterns:
|
||||
|
||||
- `TCNForecaster` - Temporal Convolutional Network
|
||||
- Dilated convolutions for large receptive fields
|
||||
- **Use when**: Long sequences, need non-recurrent architecture
|
||||
|
||||
- `DeepARNetwork` - Probabilistic forecasting with RNNs
|
||||
- Provides prediction intervals
|
||||
- **Use when**: Need probabilistic forecasts, uncertainty quantification
|
||||
|
||||
## Regression-Based Forecasting
|
||||
|
||||
Apply regression to lagged features:
|
||||
|
||||
- `RegressionForecaster` - Wraps regressors for forecasting
|
||||
- Parameters: `window_length`, `horizon`
|
||||
- **Use when**: Want to use any regressor as forecaster
|
||||
|
||||
## Quick Start
|
||||
|
||||
```python
|
||||
from aeon.forecasting.naive import NaiveForecaster
|
||||
from aeon.forecasting.arima import ARIMA
|
||||
import numpy as np
|
||||
|
||||
# Create time series
|
||||
y = np.array([1, 2, 3, 4, 5, 6, 7, 8, 9, 10])
|
||||
|
||||
# Naive baseline
|
||||
naive = NaiveForecaster(strategy="last")
|
||||
naive.fit(y)
|
||||
forecast_naive = naive.predict(fh=[1, 2, 3])
|
||||
|
||||
# ARIMA model
|
||||
arima = ARIMA(order=(1, 1, 1))
|
||||
arima.fit(y)
|
||||
forecast_arima = arima.predict(fh=[1, 2, 3])
|
||||
```
|
||||
|
||||
## Forecasting Horizon
|
||||
|
||||
The forecasting horizon (`fh`) specifies which future time points to predict:
|
||||
|
||||
```python
|
||||
# Relative horizon (next 3 steps)
|
||||
fh = [1, 2, 3]
|
||||
|
||||
# Absolute horizon (specific time indices)
|
||||
from aeon.forecasting.base import ForecastingHorizon
|
||||
fh = ForecastingHorizon([11, 12, 13], is_relative=False)
|
||||
```
|
||||
|
||||
## Model Selection
|
||||
|
||||
- **Baseline**: NaiveForecaster with seasonal strategy
|
||||
- **Linear patterns**: ARIMA
|
||||
- **Trend + seasonality**: ETS
|
||||
- **Regime changes**: TAR, AutoTAR
|
||||
- **Complex patterns**: TCNForecaster
|
||||
- **Probabilistic**: DeepARNetwork
|
||||
- **Long sequences**: TCNForecaster
|
||||
- **Short sequences**: ARIMA, ETS
|
||||
|
||||
## Evaluation Metrics
|
||||
|
||||
Use standard forecasting metrics:
|
||||
|
||||
```python
|
||||
from aeon.performance_metrics.forecasting import (
|
||||
mean_absolute_error,
|
||||
mean_squared_error,
|
||||
mean_absolute_percentage_error
|
||||
)
|
||||
|
||||
# Calculate error
|
||||
mae = mean_absolute_error(y_true, y_pred)
|
||||
mse = mean_squared_error(y_true, y_pred)
|
||||
mape = mean_absolute_percentage_error(y_true, y_pred)
|
||||
```
|
||||
|
||||
## Exogenous Variables
|
||||
|
||||
Many forecasters support exogenous features:
|
||||
|
||||
```python
|
||||
# Train with exogenous variables
|
||||
forecaster.fit(y, X=X_train)
|
||||
|
||||
# Predict requires future exogenous values
|
||||
y_pred = forecaster.predict(fh=[1, 2, 3], X=X_test)
|
||||
```
|
||||
|
||||
## Base Classes
|
||||
|
||||
- `BaseForecaster` - Abstract base for all forecasters
|
||||
- `BaseDeepForecaster` - Base for deep learning forecasters
|
||||
|
||||
Extend these to implement custom forecasting algorithms.
|
||||
Reference in New Issue
Block a user