Liite: Tilastomalli — XG / gnuBG / blunderDB -yhdenmukaisuus

Tämä sivu kuvaa, miten blunderDB laskee näyttämänsä tunnusluvut — PR (Performance Rating), Snowie Error Rate, MWC-menetys, tuuri ja voitot/tappiot — ja miten ne asettuvat eXtreme Gammonin (XG) ja gnuBG:n (avoin vertailukohta) kanssa.

Muodolliset määritelmät

PR (Performance Rating)

PR (jota gnuBG:ssä kutsutaan myös nimellä ”error rate per decision”) mittaa virheiden keskimääräistä kustannusta laskettua päätöstä kohti, eXtreme Gammonin ja gnuBG:n asteikolla: keskimääräinen equity-virhe kerrottuna 500:lla.

\[\mathrm{PR} = \frac{\sum_i |\mathrm{erreur}_i|}{\mathrm{N_{compté}}} \times 500\]
  • Osoittaja on EMG-virheiden (cubeful equity) itseisarvojen summa kaikkien tarkasteltavien päätösten yli.

  • Nimittäjä \(N_\text{compté}\) on laskettujen päätösten määrä (katso alla).

  • Kerroin 500 on XG:n ja gnuBG:n käytäntö (vrt. gnubg/formatgs.c:399–409). Se ei ole muunnos millipisteiksi: keskimääräinen 0,010:n equity-virhe — eli 10 millipistettä (mpt) — antaa PR:ksi 5,0. Yksittäisen aseman virheet sen sijaan luetaan nimenomaan millipisteinä, siis equityn tuhannesosina: alla oleva blunderin raja, hakusuodattimet e> ja E> sekä Stats-paneelin suuruusjakauman histogrammi.

Snowie Error Rate

Snowie ER käyttää samaa osoittajaa kuin PR, mutta nimittäjä on molempien pelaajien siirtojen kokonaismäärä, pakkosiirrot mukaan luettuna (kaikki päätökset, ilman suodatusta):

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

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

Snowie ER on vakaampi eri työkalujen välillä, koska sen nimittäjä ei riipu pakotettujen/triviaalien päätösten suodattimesta. Se toimii ristiintarkistusmittarina XG:n, gnuBG:n ja blunderDB:n välillä.

Tärkeä

”Pelaaja”-suodatin vaikuttaa vain osoittajaan. Pelaajan valinta rajaa summattavat virheet hänen omiin päätöksiinsä, mutta nimittäjänä pysyy molempien pelaajien nappulasiirtojen määrä suodattimen säilyttämissä otteluissa. Tämä erottaa Snowie ER:n PR:stä ja on syy seuraavaan ominaisuuteen: tietokannassa, jossa on vain kahden pelaajan välisiä otteluita, heidän kahden Snowie ER:nsä summa on täsmälleen suodattamaton Snowie ER.

Muista

Pelaajan Snowie ER on tyypillisesti noin puolet hänen PR-arvostaan, koska nimittäjä sisältää molempien pelaajien siirrot, kun taas PR käyttää vain kyseisen pelaajan päätöksiä.

MWC-tappio (Match Winning Chance)

MWC-tappio ilmaisee ottelun voittotodennäköisyyden prosenttiyksikköinä pelaajan virheiden kumulatiivisen vaikutuksen. Jokaisen päätöksen kohdalla EMG-virhe muunnetaan MWC:ksi MET-taulukon (Match Equity Table) avulla nykyisellä pistetilanteella:

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

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

Tuuri (luck)

Heiton tuuri on erotus sen välillä, mitä nopat antoivat ja mitä ne antavat keskimäärin:

\[\mathrm{luck} = \mathrm{eq}(\text{paras siirto saadulla heitolla}) - \frac{1}{36}\sum_{d} \mathrm{eq}(\text{paras siirto heitolla } d)\]

summan käydessä heiton 36 lopputuloksen yli (30 ei-tuplaheittoa pelin avaussiirrolle, joka ei voi olla tupla). Positiivinen arvo tarkoittaa suotuisaa heittoa. Viite: gnubg/analysis.c:199–269 (LuckNormal / LuckFirst, cubeful-arviointi 0 plyllä).

Tärkeä

blunderDB ei laske tuuria koskaan uudelleen: sisäänrakennettua evaluaattoria ei käytetä siihen. Se ottaa sellaisenaan arvon, jonka ottelun analysoinut työkalu on kirjoittanut — ErrLuck eXtreme Gammonilla, LU-ominaisuus gnuBG:llä — varmistettuaan, että molemmilla on sama käytäntö (sama yksikkö, positiivinen = onnekas).

