我正在编写的算法需要计算时间序列的滚动分位数。目前我以天真的方式这样做:对于一个大小的窗口和一个大小的W向量XN
for t from W to N:
q[t,:] = quantiles(X[t-W+1:t])
q[t-1]但是,鉴于我知道之前的 quantile 、新数据X[t]和X[t-W]刚刚掉出窗口的数据,似乎应该有更快的方法。我正在考虑一些类似于井(?)已知增量平均算法的东西:
for t from W to N:
m[t] = m[t-1] + ( x[t] - x[t-W] ) / W
这避免了在每个阶段重新计算平均值。即使是近似值也很好。我已经看到了在流上计算分位数的近似值,但对我来说重要的是我有一个滚动窗口,而不仅仅是一个扩展窗口。