STLTransformer#

class STLTransformer(sp=2, seasonal=7, trend=None, low_pass=None, seasonal_deg=1, trend_deg=1, low_pass_deg=1, robust=False, seasonal_jump=1, trend_jump=1, low_pass_jump=1)[source]#

Remove seasonal components from a time-series using STL.

The STLTransformer is a descriptive transformer to remove seasonality from a series and is based on statsmodels.STL. It returns deseasonalized data. All three components trend, season and residuals can be accessed via attributes trend_, season_ and resid_. STLTransformer can not transform or inverse_transform on data that was not given in fit() before. This means that for pipelining, the Deseasonalizer or Detrender must be used instead of STLTransformer.

Parameters
spint, default=1

Seasonal periodicity.

seasonalint, default=7

Length of the seasonal smoother. Must be an odd integer, and should normally be >= 7 (default).

trend{int, default=None}

Length of the trend smoother. Must be an odd integer. If not provided uses the smallest odd integer greater than 1.5 * period / (1 - 1.5 / seasonal), following the suggestion in the original implementation.

low_pass{int, default=None}

Length of the low-pass filter. Must be an odd integer >=3. If not provided, uses the smallest odd integer > period.

seasonal_degint, default=1

Degree of seasonal LOESS. 0 (constant) or 1 (constant and trend).

trend_degint, default=1

Degree of trend LOESS. 0 (constant) or 1 (constant and trend).

low_pass_degint, default=1

Degree of low pass LOESS. 0 (constant) or 1 (constant and trend).

robustbool, default False

Flag indicating whether to use a weighted version that is robust to some forms of outliers.

seasonal_jumpint, default=1

Positive integer determining the linear interpolation step. If larger than 1, the LOESS is used every seasonal_jump points and linear interpolation is between fitted points. Higher values reduce estimation time.

trend_jumpint, default=1

Positive integer determining the linear interpolation step. If larger than 1, the LOESS is used every trend_jump points and values between the two are linearly interpolated. Higher values reduce estimation time.

low_pass_jumpint, default=1

Positive integer determining the linear interpolation step. If larger than 1, the LOESS is used every low_pass_jump points and values between the two are linearly interpolated. Higher values reduce estimation time.

Attributes
trend_pd.Series

Trend component.

seasonal_pd.Series

Seasonal components.

resid_pd.Series

Residuals component.

See also

Detrender
Deseasonalizer
STLForecaster

References

1

https://www.statsmodels.org/devel/generated/statsmodels.tsa.seasonal.STL.html

Examples

>>> from sktime.datasets import load_airline
>>> from sktime.transformations.series.detrend import STLTransformer
>>> y = load_airline()
>>> transformer = STLTransformer(sp=12)
>>> y_hat = transformer.fit_transform(y)

Methods

check_is_fitted()

Check if the estimator has been fitted.

clone_tags(estimator[, tag_names])

clone/mirror tags from another estimator as dynamic override.

create_test_instance([parameter_set])

Construct Estimator instance if possible.

create_test_instances_and_names([parameter_set])

Create list of all test instances and a list of names for them.

fit(Z[, X])

Fit to data.

fit_transform(X[, y])

Fit to data, then transform it.

get_class_tag(tag_name[, tag_value_default])

Get tag value from estimator class (only class tags).

get_class_tags()

Get class tags from estimator class and all its parent classes.

get_params([deep])

Get parameters for this estimator.

get_tag(tag_name[, tag_value_default, …])

Get tag value from estimator class and dynamic tag overrides.

get_tags()

Get tags from estimator class and dynamic tag overrides.

get_test_params([parameter_set])

Return testing parameter settings for the estimator.

inverse_transform(Z[, X])

Inverse transform data.

is_composite()

Check if the object is composite.

reset()

Reset the object to a clean post-init state.

set_params(**params)

Set the parameters of this estimator.

set_tags(**tag_dict)

Set dynamic tags to given values.

transform(Z[, X])

Transform data.

update(X[, y, update_params])

Update transformer with X, optionally y.

fit(Z, X=None)[source]#

Fit to data.

Parameters
Zpd.Series
Xpd.DataFrame
Returns
selfan instance of self
transform(Z, X=None)[source]#

