1
$\begingroup$

I needed to implement a moving average that can handle missing data. The catch is that the number of data points to be considered should be a variable easy for me to adjust.

See https://superuser.com/questions/1173550/moving-average-in-google-spread-sheets-but-allowing-missing-data for details.

I have googled and came across this formula in http://eeandcs.blogspot.sg/2014/09/weighted-moving-averages-on-google.html

$$y(j)=\sum_{i=0}^nw(i)⋅x(j−n+i)$$

I need some help understanding this formula. I prefer to really grok it rather than do a copy paste job.

2 Answers 2

1

The best way to grok an expression like that is to write it out completely by hand (without the $\Sigma$) for some small values. Try $n=3$. Imagine weights $1/2, 1/3, 1/6$ for the three most recent values of $x$. The idea behind the weights is that what happened most recently should influence the average more.

Then calculate with some sequence of, say, ten $x$ values to find the $y$ values, starting at the third $x$ value so you have three values to sum over.

Setting this up in a spreadsheet is a separate question - one you seem to have an answer for.

  • 0
    so let's say i use the weights 1/2, 1/3, 1/6, you are saying for the 3rd data point the weighted average is = 1/2(D1)+1/3(D2) +1/6(D3). Then for D4, the weighted average is 1/2(D2) + 1/3(D3)+1/6(D4). Am I right?2017-01-31
  • 0
    Sorry I meant 1/2(D3)+1/3(D2) +1/6(D1). Then for D4, the weighted average is 1/2(D4) + 1/3(D3)+1/6(D2). Am I right?2017-02-01
  • 0
    @KimStacks Yes you're right.2017-02-01
  • 0
    @KimStacks You're welcome. In your application, dealing with missing values will require a decision about how to do the weighting of the values you have.2017-02-03
1

Your formula is $y(j)=\sum_{i=0}^nw(i)⋅x(j−n+i) $.

Replacing $i$ by $n-i$, the range of $i$ is still $0$ to $n$ and this becomes $y(j) =\sum_{i=0}^nw(n-i)⋅x(j−n+(n-i)) =\sum_{i=0}^nw(n-i)⋅x(j−i) $.

Finally, reversing the order of the weights by letting $v(i)=w(n-i)$, you get $y(j)=\sum_{i=0}^nv(i)⋅x(j−i) $.

Here you have the $n+1$ values ending at $j$ weighted by the $v(i)$.

  • 0
    I don't even get how you go from $$y(j)=\sum_{i=0}^nw(i)⋅x(j−n+i)$$ to $$y(j)=\sum_{i=0}^nv(i)⋅x(j-i)$$2017-01-31
  • 0
    I understood that you let $$v(i)=w(n-i)$$ but not sure how that makes $$x(j−n+i)$$ become $$x(j-i)$$2017-01-31
  • 0
    I added some additional explanation.2017-01-31
  • 0
    Does your final form mean the same thing as the example illustrated here http://math.stackexchange.com/questions/2122471/explain-weighted-moving-average-in-a-way-for-a-beginner-programmer-to-implement/2122530?noredirect=1#comment4366571_21224822017-02-01