Annexe : Modèle de statistiques — alignement XG / gnuBG / blunderDB
Cette page décrit comment blunderDB calcule les indicateurs qu’il affiche — PR (Performance Rating), Snowie Error Rate, perte MWC, chance et victoires/défaites — et comment ils s’alignent sur eXtreme Gammon (XG) et gnuBG (référence ouverte).
Définitions formelles
PR (Performance Rating)
Le PR (aussi appelé « error rate per decision » dans gnuBG) mesure le coût moyen des erreurs par décision comptée, sur l’échelle d’eXtreme Gammon et de gnuBG : l’erreur moyenne d’équité, multipliée par 500.
Le numérateur est la somme absolue des erreurs EMG (en equity cubeful) sur toutes les décisions du périmètre.
Le dénominateur \(N_\text{compté}\) est le nombre de décisions comptées (voir ci-dessous).
Le facteur 500 est la convention d’XG et de gnuBG (cf.
gnubg/formatgs.c:399–409). Ce n’est pas une conversion en millipoints : une erreur moyenne de 0,010 d’équité — soit 10 millipoints (mpt) — donne un PR de 5,0. Les erreurs d’une position, elles, se lisent bien en millipoints, c’est-à-dire en millièmes d’équité : le seuil de blunder ci-dessous, les filtres de recherchee>etE>, l’histogramme des magnitudes du panneau Stats.
Snowie Error Rate
Le Snowie ER utilise le même numérateur que le PR, mais le dénominateur est le nombre total de coups des deux joueurs, coups forcés inclus (toutes décisions, sans filtre) :
Référence : gnubg/formatgs.c:415–424.
Le Snowie ER est plus stable entre les outils car son dénominateur ne dépend pas du filtre des décisions forcées/triviales. Il sert de métrique de recoupement XG ↔ gnuBG ↔ blunderDB.
Important
Le filtre « Joueur » ne s’applique qu’au numérateur. Sélectionner un joueur restreint les erreurs sommées à ses propres décisions, mais le dénominateur reste le nombre de coups de pions des deux joueurs, sur les matchs retenus par le filtre. C’est ce qui distingue le Snowie ER du PR, et c’est la raison de la propriété suivante : sur une base ne contenant que des matchs entre deux joueurs, la somme de leurs deux Snowie ER est exactement le Snowie ER non filtré.
Note
Le Snowie ER d’un joueur est typiquement environ la moitié de son PR, car le dénominateur inclut les coups des deux joueurs alors que le PR n’utilise que les décisions de ce joueur.
Perte MWC (Match Winning Chance)
La perte MWC exprime en points de pourcentage de probabilité de gagner le match l’effet cumulé des erreurs d’un joueur. Pour chaque décision, l’erreur EMG est convertie en MWC via la table MET (Match Equity Table) au score courant :
Référence : gnubg/analysis.c:1449–1464.
Chance (luck)
La chance d’un lancer est l’écart entre ce que les dés ont donné et ce qu’ils donnent en moyenne :
la somme portant sur les 36 issues du lancer (30 lancers non doubles pour le
premier coup de la partie, qui ne peut pas être un double). Une valeur positive
signifie un lancer favorable. Référence : gnubg/analysis.c:199–269
(LuckNormal / LuckFirst, évaluation cubeful à 0 ply).
Important
blunderDB ne recalcule jamais la chance : l’évaluateur intégré ne sert
pas à cela. Il reprend telle quelle la valeur écrite par l’outil qui a
analysé le match — ErrLuck pour eXtreme Gammon, la propriété LU pour
gnuBG — après vérification que les deux partagent la même convention (même
unité, positif = chanceux).
Conséquences pratiques :
Les formats qui ne transportent pas la chance (BGF, Jellyfish .mat) ne produisent aucune valeur.
Les matchs déjà importés n’en ont pas non plus : la chance n’a jamais été stockée avant la version 2.15.0 du schéma, et rien dans la base ne permet de la reconstituer. Il faut réimporter les fichiers source pour l’obtenir.
Une valeur absente signifie inconnue, jamais nulle — zéro est un lancer réellement neutre. Les moyennes de chance ne divisent donc que par le nombre de lancers dont la chance est connue.
Un match dont tous les lancers auraient une chance exactement nulle est considéré comme non analysé de ce point de vue (eXtreme Gammon écrit 0 aussi bien pour « neutre » que pour « non calculé ») : ses lancers restent inconnus. Côté gnuBG la distinction est explicite — un lancer non évalué porte
LU[-inf]— et ces lancers restent inconnus eux aussi, plutôt que d’être convertis en une valeur.
Victoires et défaites
blunderDB ne stocke pas de vainqueur au niveau du match : seuls les points de chaque partie le sont. Le résultat est donc dérivé à l’affichage, en cumulant les points par siège :
Match en N points — vainqueur = le joueur qui atteint N. Si personne ne l’atteint, le match est inachevé (journal tronqué, abandon) et ne compte ni victoire ni défaite, pour personne.
Partie d’argent (sans cible) — vainqueur = celui qui a pris le plus de points ; à égalité, ni victoire ni défaite. C’est la convention du résultat de session de gnuBG (+1 / 0 / −1,
gnubg/relational.c).
Conséquence à connaître en lisant l’onglet Joueurs : victoires + défaites peut être inférieur au nombre de matchs. L’écart, ce sont les matchs inachevés.
Erreurs et blunders
Une décision est comptée comme erreur dès que l’erreur d’équité associée atteint le seuil d’erreur de la bibliothèque, et comme blunder dès qu’elle atteint son seuil de blunder. Les deux se règlent dans l’onglet Bibliothèque de la configuration et valent par défaut 0,050 et 0,100 EMG (50 et 100 mpt). La comparaison est inclusive : une erreur d’exactement 0,100 est un blunder au seuil par défaut, dans tous les écrans (répartition par action de videau, détail de match, tableau des joueurs), et la même paire sert au compteur de la barre d’état et à la liste proposée après un import.
Ces seuils sont propres à chaque bibliothèque, et les valeurs par défaut sont
propres à blunderDB : gnuBG classe les coups en trois crans (0.03 douteux,
0.06 mauvais, 0.12 très mauvais — gnubg/gnubg.c:281–286) plutôt
qu’en une catégorie unique, et eXtreme Gammon trace les siennes à 0,020 et
0,080. Les deux sont proposés comme préréglages.
Décisions comptées au dénominateur du PR
blunderDB suit les mêmes règles d’exclusion qu’XG et gnuBG.
Coups de pions — décisions comptées
Seuls les coups non-forcés sont comptés :
Un coup est forcé si le dé n’offre qu’un seul coup légal (
cMoves == 1dansgnubg/analysis.c:458).Les coups forcés ont une erreur nulle par définition : le joueur n’avait pas le choix. Les inclure dans le dénominateur abaisserait artificiellement le PR.
Décisions de cube — décisions comptées
Seules les décisions de cube proches sont comptées :
Une décision cube est proche si elle se situe dans la fenêtre d’équité
[-0.16, +0.16]autour du point de redoublement (prédicatisCloseCubedecisiondansgnubg/eval.c:5088–5100).Un « No Double » trivial (équité très négative ou très positive) n’est pas une vraie décision stratégique ; l’inclure gonflerait le dénominateur et dépresserait le PR.
Résumé du filtre
Type de décision |
Inclus dans \(N_\text{compté}\) (PR) |
|---|---|
Coup non-forcé |
Oui |
Coup forcé |
Non |
Cube proche |
Oui |
No Double trivial |
Non |
Take / Pass |
Toujours (ce sont des réponses au double) |
Correspondance blunderDB ↔ XG ↔ gnuBG
Les métriques sont alignées dans les limites ci-dessous. Ce sont des bornes vérifiées par la suite de tests, et non des écarts moyens : le test compare match par match les chiffres de blunderDB à ceux enregistrés pour les matchs de référence du dépôt, et échoue dès qu’un seul écart dépasse la borne. Les références XG portent sur deux matchs — l’un complet (317 décisions comptées, 156 et 161 par joueur), l’autre réduit à son seul PR, avec une borne portée à 0,15 à cause d’un coup non apparié ; les références gnuBG portent sur deux autres matchs. La version d’eXtreme Gammon qui a produit ces chiffres n’est pas enregistrée.
Comparaison XG ↔ blunderDB (même moteur d’analyse)
Métrique |
Écart maximal |
|---|---|
Décisions totales |
≤ 5 |
Coups non-forcés |
≤ 7 |
PR |
≤ 0.10 |
Perte MWC |
≤ 1.0 pp |
Equity total (EMG) |
≤ 0.05 |
Comparaison gnuBG ↔ blunderDB (import SGF — moteurs différents)
Métrique |
Écart maximal |
Cause principale |
|---|---|---|
PR (checker) |
≤ 0.20 |
equity cross-engine |
Perte MWC |
≤ 3.5 pp |
close-cube SGF incomplet |
Snowie ER |
≤ 0.50 |
forcés sans analyse (SGF) |
Note
Les fichiers SGF (gnuBG) n’incluent pas les alternatives pour les coups forcés, ce qui signifie que blunderDB ne peut pas détecter tous les coups forcés à l’import SGF. Cela crée un écart structurel sur le Snowie ER (dénominateur légèrement différent).
Valider vos propres chiffres
Si vos valeurs PR ou MWC divergent des chiffres XG, vérifier les points suivants :
Analyses complètes — Le PR ne peut être calculé que sur les positions disposant d’une analyse. Des positions sans analyse sont comptées comme erreur zéro mais n’entrent pas dans \(N_\text{compté}\).
Version XG — XG peut changer ses calculs entre versions. blunderDB s’aligne sur le comportement observé des versions récentes.
Format d’import — Les fichiers SGF gnuBG produisent des écarts plus importants sur le cube (voir tableau ci-dessus) car le fichier n’inclut pas les analyses complètes pour tous les cubes.
Migration de base — Après mise à jour de blunderDB, les bases existantes sont migrées automatiquement. Faire une sauvegarde avant d’ouvrir une base avec une nouvelle version.
Référence gnuBG
Les formules ont été vérifiées dans les fichiers source suivants (dépôt gnuBG) :
gnubg/formatgs.c:399–409— PR (« Error rate per decision »).gnubg/formatgs.c:415–424— Snowie Error Rate.gnubg/analysis.c:458–462— Accumulation checker, exclusion des forcés (cMoves > 1).gnubg/analysis.c:1430–1474— Conversion EMG → MWC par décision.gnubg/analysis.c:1449–1464— Accumulation de la perte MWC (eq2mwc).gnubg/eval.c:5088–5100— PrédicatisCloseCubedecision(seuil 0.16).