簡體   English   中英

用於從數據子集計算平均值和方差的在線算法

[英]Online algorithm for computing average and variance from a subset of data

我把它作為在線計算變量和平均值的參考,用於可變長度數據: http//www.johndcook.com/standard_deviation.html

數據是16位無符號值的集合,可以有任意數量的樣本(實際上,最小值約為20個樣本,最大值約為2e32個樣本。

由於數據集可能太大而無法存儲,我已經使用C中的上述在線算法實現了這一點並驗證了它的正確計算。

麻煩從應用程序的以下要求開始:除了計算整個集合的方差和均值之外,我還需要計算由中間50%的值組成的總體的分離結果(均值和方差),即無視前25%和后25%的樣本。 事先不知道樣本數量,因此我必須在線計算其他集合。

我理解我可以通過單獨計算它來添加和減去子集,並使用類似於此處描述的運算符+實現的內容: http//www.johndcook.com/skewness_kurtosis.html (減去偏度和峰度細節,我為此沒用)。 減法可以從中得出。

問題是:我如何維護這些子集? 或者我應該嘗試另一種技術?

如果空間有問題,並且您樂意接受近似值,我將從以下論文中的算法開始:

M Greenwald,S Khanna, 空間高效的分位數匯總在線計算

您可以使用該算法計算到目前為止所觀察到的第25和第75百分位數的運行估計值。 然后,您可以將介於兩個百分位數之間的觀察結果輸入到John D Cook的文章中所涵蓋的Welford算法中,以計算運行均值和方差。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM