Growth

Use model_components.growth to specify the growth.

Growth is used to model the overall trend of your data over time.

To understand the growth characteristics of your dataset, plot your input training data over time, smoothing out local variation as necessary. For example, aggregate hourly data to the weekly total, and plot the overall trend. See Examine Input Data for details.

By default, silverkite and prophet use linear growth. Linear growth is commonly seen, which implies a constant growth rate over time (e.e. constant y/y growth).

Note

In some cases, a metric exhibits linear growth, but the slope changes at certain points. For example, a ramp or external event accelerates the rate of growth.

In this case, choose linear growth, and add changepoints to allow the slope to change. This fits a piecewise linear trend. For more information, see Changepoints.

Silverkite

Examples:

growth = dict(growth_term="linear")     # constant growth rate (default)
growth = dict(growth_term="quadratic")  # growth rate increases over time
growth = dict(growth_term="sqrt")       # growth rate decreases over time
growth = dict(growth_term=None)         # no growth term
growth = None                           # same as "linear"
growth = dict(growth_term=["linear", "quadratic"])  # grid search over each option

Note

quadratic and sqrt may apply to some datasets, but tend not to extrapolate well very far into future. If you use these, make sure it is reasonable to expect future growth rate to increase/diminish accordingly for the full training period and forecast_horizon.

Note

You may need to set the pipeline parameter estimator__origin_for_time_vars for proper historical backtesting. See Custom Parameters.

Custom growth term

You can use any parametric function of time to specify growth by leveraging the changepoints specification. See Custom Growth.

While it’s possible to provide any custom growth curve as a regressor (Regressors), use changepoints when possible:

  • Silverkite does not know if regressors should be considered part of the trend.

  • Thus, by default, interactions with trend would not include your regressor. See feature_sets_enabled at Custom Parameters.

  • You can add those interactions yourself via extra_pred_cols. See Custom Parameters.

Prophet

Examples:

growth = dict(growth_term=["linear"])     # linear, unbounded growth (default)
growth = dict(growth_term=["logistic"])   # saturating maximum or minimum growth
growth = None                             # same as "linear"
growth = dict(growth_term=["linear", "logistic"])  # grid search over each option

Prophet allows forecasts with saturating maximum or minimum using logistic trend, with specified cap and floor respectively. For example, user growth bounded by total addressable market. More details at Prophet docs.