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 (先入れ先出し) 方式で機能します。私がやろうとしているのは、スライディングタイムウィンドウ内でオンライン(増分)方式でデータの統計情報を計算することです。
アキュムレータは、すべての値を内部的に保持する必要があります。
私は自分で行うこともできますが、常に最初に既存のライブラリを確認するのが好きです。データが着信または発信するときに量をスマートに計算することに気付いていないアルゴリズムがあるかもしれません。