1

メソッドの期間を他のデータ ポイントとともに収集するプロファイリング コードがあり、それらの数値を Commons 数学から SummaryStatistics オブジェクト内に保存して、最小値、最大値、平均値、カウントなどを提供します。ただし、このオブジェクトを次のようにフラッシュする必要があります。約 1 時間ごとにディスクを収集し、次の収集のために再び収集を開始します。

私の質問は、これらの値を確実に合計するにはどうすればよいかということです.24 個の要約統計オブジェクトがある場合、データを歪めることなく 1 日全体の要約を表示できますか? オブジェクト自体には移動平均とカウントされたアイテムの数がありますが、2 つの加重平均を組み合わせることができるユーティリティ クラスはありますか?

4

2 に答える 2

1

平均とカウントの両方があると言うので、使用する一般式は、平均の積をカウントで合計し、それをカウントの合計で割ることです。

たとえば、 と の 2 つのSummaryStatisticsオブジェクトAB場合、次のように使用します。

double weightedMean = (A.getMean() * A.getN() + B.getMean() * B.getN()) /
                      (A.getN() + B.getN());

それらの多く (たとえばList`manyStats' と呼ばれるもの) については、次のようにすることができます。

double accum = 0.0;
long n = 0;
for (SummaryStatisics s: manyStats) {
  accum += s.getMean() * s.getN();
  n += s.getN();
}
double weightedMean = accum / n;
于 2013-03-12T00:59:07.270 に答える