Dokumentation (english)

Exponential Smoothing

Simple and effective forecasting method that weights recent observations more heavily

Exponential Smoothing (also known as ETS - Error, Trend, Seasonality) models trend and seasonality components with exponentially decreasing weights for older observations. It's simpler than ARIMA and performs well for many business forecasting tasks.

When to Use Exponential Smoothing

Exponential Smoothing is best suited for:

  • Time series with clear trends and/or seasonal patterns
  • Business forecasting where simplicity is valued
  • When you want automatic handling of level, trend, and seasonality
  • Short to medium-term forecasts
  • Data without complex autocorrelation structures
  • Scenarios where ARIMA is too complex or parameter tuning is difficult
  • Fast prototyping and baseline models

Strengths

  • Simple to understand and implement
  • Fewer parameters than ARIMA/SARIMA
  • Fast training and forecasting
  • Handles trend and seasonality explicitly
  • Robust to missing data
  • Well-suited for business forecasting
  • Provides smooth forecasts
  • Good baseline model for comparison
  • Handles level shifts naturally

Weaknesses

  • Limited to univariate forecasting
  • Cannot incorporate exogenous variables
  • Assumes exponential decay of influence (may not fit all data)
  • Less flexible than ARIMA for complex autocorrelation patterns
  • Forecast intervals can be overly optimistic
  • Not ideal for series with irregular patterns
  • Struggles with sudden structural changes
  • Limited interpretability of parameters compared to ARIMA

Parameters

Common Time Series Parameters

All time series models share these parameters:

  • Timestamp Column (required): Column containing dates/times
  • Target Column (required): Numeric value to forecast
  • Frequency (optional): Time spacing (D, H, W, M). Auto-inferred if not specified
  • Forecast Steps (required, default=1): How many periods to predict

Exponential Smoothing-Specific Parameters

Trend Type

  • Type: String
  • Default: 'add'
  • Options: ['add', 'mul', null]
  • Description: How to model the trend component
    • 'add' (additive): Trend is added to the level (constant amount per period)
    • 'mul' (multiplicative): Trend is multiplied with the level (percentage growth)
    • null: No trend component (use for stationary data)
  • Guidance:
    • Use 'add' for linear trends (constant growth/decline)
    • Use 'mul' for exponential trends (percentage growth)
    • Use null for flat/stationary series

Seasonal Type

  • Type: String
  • Default: 'add'
  • Options: ['add', 'mul', null]
  • Description: How to model the seasonal component
    • 'add' (additive): Seasonal effect is constant (e.g., +100 units every December)
    • 'mul' (multiplicative): Seasonal effect is proportional (e.g., +10% every December)
    • null: No seasonality
  • Guidance:
    • Use 'add' when seasonal variation is constant across time
    • Use 'mul' when seasonal variation grows with the level
    • Use null for non-seasonal data

Seasonal Periods

  • Type: Integer
  • Default: 12
  • Description: Number of periods in one seasonal cycle
  • Common Values:
    • 7 for weekly seasonality in daily data
    • 12 for yearly seasonality in monthly data
    • 24 for daily seasonality in hourly data
    • 4 for quarterly seasonality
  • Requirement: Only used if seasonal type is not null

Configuration Tips

Choosing Trend Type

Additive Trend ('add'):

  • Series increases/decreases by roughly constant amount
  • Example: Daily sales growing by 10 units per day
  • Linear growth pattern

Multiplicative Trend ('mul'):

  • Series grows/declines by percentage
  • Example: Monthly users growing by 5% per month
  • Exponential growth pattern

No Trend (null):

  • Series fluctuates around a stable mean
  • Example: Daily temperature (no long-term trend)

Choosing Seasonal Type

Additive Seasonal ('add'):

  • Seasonal peaks/troughs are constant over time
  • Example: Ice cream sales always +500 units in summer regardless of overall level
  • Use when seasonal variation doesn't change as the series grows

Multiplicative Seasonal ('mul'):

  • Seasonal peaks/troughs grow with the level
  • Example: Retail sales 20% higher in December, regardless of absolute values
  • Use when seasonal variation is proportional to the trend

No Seasonal (null):

  • No repeating patterns
  • Example: Stock returns (random fluctuations)

Model Selection Guide

Common configurations and when to use them:

ETS(A,A,A) - Additive Everything:

  • Trend: Additive
  • Seasonal: Additive
  • Use for: Linear trend with constant seasonal variation
  • Example: Monthly sales with steady growth and stable December spike

ETS(A,N,A) - No Trend:

  • Trend: None
  • Seasonal: Additive
  • Use for: Stationary series with seasonality
  • Example: Daily temperature (seasonal but no long-term trend)

ETS(A,A,N) - No Seasonality:

  • Trend: Additive
  • Seasonal: None
  • Use for: Trending series without seasonality
  • Example: Cumulative user signups

