Appendice: modello statistico — allineamento XG / gnuBG / blunderDB
Questa pagina descrive come blunderDB calcola gli indicatori che mostra — PR (Performance Rating), Snowie Error Rate, perdita MWC, fortuna e vittorie/sconfitte — e come si allineano a eXtreme Gammon (XG) e gnuBG (riferimento aperto).
Definizioni formali
PR (Performance Rating)
Il PR (chiamato anche « error rate per decision » in gnuBG) misura il costo medio degli errori per decisione conteggiata, sulla scala di eXtreme Gammon e di gnuBG: l’errore medio di equità, moltiplicato per 500.
Il numeratore è la somma assoluta degli errori EMG (in equity cubeful) su tutte le decisioni considerate.
Il denominatore \(N_\text{conteggiate}\) è il numero di decisioni conteggiate (vedi sotto).
Il fattore 500 è la convenzione di XG e di gnuBG (cfr.
gnubg/formatgs.c:399–409). Non è una conversione in millesimi di punto: un errore medio di 0,010 di equità — cioè 10 millesimi di punto (mpt) — dà un PR di 5,0. Gli errori di una posizione, invece, si leggono bene in millesimi di punto, cioè in millesimi di equità: la soglia di blunder qui sotto, i filtri di ricercae>eE>, l’istogramma delle magnitudini del pannello Stats.
Snowie Error Rate
Lo Snowie ER usa lo stesso numeratore del PR, ma il denominatore è il numero totale di mosse di entrambi i giocatori, mosse forzate incluse (tutte le decisioni, senza filtro):
Riferimento: gnubg/formatgs.c:415–424.
Lo Snowie ER è più stabile tra gli strumenti perché il suo denominatore non dipende dal filtro delle decisioni forzate/banali. Serve come metrica di confronto incrociato tra XG, gnuBG e blunderDB.
Importante
Il filtro «Giocatore» si applica soltanto al numeratore. Selezionare un giocatore restringe gli errori sommati alle sue decisioni, ma il denominatore resta il numero di mosse di pedine di entrambi i giocatori, sui match trattenuti dal filtro. È ciò che distingue lo Snowie ER dal PR, ed è la ragione della proprietà seguente: su un database contenente solo match fra due giocatori, la somma dei loro due Snowie ER è esattamente lo Snowie ER non filtrato.
Nota
Lo Snowie ER di un giocatore è tipicamente circa la metà del suo PR, perché il denominatore include le mosse di entrambi i giocatori mentre il PR usa solo le decisioni di quel giocatore.
Perdita di MWC (Match Winning Chance)
La perdita di MWC esprime in punti percentuali di probabilità di vincere il match l’effetto cumulato degli errori di un giocatore. Per ogni decisione, l’errore EMG è convertito in MWC tramite la tabella MET (Match Equity Table) al punteggio corrente:
Riferimento: gnubg/analysis.c:1449–1464.
Fortuna (luck)
La fortuna di un lancio è lo scarto fra ciò che i dadi hanno dato e ciò che danno in media:
con la somma estesa ai 36 esiti del lancio (30 lanci non doppi per la mossa d’apertura della partita, che non può essere un doppio). Un valore positivo indica un lancio favorevole. Riferimento: gnubg/analysis.c:199–269 (LuckNormal / LuckFirst, valutazione cubeful a 0 ply).
Importante
blunderDB non ricalcola mai la fortuna: il valutatore integrato non serve a questo. Riprende tale e quale il valore scritto dallo strumento che ha analizzato il match — ErrLuck per eXtreme Gammon, la proprietà LU per gnuBG — dopo aver verificato che i due condividono la stessa convenzione (stessa unità, positivo = fortunato).
Conseguenze pratiche:
I formati che non trasportano la fortuna (BGF, Jellyfish .mat) non producono alcun valore.
Nemmeno i match già importati ce l’hanno: la fortuna non è mai stata memorizzata prima della versione 2.15.0 dello schema, e nulla nel database ne consente la ricostruzione. Occorre reimportare i file di origine per ottenerla.
Un valore assente significa sconosciuto, mai nullo — zero è un lancio davvero neutro. Le medie di fortuna dividono quindi solo per il numero di lanci di cui la fortuna è nota.
Un match in cui tutti i lanci avessero una fortuna esattamente nulla è considerato non analizzato sotto questo aspetto (eXtreme Gammon scrive 0 sia per «neutro» sia per «non calcolato»): i suoi lanci restano sconosciuti. Sul versante gnuBG la distinzione è esplicita — un lancio non valutato porta
LU[-inf]— e anche quei lanci restano sconosciuti, anziché essere convertiti in un valore.
Vittorie e sconfitte
blunderDB non memorizza un vincitore a livello di match: vengono memorizzati soltanto i punti di ogni partita. Il risultato è quindi derivato al momento della visualizzazione, sommando i punti per posto:
Match a N punti — vincitore = il giocatore che raggiunge N. Se nessuno lo raggiunge, il match è incompiuto (registro troncato, abbandono) e non conta né vittoria né sconfitta, per nessuno.
Partita a soldi (senza obiettivo) — vincitore = chi ha preso più punti; in caso di parità, né vittoria né sconfitta. È la convenzione del risultato di sessione di gnuBG (+1 / 0 / −1,
gnubg/relational.c).
Conseguenza da conoscere leggendo la scheda Giocatori: vittorie + sconfitte può essere inferiore al numero di match. Lo scarto sono i match incompiuti.
Errori e blunder
Una decisione è contata come errore non appena l’errore di equità associato raggiunge la soglia di errore della libreria, e come blunder non appena raggiunge la sua soglia di blunder. Entrambe si impostano nella scheda Libreria della configurazione e valgono per impostazione predefinita 0,050 e 0,100 EMG (50 e 100 mpt). Il confronto è inclusivo: un errore di esattamente 0,100 è un blunder alla soglia predefinita, in tutte le schermate (ripartizione per azione di cubo, dettaglio di match, tabella dei giocatori), e la stessa coppia serve al contatore della barra di stato e all’elenco proposto dopo un’importazione.
Queste soglie sono proprie di ogni libreria, e i valori predefiniti sono propri di blunderDB: gnuBG classifica le mosse in tre livelli (0.03 dubbia, 0.06 cattiva, 0.12 molto cattiva — gnubg/gnubg.c:281–286) anziché in un’unica categoria, ed eXtreme Gammon traccia le proprie a 0,020 e 0,080. Entrambe sono proposte come preimpostazioni.
Decisioni conteggiate nel denominatore del PR
blunderDB segue le stesse regole di esclusione di XG e gnuBG.
Mosse di pedine — decisioni conteggiate
Vengono conteggiate solo le mosse non forzate:
Una mossa è forzata se i dadi offrono una sola mossa legale (
cMoves == 1ingnubg/analysis.c:458).Le mosse forzate hanno errore nullo per definizione: il giocatore non aveva scelta. Includerle nel denominatore abbasserebbe artificialmente il PR.
Decisioni di cubo — decisioni conteggiate
Vengono conteggiate solo le decisioni di cubo vicine:
Una decisione di cubo è vicina se rientra nella finestra di equity
[-0.16, +0.16]attorno al punto di raddoppio (predicatoisCloseCubedecisioningnubg/eval.c:5088–5100).Un «No Double» banale (equity molto negativa o molto positiva) non è una vera decisione strategica; includerlo gonfierebbe il denominatore e abbasserebbe il PR.
Riepilogo del filtro
Tipo di decisione |
Incluso in \(N_\text{conteggiate}\) (PR) |
|---|---|
Mossa non forzata |
Sì |
Mossa forzata |
No |
Cubo vicino |
Sì |
No Double banale |
No |
Take / Pass |
Sempre (sono risposte al raddoppio) |
Corrispondenza blunderDB ↔ XG ↔ gnuBG
Le metriche sono allineate entro i limiti seguenti. Sono soglie verificate dalla suite di test, non scarti medi: il test confronta match per match le cifre di blunderDB con quelle registrate per i match di riferimento del repository, e fallisce non appena uno scarto supera la soglia. I riferimenti XG riguardano due match — uno completo (317 decisioni conteggiate, 156 e 161 per giocatore), l’altro ridotto al solo PR, con una soglia portata a 0,15 a causa di una mossa non abbinata; i riferimenti gnuBG riguardano altri due match. La versione di eXtreme Gammon che ha prodotto queste cifre non è registrata.
Confronto XG ↔ blunderDB (stesso motore di analisi)
Metrica |
Scarto massimo |
|---|---|
Decisioni totali |
≤ 5 |
Mosse non forzate |
≤ 7 |
PR |
≤ 0.10 |
Perdita di MWC |
≤ 1.0 pp |
Equity totale (EMG) |
≤ 0.05 |
Confronto gnuBG ↔ blunderDB (import SGF — motori diversi)
Metrica |
Scarto massimo |
Causa principale |
|---|---|---|
PR (checker) |
≤ 0.20 |
differenze di equity tra motori diversi |
Perdita di MWC |
≤ 3.5 pp |
dati close-cube incompleti nel SGF |
Snowie ER |
≤ 0.50 |
mosse forzate senza analisi (SGF) |
Nota
I file SGF (gnuBG) non includono le alternative per le mosse forzate, il che significa che blunderDB non può rilevare tutte le mosse forzate all’import SGF. Questo crea uno scarto strutturale sullo Snowie ER (denominatore leggermente diverso).
Convalidare i propri valori
Se i tuoi valori di PR o MWC divergono dai valori XG, verifica i seguenti punti:
Analisi complete — Il PR può essere calcolato solo sulle posizioni che dispongono di un’analisi. Le posizioni senza analisi vengono conteggiate come errore zero ma non rientrano in \(N_\text{conteggiate}\).
Versione XG — XG può modificare i suoi calcoli tra una versione e l’altra. blunderDB si allinea al comportamento osservato nelle versioni recenti.
Formato di import — I file SGF gnuBG producono scarti più importanti sulle metriche del cubo (vedi tabella sopra) perché il file non include le analisi complete per tutte le decisioni di cubo.
Migrazione del database — Dopo l’aggiornamento di blunderDB, i database esistenti vengono migrati automaticamente. Effettua un backup prima di aprire un database con una nuova versione.
Riferimento gnuBG
Le formule sono state verificate nei seguenti file sorgente (repository gnuBG):
gnubg/formatgs.c:399–409— PR («Error rate per decision»).gnubg/formatgs.c:415–424— Snowie Error Rate.gnubg/analysis.c:458–462— Accumulo checker, esclusione delle mosse forzate (cMoves > 1).gnubg/analysis.c:1430–1474— Conversione EMG → MWC per decisione.gnubg/analysis.c:1449–1464— Accumulo della perdita di MWC (eq2mwc).gnubg/eval.c:5088–5100— PredicatoisCloseCubedecision(soglia 0.16).