8

各試合で-40から+40まで得点できるゲームがあります。ユーザーは何回でも対戦できます。プレイされた試合数を暗黙的に考慮した合計スコアを計算したいと考えています。

平均だけを計算するのは公平ではありません。たとえば、Peter が 4 つのゲームをプレイし、各試合で 40 ポイントを獲得した場合、彼の合計スコアは、40 ポイントで 1 つの試合だけをプレイした Janne と同じになります。

試合のスコアを合計することも公平ではありません。ピーターは 2 ゲーム (各試合で 40 ポイント) をプレイし、合計スコアは 80 です。ジャンヌは 8 ゲーム (各試合で 10 ポイント) をプレイし、合計スコアは 80 です。

合計スコアを計算する (簡単な) 公平な方法はありますか? チェスのレーティングの Elo & Glicko システムについて読んだことがありますが、どちらもプレイヤーのレーティング履歴と対戦相手のレーティングに基づいています。

4

12 に答える 12

5

何を強調したいかによって異なりますが、これはシンプルで効果的だと思います。

平均スコア + プレイしたゲーム数

変数を少し重み付けすることもできます (たとえば、より多くの影響を与えたい場合は、2* ゲームをプレイします) - しかし、基本的な関係は妥当なようです。

最初の例では、Peter は 44、Jane は 40 になりますが、Peter がポイントを失い始めた場合、Jane は追いつくことができます。

于 2008-11-11T11:40:01.307 に答える
4

別のアプローチは、ベイジアン統計を使用することです。各チームが勝つ確率をベータ分布としてモデル化し、一方の分布のサンプルが他方の分布のサンプルよりも大きくなる確率を計算します。このアプローチは、抗がん剤をテストするために使用されます。どの薬の反応率が良いかだけでなく、どの薬のデータが多いかを考慮します。2 人のプレーヤーまたは 2 つのチームを比較することは、まったく同じです。

これは実際よりも複雑に聞こえるかもしれませんが、これらの計算を行うためのフリー ソフトウェアがあり、場合によっては、計算は手作業で行うのに十分簡単です。

ランダムな不等式の概要と、ベータ分布の不等式に関する詳細を参照してください。

于 2008-11-11T11:31:23.133 に答える
3

原則的なアプローチは次のとおりです。

http://www.evanmiller.org/how-not-to-sort-by-average-rating.html

于 2010-03-29T21:52:07.263 に答える
3

Microsoft の TruSkillを調べることができます。数か月前に読んだのですが、ほとんどの詳細を正直に忘れていたので、それが非常に適切かどうかはわかりませんが、良いインスピレーションになるかもしれません。

于 2008-11-11T10:43:39.393 に答える
3

単一の数字でこのようなスコアを作成する良い方法はないと思います。

平均成功を計算し、ゲーム数を含めることをお勧めします。例えば

  • ピーターのスコアは 40/2 (2 ゲームで平均 40 ポイント)
  • Janne のスコアは 10/8 (8 ゲームで平均 10 ポイント)

2 番目の数値が大きいほど、最初の数値の方が正確であることがすぐにわかります。

それ以外の場合は ELO を使用しますが、各プレイヤーが少なくとも 10 試合をプレイした場合にのみ正確です。

于 2008-11-11T10:04:18.177 に答える
2

ゲーム スコアを 95% 信頼区間の下限にすることをお勧めします。多くのゲームをプレイする制限では、ゲームスコアは平均スコアに近づきますが、常に厳密には低くなります。これは、平均スコアを使用するようなものですが、ゲームを数回しかプレイせず、運が良かっただけかもしれない人々に対しては、適切に懐疑的です。

別の言い方をすれば、十分な数のゲームがプレイされた後の真の平均がどうなるかについての悲観的な見積もりです。

スコアのリスト全体を保存せずに 95% 信頼区間を計算する方法: すべてのデータ ポイントを保存せずに平均信頼区間を計算する

または、プレイしたゲームの数、その人の得点の合計、および得点の 2 乗の合計を追跡している場合は、次のように標準誤差を計算できます。

SE = sqrt((ss - s^2/n) / (n-1) / n)

95% CI を気にする代わりに、ゲーム スコアを次のようにすることができます。

s/n - SE

