# Classic Decomposition (Time Series)

## Synopsis

This operator performs a classic decomposition of time series data.## Description

A time series can be splitted into three different components, the trend, seasonal and remainder component.
The trend component describes the longterm level of the time series.
The seasonal component is a reoccuring pattern with a length equal to the parameter *seasonality* (e.g. 12 for monthly data with a pattern reoccuring every year).
The remainder component is the remaining local variation between the time series and the combination of trend and seasonal component.

The mode of the decomposition can be either *additive* or *multiplicative*, which can be specified by the *decomposition mode* parameter.
If the magnitude of the seasonal and remainder components does not depend on the trend level, the *additive* mode is the appropiate mode, otherwise the *multiplicative* mode should be used.
The decomposition splits the time series (depicted by Y) into the trend (T), the seasonal (S) and the remainder (R) components in the following way:

- additive: Y = T + S + R
- multiplicative Y = T x S x R

The classic decomposition calculates the trend component by smoothing the original time series with a *seasonality* / 2x*seasonality* moving average filter (2x*seasonality* if *seasonality* is even, *seasonality* if it is uneven).
After substracting/dividing (*additive* / *multiplicative* mode) the original series by the trend component, the detrended series is used to determine the seasonal components.
This is done by averaging each individual component over the whole time series.
The seasonal components are then adapted to have a sum of 0 / *seasonality* (*additive* / *multiplicative* mode).
The remainder component is achieved by substracting/dividing (*additive* / *multiplicative* mode) the detrended series by the series components (length enhanced to the length of the whole series).

This operator works only on numerical time series.

## Differentiation

### STL Decomposition

The STL Decomposition also splits the time series into trend, seasonal and remainder component. Loess Interpolation is used in an iterative process to estimate the three components. This allows the seasonal component to change in magnitude with time, also all components have well defined values for the whole time series. The STL Decomposition is only capable of performing an additive decomposition.

### Fast Fourier Transformation

The Fast Fourier Transformation operator transforms time series into the frequency space. This can be used to identify prominent oscillations, for example to identify a possible seasonal component in the data.

## Input

- example set (Data Table)
The ExampleSet which contains the time series data as attributes.

## Output

- decomposition (Data Table)
ExampleSet containing the decomposed time series. The original time series and the trend, the seasonal and the remainder components are calculated for every selected time series and provided in this ExampleSet.

- original (Data Table)
The ExampleSet that was given as input is passed through without changes.

## Parameters

- attribute_filter_type
This parameter allows you to select the filter for the time series attributes selection filter; the method you want to select the attributes which holds the time series values. Only numeric attributes can be selected as time series attributes. The different filter types are:

- all: This option selects all attributes of the ExampleSet to be time series attributes. This is the default option.
- single: This option allows the selection of a single time series attribute. The required attribute is selected by the attribute parameter.
- subset: This option allows the selection of multiple time series attributes through a list (see parameter attributes). If the meta data of the ExampleSet is known all attributes are present in the list and the required ones can easily be selected.
- regular_expression: This option allows you to specify a regular expression for the time series attribute selection. The regular expression filter is configured by the parameters regular expression, use except expression and except expression.
- value_type: This option allows selection of all the attributes of a particular type to be time series attributes. It should be noted that types are hierarchical. For example real and integer types both belong to the numeric type. The value type filter is configured by the parameters value type, use value type exception, except value type.
- block_type: This option allows the selection of all the attributes of a particular block type to be time series attributes. It should be noted that block types may be hierarchical. For example value_series_start and value_series_end block types both belong to the value_series block type. The block type filter is configured by the parameters block type, use block type exception, except block type.
- no_missing_values: This option selects all attributes of the ExampleSet as time series attributes which do not contain a missing value in any example. Attributes that have even a single missing value are not selected.
- numeric_value_filter: All numeric attributes whose examples all match a given numeric condition are selected as time series attributes. The condition is specified by the numeric condition parameter.

- attribute
The required attribute can be selected from this option. The attribute name can be selected from the drop down box of the parameter if the meta data is known.

Range: - attributes
The required attributes can be selected from this option. This opens a new window with two lists. All attributes are present in the left list. They can be shifted to the right list, which is the list of selected time series attributes.

