The following node is available in the Open Source KNIME predictive analytics and data mining platform version 2.7.1. Discover over 1000 other nodes, as well as enterprise functionality at http://knime.com.

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..

Dialog Options

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)

Ports

Input Ports
0 Table containing time series.
Output Ports
0 Table with column holding moving average values.
This node is contained in KNIME Time Series Nodes provided by KNIME GmbH, Konstanz, Germany.