Transform data.

Returns a transformed version yt of y. The seasonal component is removed from y. The trend and residual components can be accessed via the attributes trend_ and resid_ for the fitted data.

Parameters
ypd.Series
Xpd.DataFrame
Returns
ytpd.Series
inverse_transform(Z, X=None)[source]#

Inverse transform data.

Returns a transformed version of y.

Parameters
ypd.Series
Xpd.DataFrame
Returns
ytpd.Series

Transformed time series.

check_is_fitted()[source]#

Check if the estimator has been fitted.

Raises
NotFittedError

If the estimator has not been fitted yet.

clone_tags(estimator, tag_names=None)[source]#

clone/mirror tags from another estimator as dynamic override.

Parameters
estimatorestimator inheriting from :class:BaseEstimator
tag_namesstr or list of str, default = None

Names of tags to clone. If None then all tags in estimator are used as tag_names.

Returns
Self

Reference to self.

Notes

Changes object state by setting tag values in tag_set from estimator as dynamic tags in self.

classmethod create_test_instance(parameter_set='default')[source]#

Construct Estimator instance if possible.

Parameters
parameter_setstr, default=”default”

Name of the set of test parameters to return, for use in tests. If no special parameters are defined for a value, will return “default” set.

Returns
instanceinstance of the class with default parameters

Notes

get_test_params can return dict or list of dict. This function takes first or single dict that get_test_params returns, and constructs the object with that.

classmethod create_test_instances_and_names(parameter_set='default')[source]#

Create list of all test instances and a list of names for them.

Parameters
parameter_setstr, default=”default”

Name of the set of test parameters to return, for use in tests. If no special parameters are defined for a value, will return “default” set.

Returns
objslist of instances of cls

i-th instance is cls(**cls.get_test_params()[i])

nameslist of str, same length as objs

i-th element is name of i-th instance of obj in tests convention is {cls.__name__}-{i} if more than one instance otherwise {cls.__name__}

parameter_setstr, default=”default”

Name of the set of test parameters to return, for use in tests. If no special parameters are defined for a value, will return “default” set.

fit_transform(X, y=None)[source]#

Fit to data, then transform it.

Fits the transformer to X and y and returns a transformed version of X.

State change:

Changes state to “fitted”.

Writes to self:

Sets is_fitted flag to True. Sets fitted model attributes ending in “_”.

Parameters
XSeries or Panel, any supported mtype
Data to be transformed, of python type as follows:

Series: pd.Series, pd.DataFrame, or np.ndarray (1D or 2D) Panel: pd.DataFrame with 2-level MultiIndex, list of pd.DataFrame,

nested pd.DataFrame, or pd.DataFrame in long/wide format

subject to sktime mtype format specifications, for further details see

examples/AA_datatypes_and_datasets.ipynb

ySeries or Panel, default=None

Additional data, e.g., labels for transformation

Returns
transformed version of X
type depends on type of X and scitype:transform-output tag:
X | tf-output | type of return |

|----------|————–|------------------------| | Series | Primitives | pd.DataFrame (1-row) | | Panel | Primitives | pd.DataFrame | | Series | Series | Series | | Panel | Series | Panel | | Series | Panel | Panel |

instances in return correspond to instances in X
combinations not in the table are currently not supported
Explicitly, with examples:
if X is Series (e.g., pd.DataFrame) and transform-output is Series

then the return is a single Series of the same mtype Example: detrending a single series

if X is Panel (e.g., pd-multiindex) and transform-output is Series
then the return is Panel with same number of instances as X

(the transformer is applied to each input Series instance)

Example: all series in the panel are detrended individually

if X is Series or Panel and transform-output is Primitives

then the return is pd.DataFrame with as many rows as instances in X Example: i-th row of the return has mean and variance of the i-th series

if X is Series and transform-output is Panel

then the return is a Panel object of type pd-multiindex Example: i-th instance of the output is the i-th window running over X

classmethod get_class_tag(tag_name, tag_value_default=None)[source]#

Get tag value from estimator class (only class tags).

Parameters
tag_namestr

Name of tag value.

tag_value_defaultany type

Default/fallback value if tag is not found.

Returns
tag_value

