是否有一种算法来估计值集的中值、模式、偏斜度和/或峰度,但这不需要同时将所有值存储在内存中?
我想计算一下基本统计数字:
计算这些数字的基本公式是小学算术,我确实知道它们.也有许多实现它们的统计库。
我的问题是我正在处理的集合中有大量(数十亿)的值:在Python中工作,我不能仅仅用数十亿个元素创建一个列表或散列。即使我用C写了这篇文章,十亿元素数组也不太实用。
没有对数据进行排序。它是随机产生的,在飞行中,由其他过程。每个集合的大小都是高度可变的,而且大小不会事先知道。
我已经知道了如何很好地处理均值和方差,以任意顺序迭代集合中的每个值。(实际上,在我的例子中,我按照生成它们的顺序来看待它们。)这是我使用的算法,礼貌算法
这种“在线”算法有缺点(例如,当sum_of_squares比整数范围或浮动精度增长得快时,精度问题),但它基本上给了我所需的东西,而不必存储每一组中的每个值。
但我不知道是否有类似的技术来估计额外的统计数据(中位数、模式、偏度、峰度)。只要处理N值所需的内存大大小于O(N),我就可以使用有偏估计器,甚至是在一定程度上折衷精度的方法。
如果库具有“在线”计算这些操作中的一个或多个操作的功能,那么指向现有的stats库也会有帮助。
https://stackoverflow.com/questions/1058813
复制相似问题