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

このページでは、blunderDB が PR**(Performance Rate)、**Snowie Error RateMWC 損失をどのように計算し、これらの指標が eXtreme Gammon (XG) および gnuBG(オープンリファレンス)とどのように整合しているかを説明します。

13.1. 正式な定義

13.1.1. PR (Performance Rate)

PR(gnuBG では「error rate per decision」とも呼ばれる)は、カウントされた決定ごとのエクイティポイントの千分の一(ミリポイント、mpt)単位の平均エラーを測定します。

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

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

  • 係数 500 はエクイティをミリポイントに変換します(1 ポイント = 1000 mpt ですが、XG/gnuBG の慣例により倍率は ×500 です — gnubg/formatgs.c:399–409 参照)。

13.1.2. 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 の約半分です。分母には両プレイヤーの手が含まれるのに対し、PR はそのプレイヤーの決定のみを使用するためです。

13.1.3. 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

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

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

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

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

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

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

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

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

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

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

13.2.3. フィルターの概要

決定タイプ

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

強制されていない手

はい

強制手

いいえ

接戦キューブ

はい

自明な No Double

いいえ

Take / Pass

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

13.3. blunderDB ↔ XG ↔ gnuBG の対応

指標は以下の範囲内で整合しています(3 つの参照マッチで測定):

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

指標

典型的な差

総決定数

≤ 5

強制されていない手

≤ 7

PR

≤ 0.10

MWC 損失

≤ 1.0 pp

総エクイティ (EMG)

≤ 0.05

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

指標

典型的な差 | 主な原因

PR (チェッカー)

≤ 0.20

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

MWC 損失

≤ 3.5 pp

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

Snowie ER

≤ 0.50

解析なしの強制手(SGF)

注釈

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

13.4. 自分の数値を検証する

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

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

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

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

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

13.5. 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)。