# 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)`

## Views

This node has no views