【发布时间】:2014-09-20 02:43:13
【问题描述】:
我将此作为在线计算可变长度数据数组的方差和均值的参考:http://www.johndcook.com/standard_deviation.html。
数据是一组 16 位无符号值,可以有任意数量的样本(实际上,最小值约为 20 个样本,最大约为 2e32 个样本。
由于数据集可能太大而无法存储,我已经使用上面提到的 C 在线算法实现了这一点,并验证了它的计算是否正确。
问题始于对应用程序的以下要求:除了计算整个集合的方差和均值外,我还需要为中间 50% 的总体计算一个分离的结果(均值和方差)值,即忽略样本的前 25% 和后 25%。事先不知道样本的数量,所以我必须在线计算附加集。
我知道我可以通过单独计算一个子集来添加和减去一个子集,它们使用类似于此处描述的 operator+ 实现:http://www.johndcook.com/skewness_kurtosis.html(减去偏度和峰度细节,我对此没有用处)。减法可以由此推导出来。
问题是:如何维护这些子集?还是我应该尝试另一种技术?
【问题讨论】:
-
一个问题是,即使知道 25% 和 75% 是什么也非常困难/复杂。 AFAIK,没有简单的分位数估计在线算法有很好的保证。
标签: algorithm statistics mean variance online-algorithm