Source code for delaynet.detrending_methods.delta

"""Delta detrending."""

from numpy import copy, size, mean, integer

from ..decorators import detrending_method


[docs] @detrending_method def delta(ts, window_size: int = 10): r"""Delta detrending. Local mean subtraction. Subtract the local mean, mean([x_{t - w}, ..., x_{t + w}]), from each value x_t. .. math:: x_t' = x_t - \left(2w + 1\right)^{-1} \sum_{k = t - w}^{t + w} x_k :param ts: Time series to detrend. :type ts: numpy.ndarray :param window_size: Window size to use for calculating the mean. Must be a positive integer. :type window_size: int :return: Detrended time series. :rtype: numpy.ndarray :raises ValueError: If the window_size is not a positive integer. """ # Validate window_size if not isinstance(window_size, (int, integer)) or window_size <= 0: raise ValueError(f"window_size must be a positive integer, not {window_size}.") ts2 = copy(ts) for k in range(size(ts)): off1 = k - window_size off1 = max(off1, 0) sub_ts = ts[off1 : (k + window_size)] ts2[k] = ts[k] - mean(sub_ts) return ts2