В Boost.Accumulator вы можете добавлять выборки в аккумулятор, а затем извлекать из него статистические величины. например:
acc(1.)
acc(2.)
acc(3.)
cout << mean; // 2
В библиотеке есть много более сложных статистических величин, таких как skewness
, kurtosis
или p_square_cumulative_distribution
.
Я хотел бы сделать что-то вроде этого:
acc(1.)
acc(2.)
acc(3.)
std::cout << mean(acc); // 2
acc.pop() // withdraw the first value (1.)
std::cout << mean(acc); // 2.5
pop()
будет работать по принципу FIFO (First In First Out). Что я пытаюсь сделать, так это рассчитать статистику по моим данным в режиме онлайн (инкрементно) в скользящем временном окне.
Аккумулятор должен будет хранить все значения внутри себя.
Я мог бы сделать свой собственный, но мне всегда нравится сначала проверять существующие библиотеки, и может быть алгоритм, о котором я не знаю, который разумно вычисляет количества при входящих или исходящих данных.
0, 0, 0, 5
: Как бы вы вытащили 5? - person Kerrek SB   schedule 26.09.2012rolling_sum
. Наконец, в примере со скользящей суммой, но, возможно, и во многих других случаях, вам нужно сохранить все значения, но вам не нужно использовать их все для вычисления нового количества. - person Arthur   schedule 26.09.2012acc = {}
- person J'e   schedule 21.01.2021