Most differences in results are within chance.They are no grounds for criticising players.

検証 計画と記録

検証ページの各検証の、合格ラインを結果より前に決めた記録です。手を加えずにそのまま載せています。各章の見出しにある「実行前に記入」「結果を見た後」の区別で、どの基準が事前に決めたもので、どれが後から変えたものかが分かります。作業用の文書なので、専門的な書き方のままです。

検証計画書 (Japanese)

1. 目的

サイトの数字は「統計的にこう計算したから正しいはず」という前提で出している。この計画は、その前提をデータと模擬実験で客観的に確かめるためのもの。確かめたいのは次の4点。

# 確かめること対応するサイトの主張
V1 実力推定とその90%区間は、正解が分かっている模擬データで正しく働くか「実力推定」「90%の範囲」「信頼度」
V2 実力推定は、実際に先の成績をよく予測するか「推定はリーグ平均に大きく引き戻すのが正しい」
V3 「運」の指標は本当に運だけを測っているか(実力が混ざっていないか)「運の指標」「運を除いたポイント」
V4 局ごとのトップ確率は、言っている通りの頻度で当たっているか試合ページのトップ確率・WPA

結果の扱い: 合否の基準は、結果を見る前にこの文書で決めておく(後から基準を動かさない)。不合格なら、その結果もそのまま計算方法ページに載せ、直せるものは直す。

公開の制約(実装計画書 2.2 と同じ): 使うのは牌譜と、牌譜から計算した表だけ。Mortal は使わない。乱数の種は固定し、同じデータからは同じ結果が出るようにする。

2. 参考文献と採用する部分

論文を読み、それぞれから何を採り、何を採らないかを決めた。

2.1 Talts, Betancourt, Simpson, Vehtari, Gelman (2018) “Validating Bayesian Inference Algorithms with Simulation-Based Calibration” (arXiv:1804.06788)

2.2 Brown (2008) “In-season prediction of batting averages: A field test of empirical Bayes and Bayes methodologies” (Annals of Applied Statistics 2(1))

2.3 Dimitriadis, Gneiting, Jordan (2021) “Stable reliability diagrams for probabilistic classifiers” (PNAS 118(8)。arXiv 版の題は “Evaluating probabilistic classifiers: Reliability diagrams and score decompositions revisited”、arXiv:2008.03033)

2.4 Brill, Yurko, Wyner (2025) “Exploring the difficulty of estimating win probability: a simulation study” (arXiv:2406.16171)

2.5 Burch, Schmid, Moravčík, Bowling (2018) “AIVAT: A New Variance Reduction Technique for Agent Evaluation in Imperfect Information Games” (AAAI, arXiv:1612.06915)

2.6 Phipson, Smyth (2010) “Permutation P-values Should Never Be Zero” (Stat. Appl. Genet. Mol. Biol. 9(1), arXiv:1603.05766)

2.7 補足(要旨のみ参照)

3. 検証の内容

V1 模擬データでの推定の再現(SBC 型)

問い: 実力のばらつきが分かっている世界で、k の推定、縮小推定、90% 区間は正しく働くか。

生成モデル(実際の日程と点数分布をそのまま使う):

  1. 2018-19〜2025-26 のレギュラーシーズンの実際の対戦表(誰と誰が同卓したか)を使う。
  2. 各選手・シーズンに実力 θ ~ N(0, s²) を割り当てる。
  3. 各試合の点数は、実際の試合の最終点数ベクトル(4人分、順位順)を1つ無作為に選ぶ。4人のうち誰が何位になるかは、強さ exp(θ) の Plackett–Luce モデル(強い人ほど上位を引きやすい抽選)で決める。これで「4人の点数の合計は0」「1位は1人」という実際の制約が保たれる。
  4. 正解: 選手・シーズンごとの期待着順・期待ポイント(24通りの順位の確率から正確に計算)の、その選手の試合での平均。
  5. s は、正解の平均着順の標準偏差が τ = 0、0.5τ̂、τ̂、2τ̂(τ̂ = 実データの推定値 0.050)になるよう事前に調整する。

推定: 生成したデータに、実際のmetrics.pyと同じ計算(10試合以上の選手・シーズンで k を推定し、縮小推定と 90% 区間を出す)を適用する。対象の指標は平均着順と1半荘あたりポイント。

繰り返し: τ ごとに N = 1000 回。k のブートストラップ区間は計算が重いため、τ ごとに 200 回で見る(各回 300 回の再標本)。

報告する値と合格基準:

