- Mean Absolute Scaled Error (MASE) normalizes forecast errors by the average error of a naive "random walk" forecast (using the previous value as th...
Mean Absolute Scaled Error (MASE) normalizes forecast errors by the average error of a naive "random walk" forecast (using the previous value as the prediction). This makes MASE scale-independent and interpretable across different time series.
## Architecture & Physics
MASE computes a ratio: the mean absolute error of your predictions divided by the mean absolute error of a naive forecast. The naive forecast simply predicts that tomorrow's value equals today's value.
### Interpretation Guide
| MASE Value | Interpretation |
| ---------- | -------------- |
| **MASE < 1** | Forecast is better than naive (good) |
| **MASE > 1** | Forecast is worse than naive (bad) |
| **MASE = 0** | Perfect forecast |
The naive baseline captures the inherent "forecastability" of the series. A highly volatile series has a larger naive error, making a given absolute error less significant.
| **Complexity** | O(1) | Constant time per update |
| **Accuracy** | 9/10 | Handles edge cases well |
| **Timeliness** | 7/10 | Rolling window introduces lag |
| **Robustness** | 10/10 | Works with zero/negative values |
## Common Pitfalls
### Flat Series Problem
When the actual series is constant (no change between values), the scale becomes zero. The implementation handles this by returning the raw MAE when scale is near zero.
### Initial Warmup
The scale calculation requires at least two values (to compute differences). During warmup, MASE defaults to MAE / 1.0.
### Different from Other Scaled Metrics
Unlike MAPE which scales by actual values, MASE scales by the difficulty of the forecasting problem itself.
## Usage
```csharp
// Create MASE calculator with period 14
varmase=newMase(14);
// Stream values
varresult=mase.Update(actual,predicted);
Console.WriteLine($"MASE: {result.Value:F4}");
// MASE < 1 = better than naive, MASE > 1 = worse than naive