ETS(M,N,M) - Multiplicative Seasonal:

  • Trend: None
  • Seasonal: Multiplicative
  • Use for: Percentage-based seasonal effects
  • Example: Quarterly revenue with stable growth

ETS(M,M,M) - Multiplicative Everything:

  • Trend: Multiplicative
  • Seasonal: Multiplicative
  • Use for: Exponential growth with proportional seasonality
  • Example: Viral app installs

Setting Seasonal Periods

Ensure seasonal_periods matches your data:

  • Daily data with weekly patterns: seasonal_periods=7
  • Monthly data with yearly patterns: seasonal_periods=12
  • Hourly data with daily patterns: seasonal_periods=24

Data Requirements

  • Minimum for trend: 2× seasonal_periods observations
  • Minimum for seasonality: 2 complete seasonal cycles
  • Example: For monthly data (s=12), need at least 24 months

Common Issues and Solutions

Issue: Forecasts Don't Capture Seasonality

Solution:

  • Verify seasonal_periods matches your data (7 for weekly, not 52 for yearly in daily data)
  • Ensure at least 2 complete seasonal cycles in training data
  • Try switching from 'add' to 'mul' or vice versa
  • Check if seasonality is actually present (inspect plots)

Issue: Forecasts Grow Unrealistically

Solution:

  • Multiplicative trend may be extrapolating exponential growth
  • Switch to additive trend: trend='add'
  • Use trend=null if no long-term trend expected
  • Consider damped trend versions (not all implementations support this)

Issue: Forecasts Are Too Smooth

Solution:

  • Exponential Smoothing produces smooth forecasts by design
  • For more adaptive forecasts, try ARIMA or Prophet
  • Consider whether smoothness is actually desirable for your use case

Issue: Model Fails to Train

Solution:

  • Check for negative values with multiplicative components (require positive data)
  • Ensure sufficient data for seasonal_periods
  • Try simpler configuration (fewer components)
  • Remove or impute missing values

Issue: Need to Incorporate External Variables

Solution:

  • Exponential Smoothing doesn't support exogenous variables
  • Use SARIMAX or Prophet with additional regressors
  • Alternatively, detrend using external variables, then apply exponential smoothing to residuals

Issue: Sudden Level Shifts Not Captured

Solution:

  • Exponential Smoothing adapts slowly to level shifts
  • Use Prophet with changepoints for structural breaks
  • Consider intervention analysis or separate models pre/post shift
  • Try ARIMA with appropriate differencing

Issue: Multiplicative Model Requires Positive Data

Solution:

  • Multiplicative components require all values > 0
  • Transform data: add constant to make all values positive
  • Or use additive components instead
  • For strictly positive data (counts, prices), multiplicative is often better

Example Use Cases

Monthly Retail Sales (Linear Growth, Seasonal)

trend='add'
seasonal='add'
seasonal_periods=12

Captures consistent monthly growth and December spikes.

Daily Website Traffic (No Trend, Weekly Pattern)

trend=null
seasonal='add'
seasonal_periods=7

Models day-of-week effects without assuming long-term trend.

Quarterly Revenue (Exponential Growth, Seasonal)

trend='mul'
seasonal='mul'
seasonal_periods=4

Handles percentage-based growth and Q4 seasonality.

Hourly Energy Consumption (No Trend, Daily Cycle)

trend=null
seasonal='add'
seasonal_periods=24

Captures intraday usage patterns.

Weekly Users (Growth, No Seasonality)

trend='add'
seasonal=null

Simple trend model for steadily growing metric.

Comparison with Other Models

vs ARIMA:

  • Exponential Smoothing: Simpler, fewer parameters, explicit components
  • ARIMA: More flexible, captures complex autocorrelation, requires tuning

vs SARIMA:

  • Exponential Smoothing: Easier to configure, faster
  • SARIMA: More parameters to tune, can model richer patterns

vs Prophet:

  • Exponential Smoothing: Faster, simpler for standard patterns
  • Prophet: Better for multiple seasonalities, holidays, external regressors

vs Auto ARIMA:

  • Exponential Smoothing: More interpretable components
  • Auto ARIMA: Automatic order selection, potentially better fit

Technical Details

Exponential Smoothing models have the form:

  • Level: Smoothed average of the series
  • Trend: Rate of change over time
  • Seasonal: Repeating pattern

Forecasts combine these components:

  • Additive: Forecast = Level + Trend + Seasonal
  • Multiplicative: Forecast = Level × Trend × Seasonal
  • Mixed: Forecast = (Level + Trend) × Seasonal or Level × (Trend + Seasonal)

Command Palette

Search for a command to run...

Schnellzugriffe
STRG + KSuche
STRG + DNachtmodus / Tagmodus
STRG + LSprache ändern

Software-Details
Kompiliert vor 1 Tag
Release: v4.0.0-production
Buildnummer: master@64a3463
Historie: 68 Items