Skip to main content

Baseline Models

Simple benchmark methods for comparison and quick forecasts.

ModelDescription
NaiveRepeats the last observed value
SeasonalNaiveRepeats values from previous seasonal cycle
SMASimple Moving Average
RandomWalkDriftRandom walk with drift (trend)
Showing 4 of 4

Naive

Repeats the last observed value for all forecast horizons.

Example

SELECT * FROM anofox_fcst_ts_forecast(
'sales_data',
'date',
'sales',
'Naive',
14,
MAP{}
);

Best for: Establishing baseline, random walk data.


SeasonalNaive

Repeats values from the same period in the previous seasonal cycle.

Parameters

ParameterTypeRequiredDescription
seasonal_periodINTEGERYesSeasonal period

Example

-- Weekly seasonality: forecast = same day last week
SELECT * FROM anofox_fcst_ts_forecast(
'weekly_sales',
'date',
'sales',
'SeasonalNaive',
28,
MAP{'seasonal_period': '7'}
);

Best for: Strong seasonal patterns, limited data.


SMA (Simple Moving Average)

Average of the last N observations.

Parameters

ParameterTypeDefaultDescription
windowINTEGER7Number of observations to average

Example

SELECT * FROM anofox_fcst_ts_forecast(
'noisy_data',
'date',
'value',
'SMA',
14,
MAP{'window': '7'}
);

Best for: Smoothing noise, simple baseline.


RandomWalkDrift

Random walk with drift (trend). Adds average historical change to the last value.

Example

SELECT * FROM anofox_fcst_ts_forecast(
'trending_data',
'date',
'value',
'RandomWalkDrift',
28,
MAP{}
);

Best for: Trending data baseline, financial data.


Comparison

ModelHandles TrendHandles SeasonalitySpeed
NaiveNoNoFastest
SeasonalNaiveNoYesFast
SMASmoothedNoFast
RandomWalkDriftYesNoFast

When to Use Baseline Models

ScenarioRecommended
Establish performance baselineNaive
Strong weekly/yearly patternsSeasonalNaive
Noisy stationary dataSMA
Trending random walkRandomWalkDrift
Very limited dataSeasonalNaive
Real-time quick forecastNaive

Using Baselines for Comparison

Always compare your sophisticated model against baselines:

-- Compare AutoETS against SeasonalNaive
WITH baseline AS (
SELECT * FROM anofox_fcst_ts_forecast(
'sales', 'date', 'value', 'SeasonalNaive', 28, MAP{'seasonal_period': '7'}
)
),
model AS (
SELECT * FROM anofox_fcst_ts_forecast(
'sales', 'date', 'value', 'AutoETS', 28, MAP{}
)
)
SELECT
anofox_fcst_ts_mase(actual, model_pred, baseline_pred) as mase
FROM comparison_data;

If MASE < 1, your model beats the baseline.

🍪 Cookie Settings