付録:統計モデル — 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 を掛けたものです。
分子は、スコープ内のすべての決定における 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 と 同じ分子 を使用しますが、分母は強制手を含む両プレイヤーの総手数です(すべての決定、フィルターなし):
参照: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 に変換されます:
参照:gnubg/analysis.c:1449–1464。
運(luck)
ある1ロールの運とは、実際に出た目がもたらしたものと、平均的にもたらされるものとの差です。
この和は、その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 の数値と乖離する場合は、以下の点を確認してください:
完全な解析 — PR は解析のあるポジションのみで計算できます。解析のないポジションはエラーゼロとしてカウントされますが、\(N_\text{counted}\) には含まれません。
XG バージョン — XG はバージョン間で計算を変更する場合があります。blunderDB は最近のバージョンで観察された動作に合わせています。
インポート形式 — gnuBG の SGF ファイルは、ファイルにすべてのキューブの決定の完全な解析が含まれていないため、キューブ指標でより大きな差が生じます(上記の表を参照)。
データベースの移行 — 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)。