我将这篇文章作为在线计算变量长度数据数组的方差和均值的参考:http://www.johndcook.com/standard_deviation.html。
数据是16位无符号值的集合,可能包含任意数量的样本(实际上,最小约为20个样本,最大约为2e32个样本)。
由于数据集可能太大而无法存储,因此我已经使用上述在线算法在C语言中实现了它,并验证了其正确性。
问题在于应用程序的以下要求:除了计算整个集合的方差和均值之外,我还需要为由中间50%的值组成的人群计算分离的结果(均值和方差),即忽略前25%和后25%的样本。未知样本数,因此必须在线计算额外的集合。
我知道我可以通过单独计算子集并使用类似于这里描述的operator+实现来添加和删除子集: http://www.johndcook.com/skewness_kurtosis.html(减去偏度和峰度的具体内容,因为我不需要它们)。减法可以从中派生出来。
问题是:我该如何维护这些子集?或者我应该尝试另一种技术?
数据是16位无符号值的集合,可能包含任意数量的样本(实际上,最小约为20个样本,最大约为2e32个样本)。
由于数据集可能太大而无法存储,因此我已经使用上述在线算法在C语言中实现了它,并验证了其正确性。
问题在于应用程序的以下要求:除了计算整个集合的方差和均值之外,我还需要为由中间50%的值组成的人群计算分离的结果(均值和方差),即忽略前25%和后25%的样本。未知样本数,因此必须在线计算额外的集合。
我知道我可以通过单独计算子集并使用类似于这里描述的operator+实现来添加和删除子集: http://www.johndcook.com/skewness_kurtosis.html(减去偏度和峰度的具体内容,因为我不需要它们)。减法可以从中派生出来。
问题是:我该如何维护这些子集?或者我应该尝试另一种技术?