这是一个准确的平均值还是指数均线公式?

时间:2017-12-29 19:38:47

标签: algorithm math formula average moving-average

我正在尝试计算正在变化的值的平均值,我想这样做而不将所有先前的值存储在数组中并迭代它们。

我找到了这个公式

avg = avg + (value - avg) / n

其中n是value的更改次数。

  

TL; DR

     

我的问题是这个公式是否与正常方式相同   计算平均值(当我比较它们时似乎是),或者   如果在某些情况下可能给出不同的结果?

我不确定这个公式的正确名称是什么 - 我看过“平均值”,滚动平均值“,”移动平均值“等等。它的结果似乎与存储每个的结果完全相同历史value,将它们相加并除以n - 即“正常平均值”。

令人困惑的是,人们有时会将此公式称为“移动平均线”,在我看来,这听起来更像是在使用历史值的子集来计算平均值。其他人说这是exponential moving average (see comment by Julia on OP)

1 个答案:

答案 0 :(得分:2)

  

此公式是否与计算平均值的常规方法相同?

如果avg在开始时设置为等于0,则该公式确实计算前n个样本的总和。

当n = 1时显然是正确的,因为1个样本的平均值为:

avg' = avg + (value - avg) / n
     = 0   + (value - 0) / 1
     = value

对于较大的值,假设n-1为真(即avg =(x [1] + .. + x [n-1])/(n-1))。

然后:

avg' = avg + (x[n] - avg) / n
      = (n-1)*avg/n + x[n]/n
      = (x[1]+...+x[n-1])/n + x[n]/n
      = (x[1]+...+x[n])/n

因此,avg的新值也等于前n个样本的平均值。

  

这是移动平均线吗?

通常按"移动平均线"人们指的是simple moving average

此公式实际上称为cumulative moving average