項目基準
90% 区間の被覆率(全選手・全回の平均)、τ = τ̂ 0.87〜0.93
同じく τ = 0.5τ̂、2τ̂ 0.85〜0.95(参考。基準外なら注記する)
PIT ヒストグラム(20ビン、1回1人) 99% 帯の外に出るビンが 2 個以下(偶然でも平均 0.2 個は出る)
真の分散の推定の偏り(中央値の相対誤差)、τ = τ̂ ±15% 以内
k の 90% ブートストラップ区間が真の k を含む割合、τ = τ̂ 0.80 以上
τ = 0 被覆率 0.90 以上(実力差がないのに差があると言い過ぎないこと)

真の k の定義は「1試合あたりの偶然の分散 ÷ 正解の分散」で、1試合あたりの分散は生成データから計算する。

V2 シーズン前半 → 後半の予測(Brown 型)

データ: 2018-19〜2025-26 のレギュラーシーズン。各選手・シーズンの試合を日付順に並べて前後半に分け、両方とも 10 試合以上ある選手・シーズンを使う。

予測法(後半の1試合あたりの平均を予測する):

評価: TSE^ = Σ(X₂ − 予測)² − Σ σ²/n₂。σ² はそのシーズンを除いた試合単位の分散。素朴な予測の TSE^ で割った相対 TSE を報告する。区間は選手単位のブートストラップ(2000 回、全シーズンまとめて再標本)。

合格基準:

注: 実力差が小さいので、全体平均と縮小はほぼ同じ成績になると予想する。予想どおりなら、それ自体が「推定を大きく平均に引き戻す」ことの正しさを示している。

V3 運の指標の検証(並べ替え検定)

V3a: 運の指標に選手差が持続していないか(AIVAT の前提の検証)

V3b: 運の補正は偶然以上に分散を減らしているか

V4 トップ確率の較正(CORP +試合単位の不確かさ)

データ: kyoku_wp.parquet の各局開始時点のトップ確率(一つ抜きのシーズン交差検証で作ったもの)と、実際の最終順位。

手順:

  1. 全データで PAV 曲線を引き、Brier スコアを MCB / DSC / UNC に分解する。
  2. 試合単位のブートストラップ(1000 回)で、曲線の 90% 信頼帯と、MCB・DSC・Brier スキルスコアの 90% 区間を出す。局単位で独立に再標本した場合の区間幅と比べ、有効サンプルサイズ ≈ 局数 × (局単位の分散 / 試合単位の分散) を報告する。
  3. 較正の検定: 1試合につき1局を無作為に選んだ標本で MCB を計算する。「予測が正しい」と仮定して各局のトップを4人の確率から引き直し、MCB の帰無分布と一致帯を作る(m = 999)。p = (b + 1)/(m + 1)。合否に使うのは、種を固定した1通りの選び方の p だけとする。複数の p の中央値は正しい p 値にならないためである。選び方による揺れは、別の 20 通りの p の範囲を参考として示す。
  4. 局面別(東場、南1〜3局、オーラス)の MCB も出す。
  5. ラス確率(4着)についても同じことをする(WPA と順位確率はトップだけでなく全順位を使っているため)。

合格基準:

対象外(今回はやらない)

4. 実装

5. 推敲メモ(読み直して直した点)

6. 結果(2018-19〜2025-26)

合否は 3 章の基準どおりに判定した。基準は結果を見た後に変えていない。基準の作り方に問題があったものは「所見」に書き、次回の改訂案として分けておく。数値はdata/metrics/validation.json(サイトではresearch/validation.json)にある。

検証判定要点
V1 模擬データ一部不合格 τ = τ̂ での被覆率は着順 0.934、ポイント 0.938 で、基準(〜0.93)をわずかに超えた(広すぎる側)。PIT ヒストグラムの帯外ビンは τ ≤ τ̂ で 11〜17 個あり不合格。真の分散の偏り(着順 +0.2%、ポイント +5%)と k 区間の被覆(0.855、0.88)は合格
V2 前半 → 後半合格縮小の相対 TSE の 90% 区間の上限は 0.14(着順 0.13)で、素朴な予測より明らかに良い。全体平均との差は 0 を含む。RMSE: ポイントは素朴 16.1、縮小 12.2、全体平均 12.2。着順は 0.406、0.300、0.299
V3a 運の指標合格(陽性対照は1つ基準未達)運の6指標はすべて Holm 補正後 p > 0.05。陽性対照は副露率と立直率が p = 0.001、放銃率が p = 0.003 で、基準(0.001)に届かなかった
V3b 運の補正合格分散の減少 19.7%、p = 0.005。特徴量を並べ替えると減少は −0.01%(範囲 −0.08%〜+0.04%)
V4 較正トップの検定のみ不合格トップ p = 0.018、ラス p = 0.727。MCB/Brier はトップ 0.20%、ラス 0.23% でどちらも合格。有効サンプルサイズは 93,780 局面に対してトップ 19,355、ラス 17,992(1試合あたり約 10)

