是否有一个 java 库允许我通过添加/删除数据点来更新而不是重新计算大量数据样本集的分位数?我的猜测是,一个有效的算法应该花费恒定的时间进行更新(不是已经存在的点数的函数)。
列出了已知的算法,但没有办法从样本集中删除点:
- Colt Stream Quantiles:一旦添加,这个就无法删除一条数据
- Apache Math Percentile:这只是计算数组的分位数,无法从数组中删除数据。
这是一个示例问题:假设我想计算一组风车的任意但恒定的百分位风扇速度(作为风速的估计值)。风扇速度每隔几毫秒异步更新一次。这个库应该允许我一次更新一个风车的风速,而不必重新计算中位数。