1

簡単にするために、可能なスコア {0, 1, 2} のサンプル セットがあるとします。95% の信頼区間を計算するために、毛むくじゃらのルックアップ テーブルなどに入らずに、スコアの数に基づいて平均を計算する方法はありますか?

ドリーブスはこれに対する解決策をここに投稿しました:可変数のマッチに基づいて公正な全体的なゲームスコアを計算するにはどうすればよいですか?

ここで、2 つのシナリオがあるとします...

シナリオ A) 値 2 の 2 票は SE=0 になり、平均は 2 になります

シナリオ B) 値 2 の 10000 票は SE=0 になり、平均は 2 になります

投票数が少ないため、シナリオAを2未満の値にしたかったのですが、このソリューションがそれを処理しているようには見えません(セット内のすべての値が互いに等しいわけではない場合、ドリーブの方程式が成立します) . 何か不足していますか、それともより良いスコアを計算するために使用できる別のアルゴリズムがありますか?

私が利用できるデータは次のとおりです。

  • n(得票数)
  • sum (投票の合計)
  • {投票のセット} (すべての投票値)

ありがとう!

4

2 に答える 2

4

結果をランク付けするときに、これまでの平均投票を表示するのではなく、投票数の関数を乗算することにより、加重スコアを与えることができます。

選択した言語に簡単に翻訳できるC# の例 (たまたまそれを知っているため... ):

double avgScore = Math.Round(sum / n);
double rank = avgScore * Math.Log(n);

ここでは重み付け関数として の対数を使用しましたnが、投票数が少なすぎず多すぎない場合にのみうまく機能します。正確に「最適」な大きさは、投票数をどれだけ重視するかによって異なります。

対数アプローチが好きで、基数10が投票数で実際に機能しない場合は、別の基数を簡単に使用できます。たとえば、3代わりに base で実行するには:

double rank = avgScore * Math.Log(n, 3);

重み付けに使用する関数は、予想される投票数の桁数によって決定するのが最適です。

定義することにより、カスタム重み付け関数を使用することもできます

double rank = avgScore * w(n);

wherew(n)は、投票数に応じて加重値を返します。w(n)次に、たとえば次のように、必要に応じて定義します。

double w(int n) {
    // caution! ugly example code ahead...
    // if you even want this approach, at least use a switch... :P

    if (n > 100) { 
        return 10; 
    } else if (n > 50) {
        return 8;
    } else if (n > 40) {
        return 6;
    } else if (n > 20) {
        return 3;
    } else if (n > 10) {
        return 2;
    } else {
        return 1;
    }
}
于 2009-05-21T20:54:03.930 に答える
0

私の他の参照された回答(ありがとう!)で平均に悲観的な下限を使用するというアイデアを使用したい場合は、いくつかの追加の仮定/パラメーターを注入する必要があると思います。

私が理解していることを確認するために: 10000 票で、そのすべてが「2」であるため、真の平均は 2 であると確信できます。 0 と 1 が入り、平均を下げます。しかし、それをどのように定量化するかがあなたの質問だと思います。

ここにアイデアがあります: 誰もが何らかの「手荷物」から始めます: 「1」の単一のファントム投票です。真の「2」票が 2 票の人の平均は (1+2+2)/3 = 1.67 で、真の「2」票が 10000 票の人の平均は 1.9997 になります。それだけであなたの基準を満たすことができます。または、悲観的な下限のアイデアを追加すると、2 票の人の悲観的な平均スコアは 1.333 になり、10,000 票の人の悲観的な平均スコアは 1.99948 になります。

(標準誤差がゼロになるという問題が絶対に起こらないようにするには、2 つの異なるファントム投票を使用します。または、可能性のある投票値と同じ数のファントム投票を使用し、値ごとに 1 票ずつ使用することもできます。)

于 2009-05-21T21:26:01.870 に答える