所見

7. 改訂: 90% 区間を頑健な経験ベイズ区間に変更

7.1 試したこと

6章の所見(V1 で区間が τ によって広すぎたり狭すぎたりする)を受けて、区間の作り方を4通り比べた。条件は V1 と同じ模擬データで、τ = 0〜3τ̂ の各条件を 200〜300 回ずつ繰り返した。

方法 τ̂ での被覆率 τ = 0.5〜3τ̂ での最小 τ̂ での半幅(着順)
A 従来(縮小推定 ± 1.645 × 事後 SD、k = ∞ のときは縮小なしの幅) 0.94 0.87 0.20
B A の区間の式のまま、真の分散に下限を設ける(k = ∞ をなくす) 0.76 0.76 0.08
C 頑健な経験ベイズ区間(下の方法) 0.90 0.89 0.12
参考: Laird & Louis (1987) のブートストラップ区間 0.80 0.78 —
参考: τ に一様事前分布を置いた階層ベイズ 0.90 0.85 —

C だけが、すべての τ で被覆率がほぼ 0.90 以上になった。τ̂ での幅も A より狭い。A の平均の幅が広いのは、k = ∞ になった回の非常に広い区間が平均を押し上げているためで、k が有限のときは A の方が狭い。

7.2 採用した方法

Armstrong, Kolesár, Plagborg-Møller (2022) “Robust Empirical Bayes Confidence Intervals”(Econometrica 90(6), arXiv:2004.03448)。

7.3 V1 の基準の見直し(結果を見た後の変更)

以下の変更は、結果を見た後で行ったものである。 6章の判定(従来の区間で一部不合格)は記録として残す。

7.4 結果(1000 回ずつ)

τ 着順新着順従来ポイント新ポイント従来
0 1.000 1.000 1.000 1.000
0.5τ̂ 0.992 0.980 0.995 0.985
τ̂ 0.913 0.938 0.920 0.935
1.5τ̂ 0.902 0.878 0.902 0.876
2τ̂ 0.929 0.869 0.918 0.856
3τ̂ 0.940 0.888 0.942 0.883

見直した基準では V1 はすべて合格した。

実データへの影響:

8. 追加: V3c 運の指標の検定の検出力(実行前に記入)

外部のレビューで「V3a で差が見つからなかったことは、差がないことの証明ではない。どの程度の実力の混入なら見つけられるのかを示すべきだ」と指摘された。陽性対照(放銃率など)で検定が差を見つけられることは示しているが、運の指標そのものについて、どれだけの混入なら見つかるかは示していない。そこで、運の指標にわざと実力を混ぜた架空データで、V3a の検定の検出力を測る。

8.1 実行して分かったことと、変更(結果を見た後)

8.2 結果(2018-19〜2025-26、m = 1999、200 回)

運の指標 r = 0.1 r = 0.2(判定) r = 0.3 運だけの世界に混ぜた場合の r = 0.2(補足)
配牌の良さ(向聴数) 0.73 0.97 合格 1.00 0.64
配牌のドラ・赤 0.00 0.10 不合格 0.90 0.56
ツモの良さ 0.00 0.42 不合格 0.99 0.56
裏ドラ運 0.01 0.67 不合格 0.99 0.51
一発率 0.00 0.67 不合格 0.98 0.48
運による獲得ポイント 0.00 0.39 不合格 0.97 0.54

9. 追加: V3d 通算での持続性の検定と、V3e 混入量の上限(実行前に記入)

V3c で、V3a の検定は放銃率並み(1シーズンの値の2割が実力)の混入を見逃しうると分かった。V3a は選手・シーズンを別々の単位として扱い、「実力なら毎シーズン同じ向きに出る」という手がかりを使っていない。そこで次の2つを加える。

V3d: 選手のずれがシーズンをまたいで続くか

V3e: 混入量の上限

9.1 実行して見つかったこと: 親の配牌の記録の揺れ

10. 追加: V3f 試合単位のスコア検定(実行前に記入)

V3d は「違うシーズンどうし」の組しか使わず、選手・シーズンを同じ重みで扱っていた。そこで、分散成分のスコア検定(Lin 1997, “Variance component testing in generalised linear models with random effects”, Biometrika 84(2))の形に直す。選手の変量効果が0かどうかのスコア検定は、正規でも二項(一発・裏ドラの有無など)でも、単位の残差 r(値 − そのシーズンの平均)を使って次の形になる。