上記は、1 つのゲームのみがプレイされた場合の負の無限大であることに注意してください。これは、ゲームを 1 回しかプレイしていない人に、ゲーム スコアとして可能な限り低いスコアを与えることを意味します。

もう 1 つのアイデアは、人をランク付けするときに信頼区間を明示的に示すことです (低い方から並べ替えます)。そうすれば、人々は CI を縮小するだけでなく、平均値を上げるために、より多くプレイすることになります。

最後に、孤立した悪いゲームの重要性がより迅速に低下するように、最近のゲームをより重み付けすることは理にかなっているかもしれません。dこれを行う方法は、1 より大きい割引係数を選択し、i番目のゲームに の重みを与えることですd^(i-1)。(ただし、信頼区間のアイデアをどのように適用するかはわかりません。)

PS: ここでこのアイデアを拡張しました: 投票数/スコア/サンプル/などに基づいて平均を計算する方法は?

于 2008-11-11T16:33:22.103 に答える
1

ゲーム数に関して式を非線形にします。

G をゲーム数、S をすべてのゲーム スコアの合計とすると、TotalScore = G^2 * S

論理的に見える何かが見つかるまで、それをいじってみてください。

于 2008-11-11T09:55:36.930 に答える
1

連勝をチェックし、連続した勝利 (+5、+10、+15...) にボーナス ポイントを与えることができるので、(-10,+10,+10,+10,-10,+10) は ( -10、+10、+15、+20、-10、+10)。実行を気にせずにこれを行うこともできます。これにより、(-10,+10,+15,+20,-10,+25) が得られます。

もう 1 つの可能性は、最初にボーナス値を 0 に設定し、プレーヤーが負けた場合は 5 ずつ減らし、プレーヤーが勝った場合は 5 ずつ増やすことです。

于 2008-11-11T10:00:43.380 に答える
1

各人を頂点で表すグラフを作成します。グラフの各エッジは、2 人のプレーヤー間の一連の試合を表します。ここで、ある種のページ ランク アルゴリズムを適用して、頂点に一連の重みを与えます。それはあなたのランキングを与えるはずです。

ここで注意が必要なのは、ページランクで使用されるエッジの重みを選択することです。頂点 u から頂点 v への有向辺 (u,v) については、プレイヤー u がプレイヤー v に対して獲得したポイント数に等しい重みを個人的に割り当てます。

頂点はいつでもグラフに追加できますが、ページ ランクは古い頂点 (つまり、より多くのゲームをプレイした頂点) を優先することに注意してください。とにかく参考までに:

http://dbpubs.stanford.edu:8090/pub/199​​9-66

別のアイデアは、ELO レーティングを使用し、最初に全員に同じスコアを割り当ててから、スコアを前方に伝播することでブートストラップしようとすることです。とはいえ、一概に満足とは言えません。

于 2008-11-14T03:56:20.830 に答える
1

スコアを、過去 30 試合のプレイヤーのベスト 10 試合の平均に設定することができます (または他の数字 - 最後の 10 試合だけが適しているかもしれません)。

まだ 10 ゲームをプレイしていないプレイヤーは、プレイしたゲームの平均を取ることができますが、n < 10 の平均は 10 の平均よりも高い標準偏差を持つという事実を補うために、それを 0 に向けて重み付けします。各 n のスケーリング係数がどうあるべきかはわかりませんが、過去のデータを見ると、典型的なプレーヤーのスコアがどのように変化するかを把握し、そこから作業を進めることができます。

または、1 ゲームあたりのグローバル平均スコア (おそらく 0) を計算し、10 ゲーム未満のプレーヤーのスコアを計算するときに、その量の (10-n) の偽のスコアを追加します。

于 2008-11-11T10:15:07.000 に答える
1

別の出発点は、 ELOチェス ランキング システムに関するウィキペディアの記事です。

于 2008-11-11T10:47:15.610 に答える
0

スコアと比較して、プレイしたゲームをどれだけ重み付けするかによって異なります。プレイしたゲームの重みを返す関数を定義することができます: 1 つのゲームのみの小さな分数と、多くのゲームの場合は 1 (例: 1 - 1/(2 * #Games)) と、それを累積スコアで乗算します。

于 2008-11-11T09:57:45.553 に答える