In this function missing values get replaced by moving average
values. Moving Averages are also sometimes referred to as "moving mean",
"rolling mean", "rolling average" or "running average".
The mean in this implementation taken from an equal number of observations
on either side of a central value. This means for an NA value at position
i
of a time series, the observations i-1,i+1 and i+1, i+2 (assuming
a window size of k=2) are used to calculate the mean.
Since it can in case of long NA gaps also occur, that all values next to the
central value are also NA, the algorithm has a semi-adaptive window size.
Whenever there are less than 2 non-NA values in the complete window available,
the window size is incrementally increased, till at least 2 non-NA values are
there. In all other cases the algorithm sticks to the pre-set window size.
There are options for using Simple Moving Average (SMA), Linear Weighted
Moving Average (LWMA) and Exponential Weighted Moving Average (EWMA).
SMA: all observations in the window are equally weighted for calculating the mean.
LWMA: weights decrease in arithmetical progression. The observations
directly next to a central value i, have weight 1/2, the observations
one further away (i-2,i+2) have weight 1/3, the next (i-3,i+3) have
weight 1/4, ...
EWMA: uses weighting factors which decrease exponentially. The observations
directly next to a central value i, have weight 1/2^1, the observations one
further away (i-2,i+2) have weight 1/2^2, the next (i-3,i+3) have weight 1/2^3, ...