2010-11-21 339 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計算不同「的意思是」值