用于从数据子集计算平均值和方差的在线算法

时间:2014-07-28 19:54:50

标签: algorithm statistics mean variance online-algorithm

我将此作为在线计算变量和平均数据的方差的参考:http://www.johndcook.com/standard_deviation.html

数据是16位无符号值的集合,可能有任意数量的样本(实际上,最小值约为20个样本,最大值约为2e32个样本。

由于数据集可能太大而无法存储,我已经使用C中的上述在线算法实现了这一点并验证了它的正确计算。

麻烦从应用程序的以下要求开始:除了计算整个集合的方差和均值之外,我还需要计算由中间50%的人口组成的分离结果(均值和方差)。值,即忽略前25%和后25%的样本。事先不知道样本数量,因此我必须在线计算其他集合。

据我所知,我可以通过单独计算它来加减子集,并使用类似于此处描述的运算符+实现的内容:http://www.johndcook.com/skewness_kurtosis.html(减去偏斜和峰度细节,我没有用) 。减法可以从中得出。

问题是:我如何维护这些子集?或者我应该尝试另一种技术?

1 个答案:

答案 0 :(得分:2)

如果空间有问题,并且您乐意接受近似值,我将从下面的论文开始算法:

M Greenwald, S Khanna, Space-Efficient Online Computation of Quantile Summaries

您可以使用该算法计算到目前为止观测到的第25和第75百分位数的运行估计值。然后,您可以将那些介于两个百分位之间的观察结果输入到John D Cook的文章中所涵盖的Welford算法中,以计算运行均值和方差。