MODULE REFERENCE
diff
anomx.data.processing.transformers.diffDifferencing Transformer
Diff
Diff(lags: int | Sequence[int] = 1, dropna: bool = True, name: str = 'Diff', n_jobs: int = 1, verbose: bool = False, columns: str | list[str] | None = None)Bases: FittableDataTransformer, InvertibleDataTransformer
| Parameter | Type | Default |
|---|---|---|
lags | int | Sequence[int] | 1 |
dropna | bool | True |
name | str | 'Diff' |
n_jobs | int | 1 |
verbose | bool | False |
columns | str | list[str] | None | None |
Differencing data transformer.
Differencing is typically applied to a time series to make it stationary; see [1]_ for further details. The transformation is applied independently over each dimension (component) and sample of the time series.
Notes
Diff sequentially applies a series of m-lagged differencing operations (i.e. y\prime_t = y_t - y_{t-m}) to a time series; please refer to [2]_ for further details about lagged differencing. The m value to use for each differencing operation is specified by the lags parameter; for example, setting lags = [1, 12] first applies 1-lagged differencing to the time series, and then 12-lagged differencing to the 1-lagged differenced series.
Each element in lags represents a single first-order differencing operation, so the 'total order' of the differencing equals len(lags). To specify second-order differencing then (i.e. the equivalent of series.diff(n=2)), one should specify lags = [1,1] (i.e. two sequential 1-lagged, first-order differences); see [3]_ for further details on second-order differencing.
Upon computing each m-lagged difference, the first m values of the time series are 'lost', since differences cannot be computed for these values. The length of a series transformed by Diff(lags=lags) will therefore be series.n_timesteps - sum(lags).
Parameters
- name
A specific name for the transformer
- lags
Specifies the lag values to be used for each first-order differencing operation (i.e. the
mvalue iny'_t = y_t - y_{t-m}). If a single int is provided, only one differencing operation is performed with this specified lag value. If a sequence of ints is provided, multiple differencing operations are sequentially performed using each value inlags, one after the other. For example, specifyinglags = [2, 3]will effectively computeseries.diff(n=1, periods=2).diff(n=1, periods=3).- dropna
Optionally, specifies if values which can't be differenced (i.e. at the start of the series) should be dropped. This applies to all time series columns, also the ones potentially ignored via the
columnsparameter or anycomponent_maskpassed to downstream methods.- n_jobs
The number of jobs to run in parallel. Parallel jobs are created only when a
Sequence[TimeSeries]is passed as input, parallelising operations regarding differentTimeSeries. Defaults to1(sequential). Setting the parameter to-1means using all the available processors. Note: for a small amount of data, the parallelisation overhead could end up increasing the total required amount of time.- verbose
Whether to print operations progress
- columns
Optionally, a string or list of strings specifying the names of the components (columns) to transform. If specified, only these components will be transformed, and the remaining components will be kept untouched. For more information refer to the
BaseDataTransformerdocumentation. In case the transformer is applied on multiple TimeSeries, it is expected that all series have the same column order.
Examples
>>> from anomx.data.timeseries import TimeSeries
>>> from anomx.data.processing.transformers import Diff
>>> series = TimeSeries.from_values([112., 118., 132., 129., 121., 135.])
>>> first_order_diff = Diff(lags=1, dropna=True).fit_transform(series)
>>> print(first_order_diff.values()[:5])
[[ 6.]
[14.]
[-3.]
[-8.]
[14.]]
>>> second_order_diff = Diff(lags=[1, 2], dropna=False).fit_transform(series)
>>> print(second_order_diff.values()[:5])
[[ nan]
[ nan]
[ nan]
[ -9.]
[-22.]]References
.. [1] https://otexts.com/fpp2/stationarity.html .. [2] https://otexts.com/fpp2/stationarity.html#seasonal-differencing .. [3] https://otexts.com/fpp2/stationarity.html#second-order-differencing
Members
ts_fitstaticmethod
ts_fit(series: TimeSeries, params: Mapping[str, Any], **kwargs) -> Any| Parameter | Type | Default |
|---|---|---|
series | TimeSeries | required |
params | Mapping[str, Any] | required |
**kwargs | — | — |
Returns Any
ts_transformstaticmethod
ts_transform(series: TimeSeries, params: Mapping[str, Any], **kwargs) -> TimeSeries| Parameter | Type | Default |
|---|---|---|
series | TimeSeries | required |
params | Mapping[str, Any] | required |
**kwargs | — | — |
Returns TimeSeries
ts_inverse_transformstaticmethod
ts_inverse_transform(series: TimeSeries, params: Mapping[str, Any], insample: TimeSeries | None = None, **kwargs) -> TimeSeries| Parameter | Type | Default |
|---|---|---|
series | TimeSeries | required |
params | Mapping[str, Any] | required |
insample | TimeSeries | None | None |
**kwargs | — | — |
Returns TimeSeries
Inherited members
fitFittableDataTransformertransformFittableDataTransformerfit_transformFittableDataTransformerset_verboseBaseDataTransformerset_n_jobsBaseDataTransformerapply_component_maskBaseDataTransformerunapply_component_maskBaseDataTransformerstack_samplesBaseDataTransformerunstack_samplesBaseDataTransformernameBaseDataTransformerinverse_transformInvertibleDataTransformer