付録:統計モデル — XG / gnuBG / blunderDB の整合

このページでは、blunderDB が表示する指標——PR(Performance Rating)、Snowie Error Rate、MWC の損失、運、勝敗——をどのように計算し、それらが eXtreme Gammon(XG)および gnuBG(公開された基準)とどう一致するかを説明します。

正式な定義

PR(Performance Rating)

PR(gnuBG では「error rate per decision」とも呼ばれます)は、eXtreme Gammon と gnuBG の尺度で、カウントされる決定 1 回あたりの平均的なエラーのコストを測ります。すなわち、平均エクイティエラーに 500 を掛けたものです。

\[\mathrm{PR} = \frac{\sum_i |\mathrm{error}_i|}{\mathrm{N_{counted}}} \times 500\]
  • 分子は、スコープ内のすべての決定における EMG エラー(キューブフルエクイティ)の絶対和です。

  • 分母 \(N_\text{counted}\) は カウントされた決定 の数です(以下を参照)。

  • 係数 500 は XG と gnuBG の慣例です(gnubg/formatgs.c:399–409 を参照)。これはミリポイントへの換算ではありません。平均エクイティエラー 0.010——すなわち 10 ミリポイント(mpt)——であれば PR は 5.0 になります。一方、個々のポジションのエラーはミリポイント、つまりエクイティの 1000 分の 1 の単位で読みます。以下のブランダーのしきい値、検索フィルター e> と E>、Stats パネルの大きさのヒストグラムがそれです。

Snowie Error Rate

Snowie ER は PR と 同じ分子 を使用しますが、分母は強制手を含む両プレイヤーの総手数です(すべての決定、フィルターなし):

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

参照:gnubg/formatgs.c:415–424。

Snowie ER は、分母が強制/自明な決定フィルターに依存しないため、ツール間でより安定しています。XG ↔ gnuBG ↔ blunderDB 間のクロスチェック指標として機能します。

重要

「プレイヤー」フィルタは分子にしか効きません。プレイヤーを選ぶと、合計されるエラーはその人自身の決定に限られますが、分母はフィルタが残した対戦における両者のチェッカープレイ数のままです。これが Snowie ER と PR の違いであり、次の性質の理由でもあります。2人の対戦だけを収めたデータベースでは、2人の Snowie ER の和は、フィルタなしの Snowie ER にちょうど一致します。

注釈

プレイヤーの Snowie ER は通常 PR の約半分です。分母には両プレイヤーの手が含まれるのに対し、PR はそのプレイヤーの決定のみを使用するためです。

MWC 損失(Match Winning Chance)

MWC 損失は、プレイヤーのエラーの累積効果を、マッチに勝つ確率のパーセンテージポイントで表します。各決定について、EMG エラーは現在のスコアにおける MET(Match Equity Table)を使用して MWC に変換されます:

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

参照:gnubg/analysis.c:1449–1464。

運(luck)

ある1ロールの運とは、実際に出た目がもたらしたものと、平均的にもたらされるものとの差です。

\[\mathrm{luck} = \mathrm{eq}(\text{出た目での最善手}) - \frac{1}{36}\sum_{d} \mathrm{eq}(\text{目 } d \text{ での最善手})\]

この和は、その1ロールの36通りの出目にわたります(ゲーム最初の手だけはゾロ目になりえないため30通り)。値が正なら有利な出目だったことを意味します。参照:gnubg/analysis.c:199–269(LuckNormal / LuckFirst、0 ply のキューブフル評価)。

重要

blunderDB は運を決して計算し直しません:内蔵の評価器はそのためのものではありません。対戦を分析したツールが書き込んだ値をそのまま用います——eXtreme Gammon なら ErrLuck、gnuBG なら LU プロパティです。両者が同じ規約(同じ単位、正なら幸運)を用いていることは確認済みです。

実際上の帰結:

  • 運を運ばない形式(BGF、Jellyfish の .mat)からは、値はまったく得られません。

  • すでにインポート済みの対戦にもありません。スキーマのバージョン 2.15.0 より前は運が保存されておらず、データベース内のどこからも復元できないからです。取得するには元ファイルを再インポートする必要があります。

  • 値がないことは不明を意味し、ゼロを意味しません。ゼロは本当に中立だった出目です。したがって運の平均は、運が判明している出目の数だけで割ります。

  • すべての出目の運がちょうどゼロになる対戦は、この点については未分析とみなします(eXtreme Gammon は「中立」にも「未計算」にも 0 を書き込むためです)。その対戦の出目は不明のままです。gnuBG では区別が明示的で、評価されていない出目には LU[-inf] が付きます。これらの出目も、値に変換せず不明のままにします。

勝敗

blunderDB はマッチ単位の勝者を保存しません。保存するのは各ゲームの得点だけです。したがって結果は表示時に、席ごとの得点を積み上げて導出されます。

  • N ポイントマッチ— 勝者は N に到達したプレイヤーです。誰も到達しなければ、その対戦は未了(記録の途切れ、投了)であり、誰の勝ちにも負けにも数えません。

  • マネーゲーム(目標点なし) — 勝者は得点の多い側です。同点なら勝ちでも負けでもありません。これは gnuBG のセッション結果の規約(+1 / 0 / −1、gnubg/relational.c)に従っています。

