2010-11-21 290 views
0

我有一个相对较少(~100个值)的整数集合:它们中的每一个代表了我运行的测试持续了多少时间(以毫秒为单位)。计算实际平均值

计算平均值的平凡算法是总结所有的n值并将结果除以n,但这并没有考虑到一些可笑的高/低值必定是错误的并应该丢弃。

有什么算法可用来估计实际平均值?

+3

没有这样的事情“实际”的平均值:你不能严格区分实际数据统计离群值不作一些假设。什么构成实际数据和什么是错误最终是一个概率决定。此外,这不是一个严格的编程问题,而是一个关于统计的问题。 – stakx 2010-11-21 16:56:17

+1

+1 stakx。另外,我可能会认为“荒谬”的价值观错误的假设可能是不正确的。我建议只运行更多的测试(1000或10000),并按原样计算* mean *值。 – 2010-11-21 17:09:13

回答

2

正如您所说的,您可以放弃所有偏离平均值超过给定值的值,然后重新计算平均值。另一个值得关注的值是中位数,这是最常见的值。

+1

模式是最常见的值(或值)。 – birryree 2010-11-21 16:51:03

+0

http://en.wikipedia.org/wiki/Median – Uberto 2010-11-21 16:55:17

+0

@ peoro,是的,但它并不那么容易。寻找标准偏差 http://en.wikipedia.org/wiki/Standard_deviation 有几个数学库与该 – Uberto 2010-11-21 16:56:19

1

这取决于您的测试的不同条件。这是来自概率论的任务。 最简单的方法之一是尝试计算一个的中位数,你可以处理可笑的高/低值。看看下面的链接: Wiki about median

1

正如你所说,算术平均值不好,如果有非常高/低值。 您可以按照某人的建议计算中间值,即在您的值的排序列表中,“中间”值(如果您的集合包含不均匀的项目数量)或两个“中间”值的算术平均值其他)。

另一种方法是降低最低和最高的五个percentiles并计算其余的算术平均值。

1

一些选项:

  • 第一丢弃N个最高值和最低值,并计算算术平均值为休息。将N设置为合适的值,以便丢弃例如1%或10%的值。
  • 使用median或中间值。
  • 使用geometric mean可以减少离群值的权重。

维基百科列出some ways计算不同“的意思是”值