Käytännön seuraukset:

  • Muodot, jotka eivät kuljeta tuuria (BGF, Jellyfish .mat), eivät tuota mitään arvoa.

  • Myöskään jo tuoduilla otteluilla sitä ei ole: tuuria ei tallennettu koskaan ennen skeemaversiota 2.15.0, eikä mikään tietokannassa mahdollista sen palauttamista. Lähdetiedostot on tuotava uudelleen, jotta se saadaan.

  • Puuttuva arvo tarkoittaa tuntematonta, ei koskaan nollaa — nolla on aidosti neutraali heitto. Tuurin keskiarvot jakavat siksi vain niiden heittojen määrällä, joiden tuuri tunnetaan.

  • Ottelu, jossa kaikkien heittojen tuuri olisi tasan nolla, katsotaan tältä osin analysoimattomaksi (eXtreme Gammon kirjoittaa 0:n sekä ”neutraalille” että ”ei laskettu” -tapaukselle): sen heitot jäävät tuntemattomiksi. gnuBG:n puolella ero on nimenomainen — arvioimaton heitto kantaa merkintää LU[-inf] — ja nekin heitot jäävät tuntemattomiksi sen sijaan, että ne muutettaisiin arvoksi.

Voitot ja tappiot

blunderDB ei tallenna ottelutason voittajaa: vain kunkin pelin pisteet tallennetaan. Tulos johdetaan siis näytettäessä laskemalla pisteet yhteen istumapaikoittain:

  • N pisteen ottelu — voittaja = pelaaja, joka saavuttaa N:n. Jos kukaan ei saavuta, ottelu on kesken (katkennut loki, luovutus) eikä se laske voittoa eikä tappiota kenellekään.

  • Rahapeli (ei tavoitepistemäärää) — voittaja = se, joka otti eniten pisteitä; tasatilanteessa ei voittoa eikä tappiota. Tämä on gnuBG:n istuntotuloksen käytäntö (+1 / 0 / −1, gnubg/relational.c).

Seuraus, joka kannattaa tietää Pelaajat-välilehteä lukiessa: voitot + tappiot voi olla pienempi kuin otteluiden määrä. Erotus on keskeneräiset ottelut.

Virheet ja karkeat virheet

Päätös lasketaan virheeksi heti kun siihen liittyvä equity-virhe yltää kirjaston virhekynnykseen, ja blunderiksi heti kun se yltää sen blunderin kynnykseen. Molemmat säädetään asetusten Kirjasto-välilehdellä ja ne ovat oletuksena 0,050 ja 0,100 EMG (50 ja 100 mpt). Vertailu on sisältävä: tasan 0,100:n virhe on blunder oletuskynnyksellä kaikilla näytöillä (jakauma kuutiotoiminnoittain, ottelun tiedot, pelaajataulukko), ja sama pari palvelee tilarivin laskuria sekä tuonnin jälkeen tarjottua luetteloa.

Nämä kynnykset ovat kunkin kirjaston omat, ja oletusarvot ovat blunderDB:n omat: gnuBG luokittelee siirrot kolmeen portaaseen (0.03 kyseenalainen, 0.06 huono, 0.12 erittäin huono — gnubg/gnubg.c:281–286) yhden ainoan luokan sijaan, ja eXtreme Gammon vetää omansa arvoihin 0,020 ja 0,080. Molemmat tarjotaan esiasetuksina.

PR:n nimittäjässä lasketut päätökset

blunderDB noudattaa samoja poissulkemissääntöjä kuin XG ja gnuBG.

Nappulasiirrot — lasketut päätökset

Vain pakottamattomat siirrot lasketaan:

  • Siirto on pakotettu, jos nopat tarjoavat vain yhden laillisen siirron (cMoves == 1 tiedostossa gnubg/analysis.c:458).

  • Pakotetuilla siirroilla on määritelmän mukaan nollavirhe: pelaajalla ei ollut valinnanvaraa. Niiden sisällyttäminen nimittäjään laskisi PR-arvoa keinotekoisesti.

Tuplauskuution päätökset — lasketut päätökset

