Anhang: Statistikmodell — Abgleich XG / gnuBG / blunderDB

Diese Seite beschreibt, wie blunderDB die angezeigten Kennzahlen berechnet — PR (Performance Rating), Snowie Error Rate, MWC-Verlust, Glück und Siege/Niederlagen — und wie sie sich zu eXtreme Gammon (XG) und gnuBG (offene Referenz) verhalten.

Formale Definitionen

PR (Performance Rating)

Der PR (in gnuBG auch „error rate per decision“ genannt) misst die durchschnittlichen Fehlerkosten pro gezählter Entscheidung, auf der Skala von eXtreme Gammon und gnuBG: den durchschnittlichen Equity-Fehler, multipliziert mit 500.

\[\mathrm{PR} = \frac{\sum_i |\mathrm{Fehler}_i|}{\mathrm{N_{gezählt}}} \times 500\]
  • Der Zähler ist die absolute Summe der EMG-Fehler (Cubeful-Equity) über alle Entscheidungen im betrachteten Bereich.

  • Der Nenner \(N_\text{compté}\) ist die Anzahl der gezählten Entscheidungen (siehe unten).

  • Der Faktor 500 ist die Konvention von XG und gnuBG (vgl. gnubg/formatgs.c:399–409). Das ist keine Umrechnung in Millipunkte: ein durchschnittlicher Equity-Fehler von 0,010 — also 10 Millipunkte (mpt) — ergibt einen PR von 5,0. Die Fehler einer Position dagegen lassen sich direkt in Millipunkten lesen, also in Tausendsteln der Equity: die Blunder-Schwelle weiter unten, die Suchfilter e> und E>, das Größenordnungs-Histogramm des Stats-Panels.

Snowie Error Rate

Die Snowie ER verwendet denselben Zähler wie der PR, aber der Nenner ist die Gesamtzahl der Züge beider Spieler, einschließlich erzwungener Züge (alle Entscheidungen, ohne Filter):

\[\mathrm{SnowieER} = \frac{\sum_i |\mathrm{Fehler}_i|}{N_\text{P1} + N_\text{P2}} \times 500\]

Referenz: gnubg/formatgs.c:415–424.

Die Snowie ER ist über die verschiedenen Werkzeuge hinweg stabiler, da ihr Nenner nicht vom Filter für erzwungene/triviale Entscheidungen abhängt. Sie dient als Abgleichskennzahl zwischen XG, gnuBG und blunderDB.

Wichtig

Der Filter „Spieler“ wirkt nur auf den Zähler. Die Auswahl eines Spielers beschränkt die summierten Fehler auf dessen eigene Entscheidungen, der Nenner bleibt jedoch die Zahl der Steinzüge beider Spieler über die vom Filter behaltenen Matches. Das unterscheidet die Snowie ER vom PR und begründet die folgende Eigenschaft: In einer Datenbank, die nur Matches zwischen zwei Spielern enthält, ist die Summe ihrer beiden Snowie ER genau die ungefilterte Snowie ER.

Bemerkung

Die Snowie ER eines Spielers beträgt typischerweise etwa die Hälfte seines PR, da der Nenner die Züge beider Spieler einschließt, während der PR nur die Entscheidungen dieses Spielers verwendet.

MWC-Verlust (Match Winning Chance)

Der MWC-Verlust drückt die kumulierte Auswirkung der Fehler eines Spielers in Prozentpunkten der Match-Gewinnwahrscheinlichkeit aus. Für jede Entscheidung wird der EMG-Fehler über die MET (Match Equity Table) beim aktuellen Spielstand in MWC umgerechnet:

\[\mathrm{MWCLoss} = \sum_i \mathrm{eq2mwc}(\mathrm{erreur}_i, \mathrm{score}_i)\]

Referenz: gnubg/analysis.c:1449–1464.

Glück (luck)

Das Glück eines Wurfs ist die Differenz zwischen dem, was die Würfel gaben, und dem, was sie im Mittel geben:

\[\mathrm{luck} = \mathrm{eq}(\text{bester Zug mit dem gefallenen Wurf}) - \frac{1}{36}\sum_{d} \mathrm{eq}(\text{bester Zug mit } d)\]

wobei die Summe über die 36 Ausgänge des Wurfs läuft (30 Nicht-Pasch-Würfe beim Eröffnungszug einer Partie, der kein Pasch sein kann). Ein positiver Wert bedeutet einen günstigen Wurf. Referenz: gnubg/analysis.c:199–269 (LuckNormal / LuckFirst, cubeful-Auswertung bei 0 Ply).

