Forecast Model Selection
Compare forecast accuracy between competing models.
Diebold-Mariano Test
Compare predictive accuracy of two forecasts.
Parameters
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
actual | DOUBLE | Yes | - | Actual values |
forecast1 | DOUBLE | Yes | - | First forecast |
forecast2 | DOUBLE | Yes | - | Second forecast |
options | MAP | No | - | Configuration options |
Options MAP:
| Option | Type | Default | Description |
|---|---|---|---|
loss | VARCHAR | mse | mse, mae, or mape |
alternative | VARCHAR | two_sided | two_sided, less, greater |
Output
| Field | Type | Description |
|---|---|---|
statistic | DOUBLE | DM test statistic |
p_value | DOUBLE | p-value |
better_model | INTEGER | 1 or 2 (which forecast is better) |
Example
SELECT anofox_stats_diebold_mariano_agg(
actual,
forecast1,
forecast2,
MAP {'loss': 'mse'}
) as result
FROM forecast_data;
Clark-West Test
Nested model comparison for forecasts. More powerful than Diebold-Mariano when comparing nested models.
Parameters
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
actual | DOUBLE | Yes | - | Actual values |
forecast1 | DOUBLE | Yes | - | First forecast (restricted model) |
forecast2 | DOUBLE | Yes | - | Second forecast (unrestricted model) |
Output
| Field | Type | Description |
|---|---|---|
statistic | DOUBLE | CW test statistic |
p_value | DOUBLE | p-value |
Example
SELECT anofox_stats_clark_west_agg(
actual,
forecast1,
forecast2
) as result
FROM forecast_data;
Choosing Between Tests
| Scenario | Recommended Test |
|---|---|
| Non-nested models | Diebold-Mariano |
| Nested models | Clark-West |
| Large errors matter more | DM with loss: 'mse' |
| Robust to outliers | DM with loss: 'mae' |
| Percentage errors | DM with loss: 'mape' |