プレイヤータブを読むときに知っておくべき帰結:勝ち数 + 負け数は対戦数より少なくなりうるということです。その差が未了の対戦です。

エラーとブランダー

ある決定は、対応するエクイティエラーがライブラリのエラー閾値に達した時点でエラーとして数えられ、そのブランダー閾値に達した時点でブランダーとして数えられます。どちらも設定のライブラリタブで調整し、既定では0.050と0.100 EMG(50 と 100 ミリポイント)です。比較はその値を含みます。ちょうど 0.100 のエラーは既定の閾値ではブランダーであり、これはすべての画面(キューブの決定別の内訳、マッチの詳細、プレイヤー表)で同じです。また、同じ組がステータスバーのカウンターと、インポート後に提示される一覧にも使われます。

これらの閾値はライブラリごとに固有であり、既定値は blunderDB 独自のものです。gnuBG は単一のカテゴリではなく、3段階(0.03 疑問、0.06 悪手、0.12 大悪手——gnubg/gnubg.c:281–286)で手を分類し、eXtreme Gammon は自分の線を 0.020 と 0.080 に引きます。どちらもプリセットとして用意されています。

PR の分母にカウントされる決定

blunderDB は XG および gnuBG と同じ除外ルールに従います。

チェッカープレイ — カウントされる決定

強制されていない手 のみがカウントされます:

  • 手が 強制 であるのは、サイコロが 1 つの合法的なプレイしか提供しない場合です(gnubg/analysis.c:458 の cMoves == 1)。

  • 強制手は定義上エラーがゼロです:プレイヤーに選択肢がありませんでした。それらを分母に含めると PR が人為的に低下します。

キューブの決定 — カウントされる決定

接戦のキューブの決定 のみがカウントされます:

  • キューブの決定が 接戦 であるのは、ダブリングポイントの周囲のエクイティウィンドウ [-0.16, +0.16] 内にある場合です(gnubg/eval.c:5088–5100 の述語 isCloseCubedecision)。

  • 自明な「No Double」(非常に負または非常に正のエクイティ)は真の戦略的決定ではありません。それを含めると分母が膨らみ PR が低下します。

フィルターの概要

決定タイプ

\(N_\text{counted}\) (PR) に含まれる

強制されていない手

はい

強制手

いいえ

接戦キューブ

はい

自明な No Double

いいえ

Take / Pass

常に(これらはダブルへの応答です)

blunderDB ↔ XG ↔ gnuBG の対応

各指標は以下の範囲内で一致しています。これらはテストスイートによって検証された上限であり、平均的な差ではありません。テストは、リポジトリの基準マッチについて記録された数値と blunderDB の数値をマッチごとに比較し、ひとつでも差が上限を超えれば失敗します。XG の基準は二つのマッチを対象とし、一方は完全なもの(カウントされる決定 317 回、プレイヤーごとに 156 回と 161 回)、もう一方は PR だけに絞ったもので、対応づかない手が一つあるため上限は 0.15 に引き上げられています。gnuBG の基準は別の二つのマッチを対象とします。これらの数値を出した eXtreme Gammon のバージョンは記録されていません。

XG ↔ blunderDB の比較(同じ解析エンジン)

指標

最大差

総決定数

≤ 5

強制されていない手

≤ 7

PR

≤ 0.10

MWC 損失

≤ 1.0 pp

総エクイティ (EMG)

≤ 0.05

gnuBG ↔ blunderDB の比較(SGF インポート — 異なるエンジン)

指標

最大差

主な原因

PR (チェッカー)

≤ 0.20

クロスエンジンのエクイティ差

MWC 損失

≤ 3.5 pp

SGF の不完全な接戦キューブデータ

Snowie ER

≤ 0.50

解析なしの強制手(SGF)

注釈

SGF ファイル(gnuBG)は強制手の代替手を含まないため、blunderDB は SGF インポート時にすべての強制手を検出できません。これにより Snowie ER に構造的な差が生じます(分母がわずかに異なる)。

自分の数値を検証する

PR または MWC の値が XG の数値と乖離する場合は、以下の点を確認してください:

  1. 完全な解析 — PR は解析のあるポジションのみで計算できます。解析のないポジションはエラーゼロとしてカウントされますが、\(N_\text{counted}\) には含まれません。

  2. XG バージョン — XG はバージョン間で計算を変更する場合があります。blunderDB は最近のバージョンで観察された動作に合わせています。

  3. インポート形式 — gnuBG の SGF ファイルは、ファイルにすべてのキューブの決定の完全な解析が含まれていないため、キューブ指標でより大きな差が生じます(上記の表を参照)。

  4. データベースの移行 — blunderDB の更新後、既存のデータベースは自動的に移行されます。新しいバージョンでデータベースを開く前にバックアップを作成してください。

gnuBG 参照

数式は、以下のソースファイル(gnuBG リポジトリ)で検証されています:

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

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

  • gnubg/analysis.c:458–462 — チェッカー累積、強制手の除外(cMoves > 1)。

  • gnubg/analysis.c:1430–1474 — 決定ごとの EMG → MWC 変換。

  • gnubg/analysis.c:1449–1464 — MWC 損失の累積(eq2mwc)。

  • gnubg/eval.c:5088–5100 — 述語 isCloseCubedecision(閾値 0.16)。