10.1 結果(配牌の修正後のデータ、m = 1999、200 回)

11. 検証ページの見せ方の変更(結果を見た後)

12. 追加: 過去だけでの予測(V2b)、局面別のトップ確率(V4b・V4c)、運の値の条件別の偏り(V3g)(実行前に記入)

次の3点を足す。どれも既存のデータで、結果を見る前に基準をここに書く。

12.1 V2b 過去のシーズンだけで設定を決める

V2 は「対象シーズン以外」で k とリーグ平均を決めるので、過去のシーズンの予測に、その後のシーズンの情報が入る。V2b では、対象シーズンより前の完了シーズンだけを使う(前に2シーズン以上あるシーズンが対象)。

12.2 V4b トップ確率・ラス確率を局面別に

全体の較正が合っていても、局面ごとのずれが打ち消し合っている可能性がある。

12.3 V4c 簡単な予測式との比べ

「補正して直せるずれが小さい」ことは、「これ以上良い予測がない」ことを意味しない。点差などの少ない情報だけの予測式と比べ、今のシミュレーションに価値があるかを見る。

12.4 V3g 運の値が、条件によって偏っていないか

運の値は、選手全体の平均では0になるように作ってある。しかし、特定の条件(巡目や副露の有無など)で平均からずれ、その条件に入りやすい打ち方の選手の運が、打ち方の分だけずれる可能性がある。

12.5 結果(2018-19〜2025-26)

13. 探索: ボット対戦で運の補正が実力差を残すか(実行前に記入)

運の補正(luck.py)が、ばらつきを減らしながら実力差を削っていないかを、実力を固定した打ち手どうしの対戦で直接確かめる。AIVAT(Burch ほか 2018)が示す「期待値を変えずに分散を減らす」性質の確認にあたる。結果は内部の記録にとどめ、サイトには載せない(載せる場合は改めて決める)。その後、この計画書とともに公開することにした。→ その後、この計画書とともに公開することにした。

13.1 結果(1,000試合、tools/selfplay)

14. 指標の定義を雀魂牌譜屋に合わせた変更(検証の手順は変えていない)

同じ名前でWeb麻雀(雀魂牌譜屋・天鳳)と定義が違う指標があったので、牌譜屋の定義に合わせた。

14.1 やり直した結果

15. 監査: 運の指標の検定の点検(結果を見た後の確認)

運の指標の検定について、論理を点検し、改善案のうち計算の軽いものから確かめた。どれも結果を見た後の確認で、事前登録ではない。

16. 運補正の改訂と検証方法の再設計(実行前に記入)

15章の監査を受けて、次の実験を事前登録する。

16.1 目的と、今回の事前登録の位置付け

本検証の目的は、運補正による分散減少を維持しつつ、選手の打ち方に由来するポイント差を取り除いてしまう危険を減らすことである。

15章の監査結果は探索的な結果として扱う。既存のMリーグ牌譜と既存ボット対戦は、改訂方針の選択に使用済みであり、今回の事前登録によって未使用データになるわけではない。

確認的な評価には、新しい乱数で生成した模擬データとボット対戦を使う。既存牌譜での比較は、手順を固定した再解析として報告する。

次の3点は区別する。

  1. 補正量に選手ごとの系統的な差が検出されるか。
  2. その差の上限が、実用上許容する範囲に収まるか。
  3. 補正によって成績のばらつきが減るか。

非有意であることだけを理由に「偏りがない」「合格」とは判定しない。

16.2 改訂内容と比較する4つの版

次の4版を作る。主要な改訂候補はDに固定し、結果を見て最もよい版を選ばない。

版ツモ確率一発による補正役割
A 現行方式あり現行版
B 他家の現手牌も除くありツモ確率変更の診断
C 現行方式なし一発除外の診断
D 他家の現手牌も除くなし主要な改訂候補

4版で対象試合、除外条件、回帰モデルの形、学習・評価の分割をそろえる。特徴量の変更に伴う係数は、それぞれ学習データだけで推定し直す。

一発率は成績・打ち方に関係する記述指標として残すが、Dでは運補正に使用しない。

待ち枚数などから一発の条件付き期待値を推定する方式は、今回の候補には含めない。相手の打牌や鳴きの影響を十分にモデル化できるかという別の問題が生じるためである。

15章の結果は、一発除外によって偏りが小さくなる可能性を示すが、混入の消失を証明していない。一発除外後の区間 −1.93〜+0.64pt/半荘も、後述する±1ptの同等性基準には達していない。

16.3 先に行うツモ確率と補正式の実装監査

他家の手牌を使う目的は、選手の判断の優劣を評価することではなく、実際のツモに対応する偶然の確率を測定することである。

