Ich habe ein Spiel, in dem Sie bei jedem Spiel zwischen -40 und +40 Punkte erzielen können. Benutzer dürfen beliebig viele Matches spielen. Ich möchte eine Gesamtpunktzahl berechnen, die implizit die Anzahl der gespielten Matches berücksichtigt.
Nur den Durchschnitt zu berechnen ist nicht fair. Wenn zum Beispiel Peter vier Spiele spielt und bei jedem Spiel 40 Punkte bekommt, hat er die gleiche Summe punkten als Janne, der nur ein Spiel mit 40 Punkten gespielt hat.
Die Match-Scores zu addieren ist auch nicht fair. Peter spielt 2 Spiele (40 Punkte pro Spiel), Gesamtpunktzahl 80. Janne spielt 8 Spiele (10 Punkte pro Spiel), Gesamtpunktzahl 80.
Gibt es eine (einfache) und faire Methode, um die Gesamtpunktzahl zu berechnen? Ich habe über die Elo & amp gelesen; Glicko System für Schach Bewertungen, aber beide basieren auf Eine Spielerbewertung und die Bewertung der Gegner.
Es hängt davon ab, was Sie betonen möchten, aber ich denke, das ist sowohl einfach als auch effektiv:
durchschnittliche Punktzahl + Spiele gespielt
Sie könnten die Variablen ein wenig gewichten (z. B. 2 * gespielte Spiele, wenn Sie mehr Einfluss haben wollen) - aber die grundlegende Beziehung scheint vernünftig.
In Ihrem ersten Beispiel hätte Peter 44 und Jane hätte 40 - aber wenn Peter Punkte verliert, könnte Jane aufholen.
Ein anderer Ansatz wäre die Verwendung der Bayesschen Statistik. Modellieren Sie die Wahrscheinlichkeit, dass jede Mannschaft als Beta-Verteilung gewinnt, und berechnen Sie die Wahrscheinlichkeit, dass eine Stichprobe aus einer Verteilung größer ist als eine Stichprobe aus der anderen. Dieser Ansatz wird verwendet, um Krebsmedikamente zu testen. Es berücksichtigt nicht nur, welches Medikament eine bessere Ansprechrate hat, sondern auch, welches Medikament mehr Daten enthält. Ein Vergleich von zwei Spielern oder zwei Teams ist genau analog.
Das hört sich komplizierter an, als es ist, aber es gibt kostenlose Software , um diese zu tun Berechnungen, und in einigen Fällen sind die Berechnungen leicht genug, um mit der Hand zu tun.
Siehe eine Einführung in zufällige Ungleichheiten und Einzelheiten zu Beta-Verteilungsungleichheiten .
Ich denke, es gibt keinen guten Weg, um eine Partitur wie diese in einer einzigen Nummer zu erstellen.
Ich würde vorschlagen, den durchschnittlichen Erfolg zu berechnen und die Anzahl der Spiele zu berücksichtigen. Zum Beispiel
Sie können schnell sehen, ob die zweite Zahl größer ist, die erste Zahl ist genauer.
Ansonsten verwende ELO, aber das ist nur korrekt, wenn jeder Spieler mindestens 10 Matches spielt.
Sie können sich Microsofts TruSkill ansehen, ich habe vor ein paar Monaten darüber gelesen und ich habe es gelesen Ich bin ehrlich gesagt über die meisten Details vergessen, also bin ich mir nicht sicher, ob es super geeignet ist, aber es könnte eine gute Inspiration sein.
Ich empfehle, den Spielstand am unteren Ende eines 95% -Konfidenzintervalls zu halten. Im Limit, wenn Sie viele Spiele spielen, nähert sich Ihr Spielstand Ihrer durchschnittlichen Punktzahl, ist aber immer weniger. Es ist, als würde man die durchschnittliche Punktzahl verwenden, aber skeptisch gegenüber Leuten sein, die nur ein paar Spiele gespielt haben und vielleicht nur Glück gehabt haben.
Anders gesagt, es ist eine pessimistische Schätzung dessen, was der wahre Durchschnitt sein wird, nachdem genug Spiele gespielt wurden.
Wie man das 95% -Konfidenzintervall berechnet, ohne die gesamte Liste der Punkte zu speichern: Berechnen eines mittleren Konfidenzintervalls ohne Speichern aller Datenpunkte
Wenn Sie die Anzahl der gespielten Spiele, die Summe der Punktzahlen und die Summe der Quadrate ihrer Punkte verfolgen, können Sie alternativ den Standardfehler wie folgt berechnen:
%Vor%Anstatt sich mit dem 95% CI zu beschäftigen, könntest du den Spielstand einfach so lassen:
%Vor%Beachten Sie, dass das obige negative Unendlich ist, wenn nur ein Spiel gespielt wurde. Das bedeutet, dass Sie jemandem, der nur ein Spiel gespielt hat, die niedrigste Punktzahl als Spielstand geben.
Eine weitere Idee besteht darin, das Konfidenzintervall beim Ranking von Personen (sortiert nach dem unteren Ende) explizit anzuzeigen. Dann würden die Leute mehr dazu beitragen, sowohl ihre CI zu verkleinern als auch ihren Durchschnitt zu erhöhen.
Schließlich kann es sinnvoll sein, neuere Spiele stärker zu gewichten, damit ein isoliertes schlechtes Spiel schneller an Bedeutung verliert. Der Weg dazu wäre, einen Rabattfaktor d
größer als 1 zu wählen und dem i
th Spiel ein Gewicht von d^(i-1)
zu geben. (Obwohl ich dann nicht mehr sicher bin, wie ich die Konfidenzintervall-Idee anwenden soll.)
PS: Ich habe diese Idee hier erweitert: Wie berechnet man basierend auf? Anzahl der Stimmen / Noten / Stichproben / etc?
Machen Sie die Formel in Bezug auf die Anzahl der Spiele nicht linear.
Sei G die Anzahl der Spiele und S die Summe aller Spielstände, dann TotalScore = G ^ 2 * S
Spielen Sie damit herum, bis Sie etwas finden, das logisch erscheint.
Sie können nach Gewinnläufen suchen und Bonuspunkte für aufeinanderfolgende Gewinne (+5, +10, +15 ...) vergeben, also (-10, +10, +10, +10, -10, +10) würde geben (-10, + 10, + 15, + 20, -10, + 10). Sie können dies auch tun, ohne sich um Läufe zu kümmern, dies würde (-10, + 10, + 15, + 20, -10, + 25) ergeben.
Eine andere Möglichkeit wäre, den Bonuswert zu Beginn auf 0 zu setzen und ihn um 5 zu dekrementieren, wenn der Spieler verliert, und ihn um 5 zu erhöhen, wenn der Spieler gewinnt.
Sie können den Punktestand als den Durchschnitt der besten 10 Spiele des Spielers aus den letzten 30 (oder einige andere Zahlen - vielleicht nur die letzten 10 würden Ihnen passen) festlegen.
Spieler, die noch keine 10 Spiele gespielt haben, könnten den Durchschnitt der Spiele, die sie gespielt haben, nehmen, aber dann gegen 0, um die Tatsache auszugleichen, dass der Durchschnitt von n & lt; 10 hat eine höhere Standardabweichung als der Durchschnitt von 10. Nicht sicher, was der Skalierungsfaktor für jedes n sein sollte, aber wenn Sie einige vergangene Daten zu sehen haben, können Sie herausfinden, wie variabel die Werte des typischen Spielers sind und davon arbeiten .
Oder ermitteln Sie, wie hoch der globale Durchschnittswert pro Spiel ist (vielleicht 0), und fügen Sie (10-n) falsche Punktzahlen dieses Betrages hinzu, wenn Sie den Punktestand für einen Spieler mit weniger als 10 Spielen berechnen.
Ein anderer Ausgangspunkt könnte der Wikipedia-Artikel zum ELO Schach-Ranking-System sein
Konstruieren Sie ein Diagramm, wobei jede Person durch einen Scheitelpunkt dargestellt wird. Jede Kante in der Grafik repräsentiert eine Reihe von Übereinstimmungen zwischen zwei Spielern. Wenden Sie nun eine Art von Seitenrangalgorithmus an, um Ihnen eine Reihe von Gewichten über die Scheitelpunkte zu geben. Das sollte dir dein Ranking geben.
Jetzt ist der schwierige Teil die Kantengewichte, die im Pagerank verwendet werden. Für die gerichtete Kante (u, v) - vom Eckpunkt u zum Eckpunkt v - würde ich persönlich ein Gewicht zuweisen, das der Anzahl der Punkte entspricht, die der Spieler gegen Spieler v gewonnen hat.
Sie können jederzeit Scheitelpunkte zu Ihrem Diagramm hinzufügen, aber denken Sie daran, dass der Seitenrang ältere Scheitelpunkte bevorzugt (dh solche, die mehr Spiele gespielt haben!). Für eine Referenz:
Eine alternative Idee besteht darin, ELO-Bewertungen zu verwenden und zu versuchen, sie zu starten, indem Sie jedem die gleiche Punktzahl zuweisen und dann eine Punktzahl weiterleiten. Ich kann jedoch nicht sagen, dass dies völlig zufriedenstellend ist.
Es hängt davon ab, wie viel Sie die gespielten Partien im Vergleich zu den Partituren gewichten möchten. Sie könnten eine Funktion definieren, die ein Spielgewicht zurückgibt: einen kleinen Bruchteil für nur ein Spiel und einen für viele Spiele (z. B. 1 - 1 / (2 * #Games)) und mehrfaches durch den kumulativen Punktestand.
Tags und Links math statistics