通用 - 是否有一种方法可以基于现有平均值和所给出的新参数计算出一个新的平均值?

21

假设我们正在计算测试成绩的平均值:

起始测试成绩:75、80、92、64、83、99、79

平均值=572 / 7 = 81.714...

现在,如果您不知道初始测试成绩,是否有一种方法可以添加一组新的测试成绩来“扩展”这个平均值?

新的测试成绩:66、89、71

平均值=226 / 3 = 75.333...

常规平均值为:798 / 10 = 79.8

我尝试过:

Avg = (OldAvg + sumOfNewScores) / (numOfNewScores + 1)

(81.714 + 226) / (3 + 1) = 76.9285

Avg = (OldAvg + NewAvg) / 2

(81.714 + 79.8) / 2 = 80.77

那么它们也不会达到“应该”达到的精确平均值。考虑到你不知道初始值,这在数学上是否可能实现?

3个回答

43

您需要知道原始数据集中的测试分数数量和旧平均值:

newAve = ((oldAve*oldNumPoints) + x)/(oldNumPoints+1)

嗨,这里的x是什么? - Tukki
新数据点将被添加以得出新的平均值。 - duffymo

7

假设你有2个成绩分块:

1st: n scores with average = a1 
2nd: m scores with average = a2

总成绩的平均值为:
a1*(1.0*n/(m+n))+a2*(1.0*m/(m+n))

如果您只想将1分(a2)添加到现有分数集中,公式将变为:
a1*(n/(n+1))+ a2/(n+1)

6

标准方法是存储值的计数和总和。

它们可以轻松更新,并且可以从它们中计算平均值而不会失去精度。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接