各ツモの直前状態を牌譜から再現し、その時点の全員の現手牌、河、副露、既に公開された表示牌を重複なく数える。未来のツモ、未来の打牌、後で公開される裏表示牌などは使わない。

未公開の王牌は、内容を知らないまま残余牌の集合に含める。通常のツモ位置と未公開の王牌位置の交換可能性が成り立つ条件で確率を計算する。「実際の王牌の内容」を事後に取り出して除く処理は行わない。

以下を個別に確認する。

小さな人工的な牌集合では、可能な抽選を全列挙し、計算した進展確率と一致することを確かめる。浮動小数点誤差を除く不一致は0件を要求する。

実牌譜で不正な状態が見つかった場合は、原因と件数を記録する。除外はデータ不備の規則に従い、選手や結果に応じて判断しない。稀な槓の状態を確かめられない場合は、その範囲を未検証と明記する。

補正式についても、次を監査する。

同じツモ由来の効果を、一発とツモの双方で重複して補正しない。

16.4 主要な評価量と許容幅

半荘 g の選手 i について、実際のポイントを Y、運による補正量を L とし、補正後を Y − L とする。

主要指標はDの「運による獲得ポイント」とする。他の指標は原因を調べる診断として残す。

主要な検定対象は、補正量に持続する選手成分があるかである。シーズン限定の成分や相手依存の成分は別に評価し、持続成分の検定で検出されないことを、それらの不存在とは解釈しない。

混入割合 r は相関係数ではなく、基準30半荘の平均の分散に占める選手成分の割合とする。既存の r と定義が異なる場合は、旧値をそのまま比較せず、同じ定義で再計算する。

ポイント単位の実用基準は次とする。

評価対象許容幅
ボット2方策間の平均補正量の差 ±1pt/半荘
実牌譜のモデルで推定する持続的な選手別補正偏りの標準偏差 1pt/半荘未満

1pt/半荘は、30半荘なら30ptに相当するため、これを超える系統的な影響を無視しないという運用上の基準である。Mリーグ選手間の推定実力差や、現在の広い区間に合わせて許容幅を広げない。

後者は標準偏差の基準であり、全選手の偏りが±1pt以内という意味ではない。また、モデルで識別できる持続成分に限った基準である。

16.5 実験1:改訂版の評価

実牌譜での比較

既存V2と同じ過去から未来への分割を使用する。各評価期間の補正式、縮小の設定、比較対象を評価期間の前のデータだけで決める。

次を4版すべてについて報告する。

予測対象は4版共通の実際のポイントとする。各版が作った別々の補正後ポイントを予測対象にして比較しない。

区間の計算では半荘内の4人と全局を一緒に扱う。回帰学習まで含む不確かさを報告する場合は、再標本化の中で学習もやり直す。係数固定の条件付き区間しか計算していない場合は、その旨を明記する。

相関0.98のような高い相関は、結果の大幅な入れ替わりが少ないことを示す補助資料とし、偏りが小さいことの合格基準にはしない。

ボットでの比較

主要解析では、本番サイトで使用するDの補正式を固定してボット対戦に適用する。ボット対戦だけで係数を学習し直す解析は、補助解析として分ける。

ボット対戦で学習し直した補正が無偏でも、本番サイトの補正式が無偏とは限らないためである。

方策間の対比は、同じ対戦構成における B = E[L_A − L_B](方策A・Bの補正量の差の期待値)とする。補正が方策間の期待ポイント差をどれだけ変えるかは、この量から直接評価できる。補正前後の平均を独立標本として扱わず、同じ対局での補正量の差を使う。

偏りの合格条件は、B の90%信頼区間が完全に [−1, +1] pt/半荘に入ることとする。これは5%水準の同等性検定に相当する。

区間が許容幅をまたぐ場合は「同等性未確認」とする。0を含むことだけでは合格としない。

分散減少の合格条件は、補正後/補正前の分散比の片側95%上限が1未満であることとする。

既存13章の「実力差の±20%」は今回の主要基準に使用しない。ボットの実力差が大きいほど許容する偏りも大きくなるためである。

改訂版の採否

優先順位を次のとおり固定する。

  1. 確率計算と情報利用の正しさ。
  2. 系統的な偏りの小ささ。
  3. 分散減少。
  4. 将来成績の予測性能。

分散減少が旧版より小さいことだけを理由にDを棄却しない。15章の34.5%から31.0%への変更は、残る分散では0.655から0.690への増加であり、分散だけで必要件数が決まる近似では約5.3%の件数増に相当する。

Dは、実装監査を通過し、事前指定した主要ボット対比すべてで同等性が確認され、実牌譜でも分散減少が確認された場合、「検証した範囲で採用条件を満たした」とする。