Range: - regular_expression
Attributes whose names match this expression will be selected. The expression can be specified through the

Range:*edit and preview regular expression*menu. This menu gives a good idea of regular expressions and it also allows you to try different expressions and preview the results simultaneously. - use_except_expression
If enabled, an exception to the first regular expression can be specified. This exception is specified by the

Range:*except regular expression*parameter. - except_regular_expression
This option allows you to specify a regular expression. Attributes matching this expression will be filtered out even if they match the first expression (expression that was specified in

Range:*regular expression*parameter). - value_type
This option allows to select a type of attribute. One of the following types can be chosen: numeric, integer, real.

Range: - use_value_type_exception
If enabled, an exception to the selected type can be specified. This exception is specified by the

Range:*except value type*parameter. - except_value_type
The attributes matching this type will be removed from the final output even if they matched the before selected type, specified by the

Range:*value type*parameter. One of the following types can be selected here: numeric, integer, real. - block_type
This option allows to select a block type of attribute. One of the following types can be chosen: value_series, value_series_start, value_series_end.

Range: - use_block_type_exception
If enabled, an exception to the selected block type can be specified. This exception is specified by the

Range:*except block type*parameter. - except_block_type
The attributes matching this block type will be removed from the final output even if they matched the before selected type by the

Range:*block type*parameter. One of the following block types can be selected here: value_series, value_series_start, value_series_end. - numeric_condition
The numeric condition used by the numeric condition filter type. A numeric attribute is selected if all examples match the specified condition for this attribute. For example the numeric condition '> 6' will keep all numeric attributes having a value of greater than 6 in every example. A combination of conditions is possible: '> 6 && < 11' or '<= 5 || < 0'. But && and || cannot be used together in one numeric condition. Conditions like '(> 0 && < 2) || (>10 && < 12)' are not allowed because they use both && and ||.

Range: - invert_selection
If this parameter is set to true the selection is reversed. In that case all attributes not matching the specified condition are selected as time series attributes. Special attributes are not selected independent of the

Range:*invert selection*parameter as along as the*include special attributes*parameter is not set to true. If so the condition is also applied to the special attributes and the selection is reversed if this parameter is checked. - include_special_attributes
Special attributes are attributes with special roles. These are: id, label, prediction, cluster, weight and batch. Also custom roles can be assigned to attributes. By default special attributes are not selected as time series attributes irrespective of the filter conditions. If this parameter is set to true, special attributes are also tested against conditions specified and those attributes are selected that match the conditions.

Range: - has_indices
This parameter indicates if there is an index attribute associated with the time series. If this parameter is set to true, the index attribute has to be selected.

Range: - indices_attribute
If the parameter

Range:*has indices*is set to true, this parameter defines the associated index attribute. It can be either a date, date_time or numeric value type attribute. The attribute name can be selected from the drop down box of the parameter if the meta data is known. - sort_time_series
If this parameter is selected, the input time series will be sorted, according to the selected

*indices attribute*, before the time series operation is applied on. If it is not selected and the input time series is not sorted, a corresponding User Error is thrown.Keep in mind that the indices values still needs to be unique. If the values are non-unique a corresponding User Error is thrown.

The data set provided at the

Range:*original*output port will be the sorted input time series. - decomposition_mode
The mode, how the different components are combined.

- additive: Trend, seasonal and remainder component are added to build the time series: Y = T + S + R. Used if seasonal and remainder component are independent of the trend level.
- multiplicative: Trend, seasonal and remainder component are multiplied to build the time series: Y = T x S x R. Used if the magnitude of seasonal and remainder component depends on the trend level.

- seasonality
The length of one seasonal pattern of the seasonal component. For example for a seasonal pattern which occurs every year the seasonality is 4 (for quartely data), 12 (for montly data) or 52 (for weekly data). Or for a pattern which occurs every hour the seasonality is 60 (for minutely data) or 3600 (for secondly data).

Range: - ignore_invalid_values
If this parameter is set to true invalid values (missing, positive and negative infinity) are ignored in the determination of the trend component.

Range:

## Tutorial Processes

### Classic Decomposition of the monthly milk production data set

In this process the Classic Decomposition operator is used to split the monthly milk production data set into trend, seasonal and remainder component.