Wichtig

blunderDB berechnet das Glück nie neu: Dafür ist der eingebaute Evaluator nicht da. Es übernimmt unverändert den Wert, den das Werkzeug geschrieben hat, das das Match analysiert hat — ErrLuck bei eXtreme Gammon, die Eigenschaft LU bei gnuBG —, nachdem geprüft wurde, dass beide dieselbe Konvention verwenden (gleiche Einheit, positiv = glücklich).

Praktische Folgen:

  • Formate, die kein Glück transportieren (BGF, Jellyfish .mat), liefern überhaupt keinen Wert.

  • Auch bereits importierte Matches haben keines: Das Glück wurde vor Schemaversion 2.15.0 nie gespeichert, und nichts in der Datenbank erlaubt seine Rekonstruktion. Die Quelldateien müssen neu importiert werden, um es zu erhalten.

  • Ein fehlender Wert bedeutet unbekannt, nie null — null ist ein tatsächlich neutraler Wurf. Glücksdurchschnitte teilen daher nur durch die Zahl der Würfe, deren Glück bekannt ist.

  • Ein Match, in dem alle Würfe ein Glück von genau null hätten, gilt in dieser Hinsicht als nicht analysiert (eXtreme Gammon schreibt 0 sowohl für „neutral“ als auch für „nicht berechnet“): Seine Würfe bleiben unbekannt. Auf der gnuBG-Seite ist die Unterscheidung ausdrücklich — ein nicht ausgewerteter Wurf trägt LU[-inf] — und auch diese Würfe bleiben unbekannt, statt in einen Wert umgewandelt zu werden.

Siege und Niederlagen

blunderDB speichert keinen Sieger auf Matchebene: Gespeichert werden nur die Punkte jeder Partie. Das Ergebnis wird daher bei der Anzeige abgeleitet, indem die Punkte je Sitzplatz aufsummiert werden:

  • Match auf N Punkte — Sieger = der Spieler, der N erreicht. Erreicht ihn niemand, ist das Match unvollendet (abgeschnittenes Protokoll, Aufgabe) und zählt für niemanden als Sieg oder Niederlage.

  • Geldpartie (ohne Ziel) — Sieger = wer die meisten Punkte geholt hat; bei Gleichstand weder Sieg noch Niederlage. Das ist die Sitzungsergebnis-Konvention von gnuBG (+1 / 0 / −1, gnubg/relational.c).

Beim Lesen des Reiters Spieler zu beachten: Siege + Niederlagen können kleiner sein als die Zahl der Matches. Die Differenz sind die unvollendeten Matches.

Fehler und Blunders

Eine Entscheidung zählt als Fehler, sobald der zugehörige Equity-Fehler die Fehlerschwelle der Bibliothek erreicht, und als Blunder, sobald er ihre Blunder-Schwelle erreicht. Beide werden in der Registerkarte Bibliothek der Konfiguration eingestellt und betragen standardmäßig 0,050 und 0,100 EMG (50 und 100 mpt). Der Vergleich ist inklusiv: Ein Fehler von genau 0,100 ist bei der Standardschwelle ein Blunder, auf allen Bildschirmen (Aufschlüsselung nach Cube-Aktion, Matchdetail, Spielertabelle), und dasselbe Paar dient dem Zähler der Statusleiste und der nach einem Import vorgeschlagenen Liste.

Diese Schwellenwerte sind jeder Bibliothek eigen, und die Standardwerte sind blunderDB eigen: gnuBG stuft die Züge in drei Stufen ein (0.03 zweifelhaft, 0.06 schlecht, 0.12 sehr schlecht — gnubg/gnubg.c:281–286) statt in eine einzige Kategorie, und eXtreme Gammon zieht seine eigenen bei 0,020 und 0,080. Beide werden als Voreinstellungen angeboten.

Im PR-Nenner gezählte Entscheidungen

blunderDB folgt denselben Ausschlussregeln wie XG und gnuBG.

Steinzüge — gezählte Entscheidungen

Nur nicht erzwungene Züge werden gezählt:

  • Ein Zug ist erzwungen, wenn der Würfel nur einen einzigen legalen Zug zulässt (cMoves == 1 in gnubg/analysis.c:458).

  • Erzwungene Züge haben definitionsgemäß einen Fehler von null: Der Spieler hatte keine Wahl. Sie in den Nenner einzubeziehen würde den PR künstlich senken.

Cube-Entscheidungen — gezählte Entscheidungen