予測性能については、D/Aの平均二乗誤差比の片側95%上限が1.02以下なら「実用上の悪化は確認されなかった」とする。これは二乗平均平方根誤差で約1%の悪化までを許容する補助基準であり、運補正の正しさの証明ではない。

偏りの区間が広い場合は、分散減少が大きくても「無偏性の確認は保留」とする。構造上の理由からDへ変更する場合も、この留保を消さない。

16.6 ボット対戦の強化

強いAIを追加することより、問題となる行動を1つずつ変えることを優先する。

優先対比調べる問題
1 同じ手組みで、リーチに降りる/押す相手の放銃行動が運補正に入るか
2 同じ手組みで、機会があれば鳴く/鳴かない一発消し、手牌からの牌の取り出し、ツモ順の変化
3 同じ基本方策で、即リーチ/条件付きダマ和了・裏ドラなどの観測機会の選択
4 同じ押し引きで、受け入れ重視/対子や打点重視他家が保持する牌の偏りとツモ確率

最初の確認対象は既存S/Wと、押し引きだけを変えた対比とする。鳴き対応を追加できた段階で、鳴きの対比を追加登録する。槓は対戦数を増やす前に、16.3の人工局面で処理を確認する。

同じ山と席の入れ替えを利用する場合は、その山を共有する一式を再標本化の単位とする。席替えした対局を独立した対局数として数えない。

対戦数は、既存データまたは採点しない予備実験で推定した対比の標準偏差から、±1ptの同等性を、真の偏り0のとき80%以上で確認できる件数として事前に固定する。独立な対比の標準偏差を s とした正規近似では、N ≈ (2.93 s / 1)² を目安とする。既存の区間幅からは、現在の対比で数千半荘規模が必要になる可能性がある。

計算上限によりこの件数に達しない場合は、許容幅を広げず、区間を示して同等性未確認とする。途中の有意・非有意に応じた無計画な追加は行わない。

16.7 実験2:V3eの上限の作り直し

主要な修正対象は「運による獲得ポイント」の上限とする。残る指標は順次検証し、未検証のものに新しい保証を付けない。

採用候補の第一順位は、候補となる分散成分を固定したモデルからのパラメトリック・ブートストラップを用いて、片側検定を反転する方法とする。

候補の分散値ごとに、その制約下で他のパラメータを推定する。推定した分散をゼロで切り詰め、その推定量を通常の百分位法で再標本化するだけの方法は主候補にしない。

BCaも比較候補にはできるが、分散ゼロという境界や、同卓者間の依存を自動的に解決する方法とは扱わない。スコア検定を反転する分散成分の区間法も、仮定が適合する場合の候補とする。

二値・件数の指標は、その発生機会数と確率を保った生成モデルを使用する。独立で等分散な正規乱数に置き換えて得た被覆率だけで合格としない。

模擬データは、実際の選手数、日程、出場数、半荘内4人の依存をできる限り維持する。次を含む。

r = 0 だけでは非負の上限が自動的に真値を含むため、微小な正の値と許容幅付近を必ず検証する。

モデル調整用と最終確認用の乱数を分離する。上限の校正水準、候補グリッド、補間方法、収束しない場合の処理を調整用模擬で固定してから確認に進む。

上限はまず保守的な内部水準97.5%を候補とし、確認済みの範囲で少なくとも95%の被覆を目指す。計算不能の場合にその反復を除外して被覆率を上げることはせず、計算失敗率とともに報告する。上限を出せない場合は「上限未確定」とする。

16.8 実験3:主結果を1本にした検定

Dの運による獲得ポイントについて、持続する選手成分を調べるV3f型の検定を主要検定とする。名目水準は5%とする。

6指標から最も小さいp値を選ぶことはしない。他の指標や他の混入形に対する検定は診断・副次解析として明示し、同じ副次解析群の検出主張にはHolm補正を用いる。

検出力は、最終的に採用する帰無分布の校正を含む手順全体について測定する。校正前の検出力だけを採用値としない。

有限回の模擬実験による誤差を区間で示し、次を確認基準とする。

項目設計目標最終確認基準
混入0での棄却率名目5% 棄却率の片側95%上限が6%以下
上限区間の被覆率少なくとも95% 被覆率の片側95%下限が95%以上
持続する r = 0.10 の検出力 80%以上検出力の片側95%下限が80%以上
持続する r = 0.20 の検出力 95%以上検出力の片側95%下限が95%以上

割合の区間には二項分布に基づく方法を使用する。

棄却率の基準は、有限の模擬回数で6%を超える膨張を排除する運用基準であり、厳密に5%以下を証明するものではない。

