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

问题描述 投票:1回答:1

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

我找到了这个公式

avg = avg + (value - avg) / n

其中n是value的更改次数。

TL; DR

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

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

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

algorithm math formula average moving-average
1个回答
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

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

这是移动平均线吗?

通常通过“移动平均线”,人们指的是simple moving average

这个公式实际上被称为cumulative moving average

© www.soinside.com 2019 - 2024. All rights reserved.