# HG changeset patch # User Jeff Hammel # Date 1512958712 28800 # Node ID 0e6743d5416d843d801363e53695828ad992cec4 # Parent 38fe99071b11b5313e04ad98c918865e21be9e4f notes on averaging diff -r 38fe99071b11 -r 0e6743d5416d tvii/average.py --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/tvii/average.py Sun Dec 10 18:18:32 2017 -0800 @@ -0,0 +1,22 @@ +""" +exponentially weighted averages + +v[0] = theta[0] +v[t] = beta*v[t-1] + (1-beta)*theta[t] + +=> +v[t] as approximately averaged over 1/(1-beta) counts + +Bias correction: +v[t] / (1 - beta**t) +""" + +def exponential_weighted_average(theta, beta=0.9): + """a form of moving window""" + # TODO: consider a generator; there isn't much state here + # v = theta[0] + # v = beta*v (1-beta)*theta[1] + retval = [theta[0]] + for value in theta[1:]: + retval.append(beta*retval[-1] + (1.-beta)*value) + return retval