2012-12-15 334 views
1

我有一組列表和一些基本統計數據(項目數,最小值,最大值,平均值,stddev)。我想計算所有組合的統計數據。計算總數,最小最大值和平均值很容易,但我不確定如何計算總標準偏差。找到偏差/元素列表的標準偏差

的數據是這樣的:

Count  Max  Min  Mean  Stddev 
1,027,671 781  68  57.8  32.79 
    839,473 552  54  61.3  48.53 
3,012,102 890  41  64.9  41.92 

生成所有集合在一起的統計:

4,879,246 890  41  62.8  ??? 
+0

每套都是在單獨的機器上計算。我必須通過網絡發送所有這些數據,這在我的應用程序中是不可接受的。 – charliehorse55

+1

您只需發送彙總信息的三次計數,總和和平方以計算計數/平均值/標準偏差。平方和只是一個比標準開發更易計算的統計量,因爲它是通過加法結合的。他們有雙重連接,如果你知道count,sum和std dev,你可以得到count,sum和sum squares,反之亦然。 –

+0

我打算使用它。如果你想要,你可以提交它作爲答案。 – charliehorse55

回答

2

我假設你正在編寫維護分佈的代碼,而不僅僅是消耗一些已經計算出標準差的數據。標準開發並不是一個真正自然的參數來維護計算機。相反,你應該保持項目的數量,總和和項目的平方和,然後你可以很容易地計算出這3個原始信息的分佈的均值和標準偏差。我在這裏使用這個策略。添加操作支持合併兩個分發。注意它的實現是多麼簡單。 http://github.com/rrenaud/dominionstats/blob/master/stats.py#L17

0

我認爲這是不可能從你的數據準確計算此。問題在於標準偏差取決於組合數據集的平均值,它不一定與單個平均值相同,也取決於每個點與該平均值之間的距離,而這些距離並不是確切的(但可能近似)訪問。

+0

這是錯誤的。你可以通過單個方法的計數加權和來計算組合數據的均值,或者可以更清楚地通過從總和和平均值中獲得單個分佈的總數和計數,然後計算組合的總數和總和進入合併的意思。對於std開發人員來說,類似的說法是適用的,但它需要多一點代數。 –

+0

@rrenaud:我知道很容易得到新的意思,我很好奇看到你的標準的確切解決方案。與他提供的信息有偏差。 –