Vain läheiset kuutiopäätökset lasketaan:

  • Kuutiopäätös on läheinen, jos se sijaitsee equity-ikkunassa [-0.16, +0.16] tuplauspisteen ympärillä (predikaatti isCloseCubedecision tiedostossa gnubg/eval.c:5088–5100).

  • Triviaali ”No Double” (hyvin negatiivinen tai hyvin positiivinen equity) ei ole aito strateginen päätös; sen sisällyttäminen kasvattaisi nimittäjää ja laskisi PR-arvoa.

Suodattimen yhteenveto

Päätöksen tyyppi

Sisältyy lukuun \(N_\text{compté}\) (PR)

Pakottamaton siirto

Kyllä

Pakotettu siirto

Ei

Läheinen kuutio

Kyllä

Triviaali No Double

Ei

Take / Pass

Aina (nämä ovat vastauksia tuplaukseen)

Vastaavuus blunderDB ↔ XG ↔ gnuBG

Tunnusluvut vastaavat toisiaan alla olevissa rajoissa. Kyse on testipaketin varmistamista rajoista, ei keskimääräisistä eroista: testi vertaa ottelu ottelulta blunderDB:n lukuja niihin, jotka on kirjattu repositorion vertailuotteluille, ja epäonnistuu heti, kun yksikin ero ylittää rajan. XG-vertailuarvot koskevat kahta ottelua — toista kokonaisuudessaan (317 laskettua päätöstä, 156 ja 161 pelaajaa kohti), toisesta vain sen PR:ää, jonka raja on nostettu 0,15:een yhden sellaisen siirron vuoksi, jolle ei löytynyt vastinetta; gnuBG-vertailuarvot koskevat kahta muuta ottelua. Sitä eXtreme Gammonin versiota, joka nämä luvut tuotti, ei ole kirjattu muistiin.

Vertailu XG ↔ blunderDB (sama analyysimoottori)

Mittari

Suurin ero

Päätöksiä yhteensä

≤ 5

Pakottamattomat siirrot

≤ 7

PR

≤ 0.10

MWC-tappio

≤ 1.0 pp

Kokonaisequity (EMG)

≤ 0.05

Vertailu gnuBG ↔ blunderDB (SGF-tuonti — eri moottorit)

Mittari

Suurin ero

Pääsyy

PR (nappulat)

≤ 0.20

equity-erot eri moottorien välillä

MWC-tappio

≤ 3.5 pp

puutteelliset läheisten kuutioiden tiedot SGF:ssä

Snowie ER

≤ 0.50

pakotetut siirrot ilman analyysiä (SGF)

Muista

SGF-tiedostot (gnuBG) eivät sisällä vaihtoehtoja pakotetuille siirroille, mikä tarkoittaa, ettei blunderDB pysty tunnistamaan kaikkia pakotettuja siirtoja SGF:ää tuotaessa. Tämä aiheuttaa rakenteellisen eron Snowie ER:ssä (hieman erilainen nimittäjä).

Omien lukujen tarkistaminen

Jos PR- tai MWC-arvosi poikkeavat XG:n luvuista, tarkista seuraavat seikat:

  1. Täydelliset analyysit — PR voidaan laskea vain asemille, joilla on analyysi. Ilman analyysiä olevat asemat lasketaan nollavirheinä, mutta ne eivät sisälly lukuun \(N_\text{compté}\).

  2. XG-versio — XG saattaa muuttaa laskentaansa versioiden välillä. blunderDB on yhdenmukaistettu viimeaikaisissa versioissa havaitun käyttäytymisen kanssa.

  3. Tuontimuoto — gnuBG:n SGF-tiedostot tuottavat suurempia eroja kuutiomittareissa (katso yllä oleva taulukko), koska tiedosto ei sisällä täydellisiä analyysejä kaikille kuutiopäätöksille.

  4. Tietokannan migraatio — blunderDB:n päivityksen jälkeen olemassa olevat tietokannat migratoidaan automaattisesti. Tee varmuuskopio ennen tietokannan avaamista uudella versiolla.

gnuBG-viite

Kaavat on todennettu seuraavista lähdetiedostoista (gnuBG-arkisto):

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

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

  • gnubg/analysis.c:458–462 — Nappulasiirtojen kertymä, pakotettujen siirtojen poissulkeminen (cMoves > 1).

  • gnubg/analysis.c:1430–1474 — Päätöskohtainen EMG → MWC -muunnos.

  • gnubg/analysis.c:1449–1464 — MWC-tappion kertymä (eq2mwc).

  • gnubg/eval.c:5088–5100 — isCloseCubedecision-predikaatti (kynnys 0.16).