ESST
ESST entangles past and future Hankel matrices before decomposition and scores how their contributions differ. It is a one-dimensional research method intended for changes in local signal structure.
Use the tuning guide for a parameter-by-parameter workflow and runtime advice.
Parameters
window_length:int- Subsequence length in samples and main temporal scale.
n_windows:int, optional- Number of subsequences per side. Defaults to
window_length // 2. lag:int, optional- Separation between compared matrices. Defaults to
n_windows. rank:int, default5- Number of singular directions used by the score.
scale:bool, defaultTrue- Min-max scale the signal to
[1, 2]. method:{"fbrsvd", "rsvd"}, default"fbrsvd"- Randomized decomposition implementation. Use
"rsvd"with fast Hankel products. random_rank:int, optional- Sampled randomized-SVD dimension. Defaults to at most
rank + 10. scoring_step:int, default1- Distance in samples between evaluated positions.
use_fast_hankel:bool, defaultFalse- Use implicit FFT-based Hankel products. Requires
method="rsvd". mitigate_offset:bool, defaultFalse- Remove column-wise offsets. Cannot be combined with fast Hankel products.
Methods
transform(time_series)
time_series:numpy.ndarray, shape(n_samples,)- Signal to score.
Returns
score:numpy.ndarray, shape(n_samples,)- Entangled subspace-change score with an initial zero-padded region.
Minimal Example
import numpy as np
from changepoynt.algorithms.esst import ESST
signal = np.r_[np.sin(np.linspace(0, 8 * np.pi, 200)),
np.sin(np.linspace(0, 20 * np.pi, 200))]
score = ESST(window_length=40).transform(signal)
Reference: Boelter et al. (2025).