Nur knappe Cube-Entscheidungen werden gezählt:

  • Eine Cube-Entscheidung ist knapp, wenn sie innerhalb des Equity-Fensters [-0.16, +0.16] um den Verdopplungspunkt liegt (Prädikat isCloseCubedecision in gnubg/eval.c:5088–5100).

  • Ein triviales „No Double“ (sehr negative oder sehr positive Equity) ist keine echte strategische Entscheidung; es einzubeziehen würde den Nenner aufblähen und den PR drücken.

Zusammenfassung des Filters

Entscheidungstyp

Enthalten in \(N_\text{compté}\) (PR)

Nicht erzwungener Zug

Ja

Erzwungener Zug

Nein

Knapper Cube

Ja

Triviales No Double

Nein

Take / Pass

Immer (dies sind Antworten auf ein Double)

Übereinstimmung blunderDB ↔ XG ↔ gnuBG

Die Kennzahlen stimmen innerhalb der unten angegebenen Grenzen überein. Dies sind durch die Testsuite geprüfte Grenzwerte, keine durchschnittlichen Abweichungen: Der Test vergleicht match für match die Zahlen von blunderDB mit den für die Referenzmatches des Repositorys gespeicherten Werten und schlägt fehl, sobald eine einzige Abweichung den Grenzwert überschreitet. Die XG-Referenzen umfassen zwei Matches — eines vollständig (317 gezählte Entscheidungen, 156 und 161 pro Spieler), das andere auf seinen reinen PR reduziert, mit einem auf 0,15 angehobenen Grenzwert wegen eines nicht zugeordneten Zuges; die gnuBG-Referenzen umfassen zwei weitere Matches. Die Version von eXtreme Gammon, die diese Zahlen erzeugt hat, ist nicht vermerkt.

Vergleich XG ↔ blunderDB (gleiche Analyse-Engine)

Kennzahl

Maximale Abweichung

Entscheidungen gesamt

≤ 5

Nicht erzwungene Züge

≤ 7

PR

≤ 0.10

MWC-Verlust

≤ 1.0 pp

Gesamt-Equity (EMG)

≤ 0.05

Vergleich gnuBG ↔ blunderDB (SGF-Import — unterschiedliche Engines)

Kennzahl

Maximale Abweichung

Hauptursache

PR (Checker)

≤ 0.20

Engine-übergreifende Equity-Unterschiede

MWC-Verlust

≤ 3.5 pp

unvollständige Close-Cube-Daten im SGF

Snowie ER

≤ 0.50

erzwungene Züge ohne Analyse (SGF)

Bemerkung

SGF-Dateien (gnuBG) enthalten keine Alternativen für erzwungene Züge, was bedeutet, dass blunderDB beim SGF-Import nicht alle erzwungenen Züge erkennen kann. Dies führt zu einer strukturellen Abweichung bei der Snowie ER (leicht abweichender Nenner).

Eigene Zahlen überprüfen

Wenn Ihre PR- oder MWC-Werte von den XG-Zahlen abweichen, prüfen Sie die folgenden Punkte:

  1. Vollständige Analysen — Der PR kann nur für Positionen berechnet werden, die über eine Analyse verfügen. Positionen ohne Analyse zählen als Fehler null, gehen aber nicht in \(N_\text{compté}\) ein.

  2. XG-Version — XG kann seine Berechnungen zwischen Versionen ändern. blunderDB orientiert sich am beobachteten Verhalten aktueller Versionen.

  3. Importformat — gnuBG-SGF-Dateien führen zu größeren Abweichungen bei den Cube-Kennzahlen (siehe Tabelle oben), da die Datei keine vollständigen Analysen für alle Cube-Entscheidungen enthält.

  4. Datenbankmigration — Nach einer Aktualisierung von blunderDB werden bestehende Datenbanken automatisch migriert. Erstellen Sie eine Sicherung, bevor Sie eine Datenbank mit einer neuen Version öffnen.

gnuBG-Referenz

Die Formeln wurden anhand der folgenden Quelldateien (gnuBG-Repository) überprüft:

  • gnubg/formatgs.c:399–409 — PR („Error rate per decision“).

  • gnubg/formatgs.c:415–424 — Snowie Error Rate.

  • gnubg/analysis.c:458–462 — Checker-Akkumulation, Ausschluss erzwungener Züge (cMoves > 1).

  • gnubg/analysis.c:1430–1474 — Umrechnung EMG → MWC pro Entscheidung.

  • gnubg/analysis.c:1449–1464 — Akkumulation des MWC-Verlusts (eq2mwc).

  • gnubg/eval.c:5088–5100 — Prädikat isCloseCubedecision (Schwelle 0.16).