Value of the tag_name tag in self. If not found, returns tag_value_default.

classmethod get_class_tags()[source]#

Get class tags from estimator class and all its parent classes.

Returns
collected_tagsdict

Dictionary of tag name : tag value pairs. Collected from _tags class attribute via nested inheritance. NOT overridden by dynamic tags set by set_tags or mirror_tags.

get_params(deep=True)[source]#

Get parameters for this estimator.

Parameters
deepbool, default=True

If True, will return the parameters for this estimator and contained subobjects that are estimators.

Returns
paramsdict

Parameter names mapped to their values.

get_tag(tag_name, tag_value_default=None, raise_error=True)[source]#

Get tag value from estimator class and dynamic tag overrides.

Parameters
tag_namestr

Name of tag to be retrieved

tag_value_defaultany type, optional; default=None

Default/fallback value if tag is not found

raise_errorbool

whether a ValueError is raised when the tag is not found

Returns
tag_value

Value of the tag_name tag in self. If not found, returns an error if raise_error is True, otherwise it returns tag_value_default.

Raises
ValueError if raise_error is True i.e. if tag_name is not in self.get_tags(
).keys()
get_tags()[source]#

Get tags from estimator class and dynamic tag overrides.

Returns
collected_tagsdict

Dictionary of tag name : tag value pairs. Collected from _tags class attribute via nested inheritance and then any overrides and new tags from _tags_dynamic object attribute.

classmethod get_test_params(parameter_set='default')[source]#

Return testing parameter settings for the estimator.

Parameters
parameter_setstr, default=”default”

Name of the set of test parameters to return, for use in tests. If no special parameters are defined for a value, will return “default” set.

Returns
paramsdict or list of dict, default = {}

Parameters to create testing instances of the class Each dict are parameters to construct an “interesting” test instance, i.e., MyClass(**params) or MyClass(**params[i]) creates a valid test instance. create_test_instance uses the first (or only) dictionary in params

is_composite()[source]#

Check if the object is composite.

A composite object is an object which contains objects, as parameters. Called on an instance, since this may differ by instance.

Returns
composite: bool, whether self contains a parameter which is BaseObject
property is_fitted[source]#

Whether fit has been called.

reset()[source]#

Reset the object to a clean post-init state.

Equivalent to sklearn.clone but overwrites self. After self.reset() call, self is equal in value to type(self)(**self.get_params(deep=False))

Detail behaviour: removes any object attributes, except:

hyper-parameters = arguments of __init__ object attributes containing double-underscores, i.e., the string “__”

runs __init__ with current values of hyper-parameters (result of get_params)

Not affected by the reset are: object attributes containing double-underscores class and object methods, class attributes

set_params(**params)[source]#

Set the parameters of this estimator.

The method works on simple estimators as well as on nested objects (such as Pipeline). The latter have parameters of the form <component>__<parameter> so that it’s possible to update each component of a nested object.

Parameters
**paramsdict

Estimator parameters.

Returns
selfestimator instance

Estimator instance.

set_tags(**tag_dict)[source]#

Set dynamic tags to given values.

Parameters
tag_dictdict

Dictionary of tag name : tag value pairs.

Returns
Self

Reference to self.

Notes

Changes object state by settting tag values in tag_dict as dynamic tags in self.

update(X, y=None, update_params=True)[source]#

Update transformer with X, optionally y.

State required:

Requires state to be “fitted”.

Accesses in self:

Fitted model attributes ending in “_”. self._is_fitted

Writes to self:

May update fitted model attributes ending in “_”.

Parameters
XSeries or Panel, any supported mtype
Data to fit transform to, of python type as follows:

Series: pd.Series, pd.DataFrame, or np.ndarray (1D or 2D) Panel: pd.DataFrame with 2-level MultiIndex, list of pd.DataFrame,

nested pd.DataFrame, or pd.DataFrame in long/wide format

subject to sktime mtype format specifications, for further details see

examples/AA_datatypes_and_datasets.ipynb

ySeries or Panel, default=None

Additional data, e.g., labels for transformation

update_paramsbool, default=True

whether the model is updated. Yes if true, if false, simply skips call. argument exists for compatibility with forecasting module.

Returns
selfa fitted instance of the estimator