被覆率・検出力の下限による基準は、点推定が目標値に達しただけの場合より厳しい。真の被覆率がちょうど95%の方法は、この基準を通常満たさない。そのため上限を保守的に校正し、保守化後の区間幅と検出力も報告する。

15章の棄却率14/200は、5%とも両立する不確かな推定として扱う。これだけで不正な検定と断定せず、合格とも扱わない。

最終確認は主要な各設定で2,000反復を原則とする。計算時間は、小規模な計時用実行で先に見積もる。計時用結果は方法の優劣を選ぶために使わない。

計算上限に達して必要反復を完了できない場合は、確認未完了とする。判定を通す目的で反復数や基準を変更しない。別方法へ変更した場合は、新しい確認用乱数を用いる。

すべての設定に対する保証ではなく、登録した生成条件での確認結果として報告する。

16.9 実行順と多重性

実行順は次のとおりとする。

  1. データ・コード・対象試合・分割・乱数系列を固定する。
  2. ツモ確率と補正式の実装監査を行う。
  3. Dと、診断用のA/B/Cを作る。
  4. 模擬データで上限と主要検定を調整する。
  5. 独立した確認用模擬で、被覆率・棄却率・検出力を評価する。
  6. 固定した本番補正式を、新規ボット対戦で評価する。
  7. 実牌譜の4版比較と、被覆率を確認した上限を報告する。

5で失敗した方法は、7で正式な上限として使用しない。

4版の比較は原因分析に使い、最良の結果を出した版へ主要候補を切り替えない。切り替える場合は探索的な変更として記録し、確認データを更新する。

事前指定した全ボット対比で同等性が成立した場合だけ「全対比で確認」とする。これは全条件の成立を求める判定であり、合格した対比だけを選んで全体の安全性を主張しない。

過去牌譜での再解析を、新しい独立の再現と呼ばない。登録後に新たに得られる100半荘を将来確認用とする場合は、補正式を期間開始前に固定し、100半荘終了時に一度だけ評価する。100半荘では精度が不足する可能性があるため、未達時は判断保留とする。

16.10 公開ページの表現

現行V3eの数値には被覆不足が見つかったため、「混入していてもこの割合以下」という保証としては扱わない。方法の修正が完了するまで、上限表は参考値として分離するか、正式な上限表示を停止する。

15章の「実力差の混入はほぼ一発から来ていた」は、次の表現に変更する。

この2種類のボットと今回の対戦条件では、一発に関する補正が、方策間の補正量の差の主な要因でした。一発を除くと差の点推定は小さくなりましたが、小さな偏りが残っていないことまでは確認できていません。

ツモ確率については、次のように説明する。

牌譜からツモ直前の他家の手牌も再現し、抽選対象にならない牌を除いて確率を計算します。これは対局後に偶然の影響を測るための情報利用です。選手が対局中にその情報を知っていたと仮定するものではありません。確認した条件では残差の偏りが小さくなりましたが、槓などを含む処理の正しさは別途検証します。

主要検定の説明は、次を基本とする。

運補正量について、選手ごとに持続する系統的な差を調べています。差が検出されないことだけで、混入がないとは判断しません。どの大きさの差を見つけられるかと、妥当性を確認した方法による上限を併記します。ここで確認できるのは、検証したモデルと条件の範囲です。

方法上の参考文献:

16.11 ボット対戦の対戦数(予備実験の後、本番の前に記入)

16.12 結果

実装監査(16.3)

実験1、実牌譜(16.5)(区間は係数を固定した条件付きのもの)

版分散の減り(90%区間)選手ごとの運を除いたポイントの変化(Aとの差、49人)将来の成績の予測(二乗誤差のA比、片側95%上限)
A 34.5%(32.8〜36.2) — —
B 31.6% 標準偏差0.63、最大1.50 1.0033(1.0082)
C 31.0% 標準偏差0.81、最大2.32 0.9966(0.9992)
D 27.7%(26.1〜29.4)標準偏差1.09、最大3.47 1.0008(1.0065)

実験1、ボット対戦(16.5、16.11)(本番のD版・A版の補正式の係数は実牌譜で固定)

組版補正量の差 B(90%区間)同等性 ±1 差の分散比(片側95%上限)
S対W 5,400試合 D −0.10(−0.66〜+0.46)確認 0.785(0.808)
A +2.74(+2.08〜+3.39)未確認(偏りあり) 0.739(0.762)
S対P 6,100試合 D +0.51(−0.05〜+1.07)未確認 0.724(0.740)
A +2.97(+2.30〜+3.63)未確認(偏りあり) 0.645(0.661)

