Moving Average

This node calculates the moving average of a column. The moving average values are displayed in a new column appended at the end of the table or (if selected) replaces the original columns. For all window based methods (Backward/Center/Forward simple/Gaussian, Harmonic Mean) the cells that do not have a complete window (at the beginning and the end of the table) are filled with Missing Values.

Options

Columns containing Double Values
Select the input column containing double values on which to perform the moving average.
Window Length
The number of samples to include in the moving average window. It has to be an odd number if a center based method was selected. Minimum value: 3 samples. Maximum Value: Time Series length.
Remove original columns
If selected the original columns are replaced with the moving average columns.
Type of Moving Average
Moving Average can be applied with various methods. Here the used formulas for every kind, where v_n is the value in the n-th row of the data table in the selected column and k is the window size.

Methods

Backward simple
Backward_simple_n = 1/k * sum{v_n-(k-1) ... v_n}
Center simple
Center_simple_n = 1/k * sum{v_n-(n-1)/2 ... v_n ... v_n+(n-1)/2}
Forward simple
Forward_simple_n = 1/k * sum{v_n ... v_n+k-1}
Backward Gaussian
Backward_gaussian_n = sum{i = 0 ... k-1} gauss(i,k-1,std_dev)*v_n-i
Center Gaussian
Center_gaussian_n = sum{i = 0 ... k-1} gauss(i,(k-1)/2,std_dev)*v_n+(i-(k-1)/2)
Forward Gaussian
Forward_gaussian_n = sum{i = 0 ... k-1} gauss(i,0,std_dev)*v_n+i
Harmonic Mean Center
The harmonic mean can only be used for strictly positive values.
Center_harmonic_n = n/{sum{i = 0 ... k-1} 1/v_n+(i-(k-1)/2)
Cumulative simple
Cumulative_n= 1/n * sum{v_0 ... v_n-1}
Simple exponential
Simple_exponential_0 = v_0
EMA(v,n) = Simple_exponential_n = alpha*v_n + (1-alpha)*Simple_exponential_n-1
Double exponential
Double_exponential_n = 2 * EMA(v,n) - EMA(EMA(v,n),n)
Triple exponential
Triple_exponential_n = 3 * EMA(v,n) - 3 * EMA(EMA(v,n),n) + EMA(EMA(EMA(v,n),n),n)
Old Exponential
Exponential_n = alpha*v_n + (1-alpha) * Backward_simple_n-1
Appendix: Gaussian
For the Gaussian weighted moving average the individual values are weighted based on the position in the window.
std_dev = (k - 1) / 4
and the weighting:
gauss(i,mean,std_dev) = Math.exp((-0.5) * (i - mean) * (i - mean) / std_dev^2)
Appendix: Exponential
alpha = 2/(k+1)

Input Ports

Icon
Table containing time series.

Output Ports

Icon
Table with column holding moving average values.

Views

This node has no views

Workflows

Links

Developers

You want to see the source code for this node? Click the following button and we’ll use our super-powers to find it for you.