Skip to main content

Changepoint detection

Changepoint detection attempts to identify timestamps where a time series has changed behaviour. For example, it could be used to identify sudden changes in the magnitude or the variance of a time series.

The SceneChangepointDetector component from scenes-ml can be used to add this functionality to all series in a panel. This component will add an annotation at every detected changepoint.

Panel with changepoints added

warning

Changepoint detection is currently a beta feature. The underlying algorithm may perform slowly for certain panels, so be sure to test it thoroughly before using it.

Usage​

The code example below demonstrates how to add changepoint detection to a time series panel.

import { SceneChangepointDetector } from '@grafana/scenes-ml';

// Default values are shown here, all are optional.
const changepointDetector = new SceneChangepointDetector({
enabled: false,
pinned: false,
onChangepointDetected: (changepoint: Changepoint) => {},
});
const panel = PanelBuilders.timeseries().setHeaderActions([outlierDetector]).build();
note

Make sure you only add changepoint detection to time series panels, as it rarely makes sense for other panel types.

Pinning results​

By default, baselines are recalculated on every state change, i.e. whenever the time range, query or interval changes. This isn't always desirable: for example, the user may want to zoom out and view the current forecasts in a future time range.

Enabling the pinned setting will freeze the current results, so they won't be recalculated as the time range or other settings are changed.

Technical details​

scenes-ml currently uses the AutoRegressive Gaussian Process Change Point detection (ARGPCP) algorithm, which can be slow in some cases. Alternative algorithms may be added in future.