実験3、主検定(16.8)(確認用の模擬、各2,000回、乱数 70000〜)

項目結果基準判定
混入なしでの棄却率 5.0%(片側95%上限5.9%)上限6%以下合格
持続する r = 0.10 の検出力 76.4%(片側95%下限74.8%)下限80%以上不合格
持続する r = 0.20 の検出力 98.9%(片側95%下限98.4%)下限95%以上合格

実験2、上限の作り直し(16.7)(D版の運による獲得ポイント。検定反転、グリッド0〜0.4・刻み0.005、各候補100回、内部水準97.5%。確認用の模擬、各2,000回、乱数 90000〜)

真の持続成分 r 被覆率(片側95%下限)上限の平均
0.01 97.7%(97.1%) 0.116
0.05 97.9%(97.3%) 0.172
0.10 98.0%(97.3%) 0.240
0.20 98.1%(97.5%) 0.348

採否の判断

終了条件と、最後の確認の事前固定

本研究の目的を、D 版の運補正の構成、旧版からの改善、確認できた有効性と残る限界の報告に限る。全検証項目の合格や、混入が全くないことの証明は終了条件にしない。残す作業は次の5つだけとし、追加計算は合計5時間までとする。未完了・未達の項目はそのまま報告し、合格するまで計算を足さない。上限の妥当性を確認できなければ、数値の混入上限は結論から外す。明確な計算誤りが見つかった場合だけ、その修正に必要な範囲で確認し直す。内部水準の最適化、S対P の追加対戦、鳴き対応ボット、相手構成を変えた対戦、検出力を上げる新手法は将来の課題とする。

  1. 上限の計算規則(確認の前に固定)
    • 候補 r ごとの模擬p値は (1 + 観測値以下の模擬の数) / (模擬回数 + 1)。同点は棄却しない側に数える。p が 2.5% を超えれば受容(内部水準97.5%)。
    • 上限は、受容された候補のうち最大のものの次のグリッド点とする(外側への丸め。グリッド間の真値を内側へ切り落とさない)。
    • 理論上は r が大きいほど受容されにくい。探索は、最後に受容された候補から 0.05 幅(10点)続けて棄却された時点で止める。途中で棄却の後に受容が現れた場合は、受容された候補全体を覆うように上限を延ばす。
    • グリッドの上端 0.4 でも受容された場合は「上限未確定」(無限大)とする。被覆は妨げないので被覆率からは除かず、有限の上限が得られた割合を必ず併記する。
    • 規則の単体テスト(グリッド間の真値の被覆、非単調な並び、上端、全棄却)を tests/test_bound_rules.py に置く。
  2. 基準条件の被覆率:持続成分 r = 0.01, 0.05, 0.10, 0.20、各2,000回、候補ごと100回、新しい乱数 110000〜。
  3. 追加条件は1つだけ:持続成分とシーズン限定成分の共存。選手・シーズン平均の分散のうち、持続成分が r、シーズン限定成分が 0.10、残りが偶然(r の分母は3つの合計)。r = 0.05, 0.10、各1,000回、乱数 120000〜。上限の計算は持続成分だけを仮定したまま。失敗しても修正実験には進まず、「この条件では上限を保証できない」として閉じる。出場数・機会数は実データのまま。これは1例での頑健性確認で、残る条件を代表しない。
  4. 中心化の寄与(既存の集計で計算済み):S対P の補正量の差 +0.51 のうち、向聴数ごとの中心化によるものは +0.15(聴牌 +0.08、1向聴 +0.05、他家分を含む)。中心化の定数はツモ1回あたり ±0.0006 以下と小さいが、押す打ち手は聴牌・1向聴のツモが多いため、回数の差を通じて効く。実装の誤りではなく補正式の性質として記録し、中心化を外した再検定はしない(結果を見てからの変更になるため)。
  5. 判定と未確認の事項を公開ページに反映し、論文用のデータ・コード・結果を固定する。上限は確認できた場合も「指定したモデルの下での上限推定値」と書き、実際の混入全体の上限には一般化しない。

最後の確認の結果(上の規則で実行)

条件真の r 被覆率(片側95%下限)有限の上限が出た割合有限の上限の中央値
持続成分だけ(各2,000回) 0.01 99.0%(98.6%) 100% 0.140
0.05 99.1%(98.7%) 99.9% 0.195
0.10 99.4%(99.0%) 98.4% 0.265
0.20 99.3%(98.9%) 65.4% 0.360
シーズン限定成分 0.10 と共存(各992回) 0.05 99.7%(99.2%) 99.9% 0.230
0.10 100%(99.7%) 96.9% 0.295