是否有一个java库允许我通过添加/删除数据点来更新而不是重新计算大样本数据集的分位数?我的猜测是,有效的算法应该花费更新的时间(不是已经存在的点数的函数)。
列出了已知算法,但没有办法从样本集中删除点:
这是一个示例问题:假设我想计算一组风车的任意但恒定的百分位风扇速度(作为风速的估计)。风扇速度每隔几毫秒异步更新一次。这个库应该允许我一次更新一个风车的风速,而不必重新计算中位数。
答案 0 :(得分:2)
如果维护数据的可更新排序表示,只需使用数组的长度即可轻松高效地获取分位数。例如,如果您有N个元素,那么中位数将位于N / 2位置,依此类推。在数据结构中插入新元素时,这仍然有用。然后效率仅取决于插入新元素。
答案 1 :(得分:1)
您可以拥有多批数据。您可以组合这些批次的百分位数/四分位数来估算总计。好处是您可以有效地丢弃多个批次,而无需重新计算其他批次。