3

現在、私は毎日大量のデータを集計しており、毎日現在の値の中央値を計算しています。ここで、この毎日の結果をすべて月単位で集計する必要があります。もちろん、中央値を再度計算する必要があります。

中央値の中央値を計算し、それを統計的に正しくする方法はありますか? 膨大な量なので、生データを再度使用することは避けたいです:)

概念の小さな証明として、私はこの JavaScript を作成しました - 方法を見つけるのに役立つかもしれません:

var aSortedNumberGroups = [];
var aSortedNumbers = [];
var aMedians = [];

Math.median = function(aData)
{
    var fMedian = 0;
    var iIndex = Math.floor(aData.length/2);
    if (!(aData.length%2)) {
        fMedian = (aData[iIndex-1]+aData[iIndex])/2;
    } else {
        fMedian = aData[iIndex];
    }

    return fMedian;
};

for (var iCurrGroupNum = 0; iCurrGroupNum < 5; ++iCurrGroupNum) {
    var aCurrNums = [];
    for (var iCurrNum = 0; iCurrNum < 1000; ++iCurrNum) {
        var iCurrRandomNumber = Math.floor(Math.random()*10001);
        aCurrNums.push(iCurrRandomNumber);
        aSortedNumbers.push(iCurrRandomNumber);
    }
    aCurrNums.sort(function(oCountA,oCountB) {
        return (iNumA < iNumB) ? -1 : 1;
    });
    aSortedNumberGroups.push(aCurrNums);
    aMedians.push(Math.median(aCurrNums));
}

console.log("Medians of each group: "+JSON.stringify(aMedians, null, 4));
console.log("Median of medians: "+Math.median(aMedians));
console.log("Median of all: "+Math.median(aSortedNumbers));

ご覧のとおり、すべての生の数値の中央値と中央値の中央値の間には大きな上限があることが多く、私はそれを互いにかなり近づけたいと思っています.

どうもありがとう!

4

4 に答える 4

3

サブセットへの再配布を通じて「発見」した中央値を実際に「計算」するのではなく、これに対する唯一の最適化は、再読み込み可能な「ティックチャート」または実行中の集計です。たとえば、この方法で発生した回数とともに各発生を保存します。生データを実際に再解析することなく、分布を再作成できます。これはほんの小さな最適化ですが、問題のデータセットの繰り返しによっては、大量のMBを節約でき、少なくとも多数のプロセッササイクルを節約できます。

JSONで考えてみてください:{ '1': 3, '5': 12, '7': 4 }canonical:「1」は3回発生し、「5」は12回発生しました。

次に、中央値を取得する期間の開始時に開始するために、これらのカウントを保持します。

これが-ckに役立つことを願っています

于 2012-02-23T15:08:58.780 に答える
1

いいえ、残念ながら、全体のサブセットの中央値に基づいて中央値を計算しても、統計的に正確である方法はありません。ただし、平均を計算する場合は、サブセットのサイズが同じであれば、サブセットの平均を使用できます。

上記の ck の最適化は、あなたの助けになるかもしれません。

于 2012-02-23T15:09:31.527 に答える
0

さらに別のアプローチは、毎日のデータを取得して解析し、ソートされた順序で保存することです。特定の日のデータの中央値を見るだけで、答えが得られます。

月末にクイックセレクトを実行して中央値を見つけることができます。毎日のデータの並べ替えられた順序を利用して、バイナリ検索を実行してデータを分割できます。その結果、月末の処理が非常に高速になります。

同じ種類のデータを同じ種類の方法で整理すると、さまざまなパーセンタイルを非常に安価に実行できます。唯一の難しい部分は、毎日の生データを抽出して並べ替えることです。

于 2012-02-23T16:35:00.887 に答える