2009-05-21 9 views
1

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

dreevesは、ここではこれに対する解決策を掲載:How can I calculate a fair overall game score based on a variable number of matches?

は、今、私たちは2つのシナリオ...

シナリオA)2であることを平均が生じ= 0 SEの値2の結果の2人の票を持っていると言います2

ことを意味もたらす

シナリオB)= 0 SEの値2結果の10000票IシナリオAが原因で投票数が少ない2未満である値になりたかったが、それはdoesnのこのソリューションのように扱われないお互いに等しい値のすべての値を持たないときは、dreeveの方程式が成り立ちます。私は何かが欠けているか、より良いスコアを計算するために使用できる別のアルゴリズムがあります。

私に利用可能なデータがある:

  • N(投票数)
  • 和(票の和)
  • {票の集合}(すべての投票値)

ありがとう!

+0

あなたは加重平均平均を探していますか?すなわち、それ以上の票を重み付けした平均をとる。 – BenAlabaster

+0

ええ、私はそれもそのように動作すると思う。より少ない票に対してはより低い重みを、またはより多くの票に対してはより高い重みをとる。 –

答えて

4

これまでの平均投票を表示するだけでなく、投票数の関数を乗算することで、結果のランク付けに重み付けスコアを付けることができます。 C#での

例簡単に選択した言語に翻訳することができること(それは私が...最高の知っていることが起こる何だから):

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

私はnの対数を使用しました投票の数が少なすぎたり大きすぎたりしない場合にのみうまくいくでしょう。 「最適」の正確な大きさは、投票数をどの程度問題にしたいかによって決まります。

対数アプローチが好きだが、ベース10が実際にあなたの投票数で機能しない場合は、別のベースを簡単に使用できます。たとえば、代わりにベース3でそれを行うには:あなたは、おそらく最高のあなたが到達すると予想投票数の大きさの順で決定された計量のために使用すべき機能

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

を。

またw(n)は、得票数に応じた重み値を返します

double rank = avgScore * 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; 
    } 
} 
+0

ありがとうThomas ...シンプルで甘い。これは私が取るアプローチになるだろうが、カスタムウェイト方程式の他に他のオプションがあるかどうか疑問に思っていた。私は自分のデータを分析して、ユーザーがまっすぐ上の平均を使うことができると言うことができる時を見なければならないと思う。 –

+0

私は対数的アプローチが好きです。 + 1up –

+0

体重機能は実装するのが一番簡単だと思いますが(多くの場合、実行するのが最も速い)、その限界があります。しかし、対数アプローチでは、成長がより速くまたは遅くなるように、Math.Log(n、b)メソッド(bはベース)を使用することもできます。私はこれも反映するために投稿を編集しました。 –

0

:あなたが望むようにあなたは、このように、たとえば、w(n)を定義します!)平均の悲観的な下限を使用すると、私はいくつかの追加の仮定/パラメータが注入される必要があると思う。

私が理解していることを確認するには:10000票のうち、いずれか1つが「2」であれば、真の平均は2です。2票の場合、それぞれ「2」、 - 多分、0と1が入って平均を下げるでしょう。しかし、それを定量化する方法は、私はあなたの質問だと思う。

ここでアイデアがあります。誰もが「手荷物」から始まります.1人のファントム投票が「1」になります。 2つの真の「2」票を持つ人は、(1 + 2 + 2)/ 3 = 1.67の平均を持つ。ここで真の「2」票が10000人の人は平均1.9997である。それだけであなたの基準を満たすかもしれません。あるいは、悲観的な下界の考えを加えると、2票の人は悲観的な平均得点が1.333、1万票の人は1.99948となる。

(、あなたはゼロ標準誤差の問題を抱えていることは決してないだろう絶対に必ず二つの異なるファントム票を使用しています。それとも、可能な投票値、各値の一票と同数のファントムの票を使用する。)

+0

ダニエルありがとう。あなたの方法は上記のTomasと似ていますが、投票数が少ないことを考慮する機能があります。私はこれがシンプルであり、正確さのために重要ではないので(私は近似を作成しています)、これはうまくいくはずです。 –

関連する問題