検証 計画と記録
検証ページの
検証計画書(日文)
1. 目的
サイトの数字は
| # | 確かめること | 対応するサイトの主張 |
|---|---|---|
| V1 | 実力推定とその90%区間は、正解が分かっている模擬データで正しく働くか | 「実力推定」「90%の範囲」「信頼度」 |
| V2 | 実力推定は、実際に先の成績をよく予測するか | 「推定はリーグ平均に大きく引き戻すのが正しい」 |
| V3 | 「運」の指標は本当に運だけを測っているか(実力が混ざっていないか) | 「運の指標」「運を除いたポイント」 |
| V4 | 局ごとのトップ確率は、言っている通りの頻度で当たっているか | 試合ページのトップ確率・WPA |
結果の扱い: 合否の
公開の制約(実装計画書 2.2 と同じ)
2. 参考文献と採用する部分
論文を
2.1 Talts, Betancourt, Simpson, Vehtari, Gelman (2018) “Validating Bayesian Inference Algorithms with Simulation-Based Calibration” (arXiv:1804.06788)
- 論文の
要点: 事前分布から 真の値を 引き、 そこから データを 作り、 推定を やり直す。 これを N 回繰り返すと、 真の値が 推定の分布のどこに 来たか (順位)が 一様分布に なるはず。 偏りは 順位 ヒストグラムの形 (傾き=偏り、∪字=区間が 狭すぎ、 ∩字=広すぎ)で 分かる。 ヒストグラムには Binomial(N, 1/B) の 0.5%〜99.5% の 帯を 重ね、 帯の外に 出る ビンを 見る。 ビン数は N/B ≈ 20 が目安。 - 採用:
- 「正解を決めて模擬データを作り、
実際の 推定コードに 通す」という 枠組み (V1)。 - 順位
ヒストグラムと 99% の 帯。 この推定は 事後分布が 正規分布なので、 サンプルの順位の 代わりに PIT 値 Φ((真値 − 推定) / 標準誤差) を 使う (サンプル数 L → ∞ の 極限と同じ)。 - 1 回の模擬に
つき 1 人だけを ヒストグラムに 入れる (同じ回の選手どうしは k の 推定を 共有していて独立で ないため)。 N = 1000、 B = 20 ビン (N/B = 50)。
- 「正解を決めて模擬データを作り、
- 採用しない: MCMC の
自己相関への対処 (間引き)。 この推定は 解析的に 計算していて サンプリングを しないので不要。 - 補足: SBC は
本来、 真の値を 「事前分布から」引く。 ここでは 実力のばら つき τ を 固定した 数通りの値で 試す (τ ごとに見る方が、どの条件で 崩れるかが 分かる)。
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))
- 論文の
要点: シーズン前半の 成績から 後半を 予測し、 予測法を 比べる。 後半の 成績自体にも 偶然の誤差が あるので、 単純な 二乗誤差の合計 (SSPE)から 「真の値を知っていても 避けられない 誤差」 Σ 1/(4N₂ᵢ) を 引いた TSE^ を 使う。 前半の成績 そのまま (素朴な予測)の TSE^ で 割って正規化する。 打率には 分散安定化変換 arcsin√((H+1/4)/(N+1/2)) を使う。 - 採用:
- 前半 → 後半の
予測という 検証設計 (V2)。 各シーズンの レギュラーシーズンを 選手ごとに 日付順で 前後半に分ける。 - TSE^ = Σ(X₂ − 予測)² − Σ σ²/n₂ と、
素朴な 予測で 割った 正規化 (相対 TSE)。 - 比べる
予測法も 論文と 同じ並び: 素朴 (前半の値)、 全体 平均、 縮小推定 (経験ベイズ)。
- 前半 → 後半の
- 採用しない: arcsin 変換。
打率 (二項) 用の もので、 ポイントや 着順は 数十試合の平均で ほぼ正規分布に なり、 分散も n で ほぼ決まる ため不要。 - 追加: 運を
除いた ポイントで 縮小した 予測も 比べる (サイト独自の主張の検証)。 予測の 対象は、 どの予測法でも 後半の生のポイントとする。
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)
- 論文の
要点: 従来の 信頼性図 (確率を10区間に 分けて実際の頻度と 比べる)は 区間の 切り方で 見た目が 変わる。 代わりに 等調回帰 (PAV アルゴリズム)で 「予測確率 → 実際の頻度」の 単調な 曲線を 引く (CORP)。 これを 使うと Brier スコアが S = MCB − DSC + UNC に 分解できる。 MCB は 再較正で 減らせる 分 (ずれ)、 DSC は 識別力、 UNC は 事象自体の 不確かさ。 不確かさは 「予測が正しかったら」という 仮定の下で 結果を シミュレーションした 一致帯 (consistency band)で示す。 - 採用:
- PAV による
信頼性曲線と、 MCB / DSC / UNC の 分解 (V4)。 いまの 10区間の表は これに 置き換える。 - 一致帯。
予測が 正しいと 仮定して結果を 1000 回作り直し、 PAV 曲線の 5〜95% の 範囲を 描く。 同じシミュレーションで MCB の 帰無分布も 作り、 較正の検定の p 値を 出す (2.6 の式)。
- PAV による
- 変更して採用: 論文の
一致帯は 各観測が 独立である ことを 前提に している。 ここでは 同じ試合の 局どうしが 同じ結果を 共有する ため、 その前提が 成り立たない (2.4)。 そこで 一致帯と 検定は 「1試合から局を1つだけ無作為に 選んだ 標本」で 行う。 この標本では 試合どうしは 独立で、 同じ局の4人は 「トップは1人だけ」に なるよう、 4人の確率を 合計1に 直した 多項分布から トップを引く。
2.4 Brill, Yurko, Wyner (2025) “Exploring the difficulty of estimating win probability: a simulation study” (arXiv:2406.16171)
- 論文の
要点: 勝率 モデルの学習・ 評価 データは、 同じ試合の 全プレーが 同じ勝敗を 共有する。 そのため実質の サンプル数 (有効サンプルサイズ)は 見た 目より ずっと 小さく、 独立を 仮定した 信頼区間は 狭すぎる。 - 採用: 不確かさは試合単位の
ブートストラップ で出す (V4 のすべての区間)。 局単位で 独立に 再標本した 場合と 区間の幅を 比べ、 その比から 有効 サンプルサイズを 報告する。 - 採用しない: 論文の
模擬実験 そのもの (アメフトの試合を再現する生成 モデル)。 こちらの トップ確率は、 すでに 一つ 抜きの シーズン交差検証 (予測するシーズンを学習に 使わない)で 作っている。
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)
- 論文の
要点: 結果から 「運で説明できる部分(期待値0の 補正項)」を 引くと、 平均は 変わらずに 分散だけ減る。 前提は補正項の 期待値が、 。誰が プレーしても 0であること - 採用: この前提
そのものを 検証の対象に する (V3)。 運の指標に 実力が 混ざっていれば、 選手ごとの平均が 0から ずれ、 しかも そのずれが 選手の間で 持続する。 そこで 「運の指標に、偶然では 説明できない 選手差が あるか」を 並べ替え検定で調べる。 - 採用しない: AIVAT の
「プレーヤーの戦略が分かっている 場合」の 補正 (Mortal を使うこと になり公開の制約に 反する)。
2.6 Phipson, Smyth (2010) “Permutation P-values Should Never Be Zero” (Stat. Appl. Genet. Mol. Biol. 9(1), arXiv:1603.05766)
- 論文の
要点: 無作為に 選んだ m 回の 並べ替え・シミュレーションの うち、 観測値以上に 極端だったのが b 回なら、 p = (b + 1)/(m + 1) と する。 b/m は p 値を 小さく 見積も りすぎで、 0 にも なってしまう。 - 採用: V3 と
V4 の すべての モンテカルロ p 値を この式で 出す。 m = 999 (最小の p は 0.001)。
2.7 補足(要旨のみ参照)
- Field, Welsh (2007) “Bootstrapping clustered data”
(JRSS B) : クラスタのある データでは、 クラスタ単位で 再標本するのが 基本。 V1 の k の 区間 (選手単位)と V4 (試合単位)の 方針の 裏づけとして引く。 - 多重比較: V3 では
指標ごとに 検定するので、 Holm 法で 補正した p 値も 併記する。
3. 検証の内容
V1 模擬データでの推定の再現(SBC 型)
問い: 実力のばら
生成モデル(実際の日程と点数分布をそのま
- 2018-19〜2025-26 の
レギュラーシーズンの 実際の対戦表 (誰と誰が同卓した か)を使う。 - 各選手・
シーズンに 実力 θ ~ N(0, s²) を 割り当てる。 - 各試合の
点数は、 実際の試合の 最終点数 ベクトル (4人分、順位順)を 1つ 無作為に 選ぶ。 4人の うち誰が 何位に なるかは、 強さ exp(θ) の Plackett–Luce モデル (強い人ほど上位を引きやすい 抽選)で 決める。 これで 「4人の点数の合計は0」 「1位は1人」という 実際の制約が 保たれる。 - 正解: 選手・
シーズンごとの期待着順・ 期待 ポイント (24通りの順位の確率から正確に 計算)の、 その選手の 試合での平均。 - s は、
正解の 平均着順の 標準偏差が τ = 0、 0.5τ̂、 τ̂、 2τ̂ (τ̂ = 実データの 推定値 0.050)に なるよう 事前に 調整する。
推定: 生成したmetrics.pyと
繰り返し: τ ごとに
報告する
| 項目 | 基準 |
|---|---|
| 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 以上(実力差がないのに差があると言い過ぎないこと) |
真の
V2 シーズン前半 → 後半の予測(Brown 型)
データ: 2018-19〜2025-26 の
予測法(後半の1試合あたりの平均を
- 素朴: 前半の
平均そのもの - 全体
平均: リーグ平均 (着順 2.5、ポイント 0) - 縮小: (n₁x₁ + k·平均)/(n₁ + k)。
k はそのシーズンを 除いた 選手・シーズンから 推定する (予測する期間の結果を 使わない)。 - 運を
除いて縮小 (ポイントのみ) : 前半の 「運を除いたポイント」を、 その k で 縮小したもの
評価: TSE^ = Σ(X₂ − 予測)² − Σ σ²/n₂。
合格基準:
- 縮小は
素朴より 良い (相対 TSE の 90% 区間の上限 < 1)。 - 縮小は
全体 平均より 悪くない (差の 90% 区間が 0 を 含むか、 縮小が良い)。 - 運を
除いた 縮小は 参考値と する (生の縮小より良ければ、 サイトの主張の 裏づけになる)。
注: 実力差が
V3 運の指標の検証(並べ替え検定)
V3a: 運の
- 対象: 配牌の
向聴数、 配牌の ドラ・赤、 ツモの良さ、 裏ドラ運、 一発率、 運による 獲得ポイント (/半荘)。 - 陽性対照
(選手差がはっきり あるはずの指標) : 放銃率、 副露率、立直率。 - 統計量: レギュラーシーズンの
選手・ シーズン平均の 「真のばらつき」の 積率推定 ( metrics.momentsと同じ)。 - 帰無分布: 同じ
シーズンの中で、 単位 (局・ツモ・試合) ごとの値と 選手の対応を 無作為に 入れ替える (m = 999)。 選手ごとの 単位数は 変えない。 - p = (b + 1)/(m + 1)、
b は 入れ替え後の 統計量が 観測値以上だった回数。 Holm 補正の p も 併記する。 - 合格基準: 運の
指標は すべて Holm 補正後の p > 0.05 (選手差の証拠がない)。 陽性対照は すべて p = 0.001 (999 回すべてを上回る)。 陽性対照が 通らなければ、 検定の 検出力が 足りないので 結論を 保留する。
V3b: 運の
- 統計量: 運を
除いた ポイントの、 1試合あたりの 分散の減少率 ( luck.pyと同じく、 一つ 抜きの シーズン交差検証で 当てはめる)。 - 帰無分布: 運の
特徴量の行を、 同じシーズンの中で (局 × 席)の 間で 無作為に 入れ替えてから 当てはめ直す (m = 199。1回の 当てはめが 重いため。 最小の p は 0.005)。 - 合格基準: p = 0.005
(すべての入れ替えを上回る)。 あわせて 入れ替え後の 減少率が 0 付近 (±1% 以内)で ある ことを 確認する。 当てはめ直しが 減少を 「作り出して」いない ことの確認になる。
V4 トップ確率の較正(CORP +試合単位の不確かさ)
データ: kyoku_wp.parquet の
手順:
- 全データで
PAV 曲線を 引き、 Brier スコアを MCB / DSC / UNC に 分解する。 - 試合単位の
ブートストラップ (1000 回)で、 曲線の 90% 信頼帯と、 MCB・ DSC・ Brier スキルスコアの 90% 区間を 出す。 局単位で 独立に 再標本した 場合の 区間幅と 比べ、 有効 サンプルサイズ ≈ 局数 × (局単位の 分散 / 試合単位の 分散) を 報告する。 - 較正の
検定: 1試合に つき1局を 無作為に 選んだ 標本で MCB を 計算する。 「予測が正しい」と 仮定して各局の トップを 4人の 確率から 引き直し、 MCB の 帰無分布と 一致帯を 作る (m = 999)。 p = (b + 1)/(m + 1)。 合否に 使うのは、 種を 固定した 1通りの 選び方の p だけと する。 複数の p の 中央値は 正しい p 値に ならないためで ある。 選び方による 揺れは、 別の 20 通りの p の 範囲を 参考として示す。 - 局面別
(東場、南1〜3局、オーラス)の MCB も出す。 - ラス確率
(4着)についても 同じことを する (WPA と順位確率は トップだけで なく 全順位を 使っているため)。
合格基準:
- 較正の検定で
p > 0.05 (トップ・ラスとも)。 - MCB が
Brier スコアの 2% 未満 (ずれが実用上小さい)。 - 参考: DSC と
Brier スキルスコアの 90% 区間を 報告する (識別力の目安。合否には 使わない)。
対象外(今回はやらない)
- 順位確率
(オッズ)の : 過去過去 シーズンでの較正 シーズンの チーム編成の設定 ファイルが 必要で、 1シーズン=1回の 結果しかないため、 8シーズンでは 検定の力が ほとんどない。 将来の課題として 記録するだけにする。 - Mortal との
比較 : 公開の制約により対象外 (内部の bench/ で扱う)。
4. 実装
pipeline/validate.py(新規): V1〜V4 を 実行し、 data/metrics/validation.jsonに結果を 書く。 --only v1などで一部だけ実行で きるようにする。 - 実データの計算は
既存の関数 ( metrics.moments、metrics.draw_expectation、luck.kyoku_features、luck.fit、odds.chrono_key)を再利用する。 重い 繰り返しの 部分だけ numpy で 書き直し、 元の関数と 同じ値に なる ことを テストで 確かめる。 - PAV は
自前で 実装する (依存を増やさない)。 トップ確率は 2000 回の シミュレーションの 割合なので、 取りうる値は 2001 通りしかない。 値ごとに まとめてから PAV を かけるので速い。 - テスト(
tests/test_validation.py):- PAV が
単調で、 既知の小さな 例と 一致すること。 - 分解 S = MCB − DSC + UNC が
数値的に 成り 立つこと。 - p 値の式。
- 高速版の
積率推定が metrics.momentsと一致すること。 - Plackett–Luce の
24通りの確率の 合計が 1に なり、 強さが 同じなら 一様に なること。
- PAV が
- 公開:
export.pyがresearch/validation.jsonを書き、 計算方法 ページに 「検証」の 節を 加える。 基準・結果・合否を 表に して、 不合格が あれば そのまま載せる。 - 実行の
タイミング: 毎日の 更新 ( run.py)のmetrics.pyの後に 入れる。 数分で 終わる 見込み。 長く かかる 場合は 週1回にする。
5. 推敲メモ(読み直して直した点)
- V1 の
生成 モデルは、 最初は 「実際の点数に θ を 足すだけ」だった。 これでは 着順が 扱えず、 4人の合計が 0という 制約も 壊れる。 そこで Plackett–Luce の 抽選に変えた。 - V4 の
一致帯は、 最初は 全局を そのまま 独立と みな していた。 Brill らの 指摘どおり、 それでは 帯が 狭すぎて不合格が 出すぎる。 そこで 「1試合1局」の 標本に変えた。 - V2 で
k を 全シーズンから 推定すると、 予測する 期間の結果を 使うこと になる。 そのシーズンを 除いた 推定に改めた。 - V4 の
検定で、 最初は 20 通りの 標本の p の 中央値を 使う 案だった。 中央値は p 値の性質 (帰無仮説の下で一様)を 持たないので、 種を 固定した 1通りに改めた。 - V3a には
陽性対照を 加えた。 検出力のない 検定で 「差がない」と 言わないためである。 - V1 の
τ の 範囲は、 以前の案 (0、0.05、0.1)を 実データの 推定値 τ̂ の 倍数で 書き直した。 2τ̂ ≈ 0.1 なの で、 実質的には 以前の案を 含んでいる。
6. 結果(2018-19〜2025-26)
合否は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) |
所見
- V1 の区間は、実力差が小さいほど広すぎ、大きいほど狭すぎる。被覆率は τ = 0 で 1.00、0.5τ̂ で 0.98、τ̂ で 0.93、2τ̂ で 0.86 だった。原因は二つある。
- k が
推定できない 模擬の場合の扱い。 31〜50% で 真の分散の推定が 0 以下に なり、 k = ∞ に なる。 このとき点推定は リーグ平均に しているのに、 区間は 縮小なし (√(分散/n))で 計算している ため、 非常に 広くなる。 実データでは k が 有限 (着順 499)なの で、 今の サイトの 表示には 影響しない。 - k の
不確かさを 2τ̂ で区間に 含めていない。 狭すぎるのは このためで、 計算方法 ページ 2.3 の 注記どおりの 弱点である。
- k が
- 試した改善案はどちらも良くならなかった(各 τ で 200 回)。
- Laird & Louis (1987) の
ブートストラップ経験 ベイズ区間 (k のブートストラップ分布で 混合) : 被覆率 0.78〜0.83 で 狭すぎた。 k = ∞ の 再標本が 「全員リーグ平均」という 幅0の 成分に なるため。 - τ に
一様事前分布を 置いた 階層ベイズ (格子で積分) : 0.99、 0.90、 0.85 で、 今の方法と 大差なかった。 - 結論として、
今の方法を 変える 根拠は 得られなかった。
- Laird & Louis (1987) の
- V1 の
PIT の SBC で基準は、 計画の段階で 厳しすぎた。 順位が 一様に なると 保証されるのは、 真の値を 事前分布から 引き、 それと 同じ事前分布を 使う 完全な ベイズ推定の 場合である。 τ を 固定した 上での プラグイン経験 ベイズでは、 τ ごとに 一様に なる ことは 原理的に 期待できない。 次回は 「τ を事前分布から引く SBC」と 「τ ごとの被覆率」に 分けて基準を 作り直す。 - V3a の
陽性対照の基準も 放銃率は厳しすぎた。 p = 0.003 で、 999 回中 2 回だけ 並べ替えが 観測値以上に なった。 検出力の確認という 目的は 果たせているが、 基準は 「全並べ替えを上回る」だったので 判定は 不合格のままに する。 次回は 「p < 0.01」とする。 - 配牌の
良さは、 向聴数は補正前の p が 0.059 で 境界に 近い。 親のときに 1枚多く 配られるので、 親の回数の偏りが 残っている 可能性が ある。 値は 小さい (真のばらつきの推定は 標準偏差 0.028 向聴で、 並べ替えの 95% 点 0.028 と 同じ程度)。 経過を見る。 - V4 の
トップの 固定した検定は、 選んだ 標本に 強く 左右された。 種の 標本では p = 0.018 だったが、 別の 20 通りの 選び方では すべて p > 0.05 (中央値 0.51)だった。 全データの PAV 曲線は 予測 0.3〜0.4 付近で 実際が やや 低い (0.40 の予測で 0.373、 90% 帯 0.359〜0.395)。 ずれの 大きさは MCB で Brier の 0.2% と 実用上小さい。 判定は 不合格の ままにし、 サイトにも そう 書く。 再較正 (PAV を一つ抜きの シーズン交差検証で 当ては める)は、 効果が 小さいので 保留する。 - 有効
サンプルサイズは (Brill らの指摘どおり)。局面数の 約 1/5 だった 局単位で 独立と みなすと、 区間の幅を 約 2.2 倍 (√5) 過小に 見積も ることになる。 - V2 で
TSE^ が (縮小と全体平均で負に なる −0.06〜−0.09)のは、 Brown の 推定量の 性質である。 後半の偶然の誤差を 差し引いた 結果、 真の 値からの誤差が ほぼ 0 と 推定された ことを 意味する。 分かりに くいので、 サイトでは RMSE を示す。 - 運を
除いた (差の縮小は、 生の縮小と ほぼ 同じ成績だった 90% 区間 −0.006〜+0.006)。 1シーズンの半分 (約 15 試合)では、 どちらの推定も ほぼリーグ平均に なる ためである。 運を 除く 効果は、 もっと 長い 期間で 効いてくる。
7. 改訂: 90% 区間を頑健な経験ベイズ区間に変更
7.1 試したこと
6章の所見
| 方法 | τ̂ での被覆率 | τ = 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 だけが、
7.2 採用した方法
Armstrong, Kolesár, Plagborg-Møller (2022) “Robust Empirical Bayes Confidence Intervals”(Econometrica 90(6), arXiv:2004.03448)。
- 論文の
要点: 縮小推定は、 真の値が 平均から 遠い ほど 平均寄りに 偏る。 偏りの 大きさは 真の値の分布の形で 変わる。 この論文は、 偏りの 二乗平均だけを 条件に して、 最悪の 分布でも 非被覆率が α 以下に なる 臨界値 cva を 求める。 付録 B の 命題 B.1 は、 二次 モーメントだけを 条件に した 場合の閉じた 形を与える。 - この区間は
「選手全体で平均した被覆率」を 真の値の分布に よらず 保証する。 これは V1 で 測っている 量その ものである。 - 採用:
- 区間 = 縮小推定 ± cva(k/n) × n/(n+k) × √(1件あたりの
分散 / n)。 - cva は
命題 B.1 の ρ(t, χ) = sup_λ (1−λ) r(0, χ) + λ r(√(t/λ), χ) を 二分法で 逆に 解いて求める。 - 真の分散の
推定値に、 論文の 手順 1 の 下限 2Σσ⁴/(N Σσ²) を 設ける (重みは均等)。 k の 推定が ∞ に なった 指標でも、 区間は この下限から 計算するので 有限になる。
- 区間 = 縮小推定 ± cva(k/n) × n/(n+k) × √(1件あたりの
- 採用しない:
- 四次
モーメント (尖度)の 条件。 区間は もっと 狭くなるが、 選手・ シーズン約 250 件では 尖度の推定が 不安定になる。 - 点推定の変更。
縮小推定と 信頼度は 従来のまま。 k が ∞ の 指標でも、 点推定は リーグ平均のままにする。
- 四次
- 実装は
metrics.robust_interval。scipy に 依存しないよう、 正規分布の 累積分布関数は Abramowitz–Stegun の 近似 (誤差 1.5×10⁻⁷ 未満)で 計算する。
7.3 V1 の基準の見直し(結果を見た後の変更)
以下の
- PIT ヒストグラムの
基準を 6章の所見の削除した。 とおり、 τ を 固定した プラグイン推定には 当ては まらない 基準だった。 また、 頑健な 区間は 事後分布では ないので PIT 自体が 定義できない。 - τ = 0.5τ̂、
2τ̂ の 頑健な「0.85〜0.95(参考)」を 「τ = 0.5〜3τ̂ で 被覆率の最小が 0.87 以上」に 変えた。 区間は 最悪の場合に 合わせて作るので、 実力差が 小さい ときに 広め (被覆率が高め)に なるのは 設計どおりで ある。 そこで 上限を 外し、 下限だけを 見る。 条件には 1.5τ̂ と 3τ̂ を加えた。 - τ = τ̂ での
「0.87〜0.93」、 τ = 0 での 「0.90 以上」、 真の分散の偏り、 k の 区間の被覆は 変えていない。
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 |
見直した
実データへの影響:
- 着順・
ポイントの区間は 広くなる。 1シーズンの半幅の 中央値は、 平均着順で 0.080 から 0.130、 ポイントで 3.6 から 5.6 に なる。 実データでは k が 有限なので、 従来は 「k が有限で区間が狭すぎる」 場合に 当たっていたことになる。 - 副露率など
k の 小さい 指標は ほぼ変わらない (半幅 3.6% のまま)。
8. 追加: V3c 運の指標の検定の検出力(実行前に記入)
外部の
- 混ぜ方
: 運の 6指標それぞれについて、 実データの単位 (局・ツモ・試合)の 値に、 選手・ シーズンごとの 一定の 値 d を 足す。 d は 選手・ シーズンごとに N(0, τ²) から引く。 - 混ぜる
量: 「1シーズンの値のうち実力で 決まる 割合」 r (サイトの「実績の重み」と 同じ尺度)で 決める。 r = τ² / (τ² + σ²/n)、 σ²/n は V3a で 使う 選手・ シーズンの 単位数での偶然の ばら つき ( momentsのwithin ÷ 単位数の 平均)。 r = 0.1、 0.2、 0.3 の 3段階。 参考: 陽性対照の 放銃率の 1シーズンの実績の 重みは 0.23 (90%区間 0.08〜0.33、 luck-vs-skill.json)で、 V3a は これを p = 0.003 で 見つけている。 - 手順: 各段階で
100 回、 混ぜた データを 作り、 V3a と 同じ統計量を 計算する。 帰無分布は 段階ごとに、 混ぜた データ1つを 同じシーズン内で 並べ替えて作る (m = 199)。 並べ替えの 帰無分布は 混入の有無で ほとんど 変わらないため、 100 回で 共有する。 - 判定の
水準: 運の 6指標を Holm 補正するの で、 最も 厳しい 場合の 0.05/6 ≈ 0.0083 で 「見つかった」と する (m = 199 では p ≤ 0.005)。 - 合格基準: 放銃率並みの
r = 0.2 で、 6指標すべての 検出力が 0.8 以上。 r = 0.1 と 0.3 は 参考値として載せる。 - 読み方: 合格なら
「1シーズンの値の2割が実力で 決まる (放銃率の選手差と同じくらいの) 混入が あれば、 8割以上の確率で 見つかったは ずで、 実際には 見つかっていない」と 書ける。 不合格の指標については 「見つからなかった」の 根拠が 弱いと書く。
8.1 実行して分かったことと、変更(結果を見た後)
- 並べ替えの回数が
足りなかった。 m = 199 で1回目を 実行した あと、 乱数の 流れだけを 変えて 再実行すると、 同じ条件の 検出力が 大きく 変わった (例: ツモの良さの r = 0.2 で 0.19 → 0.56)。 判定の 水準 0.0083 は 帰無分布の 上位 0.8% で、 199 回の 並べ替えでは 一番端の 1〜2点で 合否が 決まる ためである。 帰無分布は 試行の間で 共有するので、 並べ替えを m = 1999、 試行を 200 回に 増やして測り直す。 この変更は 結果を 見た 後だが、 方向は 結果に 依存しない (どちらの結果が有利になるかを 見て決めたのではない)。 - 補足の分析を
加えた 事前の方法は(事前の計画にはない)。 実データに 実力を 足すので、 実データの偶然の 選手差が どこに あるかで 検出力が 変わる。 配牌の 向聴数は 実データの時点で p = 0.035 (Holm 補正後 0.21)と 境目に 近く、 足すと 見つかりやすい。 配牌の ドラ・赤は 実データの 選手差が ほぼ0で、 見つかりに くい。 そこで、 単位の値を 同じシーズンの中で 一度 シャッフルして 運だけの世界を 作り、 そこに 足した 場合の検出力 (power_pure)も 出す。 合否の判定は 事前に 決めた 方法 (power)の ままにする。
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 |
- 6指標中
5つが 不合格。 V3a の 「選手差が見つからない」が 強く 言えるのは、 1シーズンの値の 3割ほどが 実力で 決まる 大きな混入についてで、 放銃率並みの2割の 混入は 見逃しうる。 - 配牌の良さが
高いのは、 実データに 偶然の範囲の選手差 (V3a の 補正前 p = 0.035)が あり、 足すと 見つかりやすくなる ため。 運だけの世界に 混ぜた 場合は、 どの指標も 0.48〜0.64 と ほぼ同じ。 - 検証ページ
(4.2)には、 不合格を 含めてこのまま載せる。
9. 追加: V3d 通算での持続性の検定と、V3e 混入量の上限(実行前に記入)
V3c で、
V3d: 選手の
- 統計量: 各
シーズンで、 選手の 平均から そのシーズンの 選手平均を 引いた 値 c を 作る (対象は V3a と同じ選手・ シーズン)。 同じ選手の異なる 2シーズンの 組すべてについて c × c’ を 平均する (シーズン間の共分散)。 偶然のずれは シーズンごとに 独立なので、 持続する 選手差が なければ 期待値は0。 - 帰無分布と
p 値: V3a と 同じく、 同じシーズンの中で 単位と 選手の対応を 入れ替える (m = 1999、 p = (b+1)/(m+1 )、片側)。 - 対象: 運の6指標
(Holm 補正)と、 陽性対照の 放銃率・ 副露率・立直率。 - 検出力: V3c と
同じ尺度 r (1シーズンの値のうち実力で 決まる 割合)で、 選手ごとに 一定の d (全シーズン共通、 N(0, τ²))を 足す。 V3c の 教訓から、 d は 単位を シーズン内で 一度 シャッフルした 「運だけの世界」に 足す (実データの偶然の位置に 左右されないように)。 r = 0.05、 0.1、 0.2、 各 200 回、 帰無分布は 各段階で m = 1999 を 共有、 水準は 0.05/6。 - 合格基準: (1) 運の
6指標は すべて Holm 補正後 p > 0.05。 (2) 陽性対照は すべて p < 0.01 (V3a の反省から「全 並べ替えを 上回る」には しない)。 (3) r = 0.1 (放銃率の半分ほど)の 持続する 混入を、 6指標すべてで 0.8 以上の 確率で 見つけられる。
V3e: 混入量の上限
- 合否ではなく、
「混ざっているとしても多くてこの 程度」を示す。 - 1シーズンの値について
: V3a の 真のばら つきの 推定 τ̂² と 偶然のばら つき σ²/n から r̂ = max(τ̂², 0) / (max(τ̂², 0) + σ²/n)。 - 持続する
分について : V3d の シーズン間共分散を τ̂² の 代わりに 使った r̂。 - 上限: 選手を
単位に した ブートストラップ (選手を復元抽出し、その選手の 全シーズンを 使う、 1000 回)で r̂ の 95 パーセンタイル (90% 区間の上端)。 - 読み方の基準
(事前に決めておく) : 上限が 陽性対照の 放銃率の推定値 (0.23)より 小さければ 「放銃率ほどの混入はな い」と書く。
9.1 実行して見つかったこと: 親の配牌の記録の揺れ
- V3d で、
配牌の良さ (向聴数)に シーズンを またぐ 選手差が 出た (Holm 補正後 p = 0.012)。 配牌は 打ち方と 関係なく 配られるので、 実力の 混入ではなく 測り方の問題を疑った。 - 親の
局だけで V3d を かけると 差が 出て (p = 0.005)、 子の 局だけでは 出なかった (p = 0.186)。 親の局が 多い 選手ほど 配牌が 良い、という 相関も あった (38人で −0.39)。 - 牌譜を
調べると、 親の最初の打牌が ツモ切りに なる 割合が、 子(7〜8%)より 高い シーズンが あった : 2019-20 で 21.6%、 2020-21 で 26.0%、 2021-22 で 16.3%、 2022-23〜2025-26 で 10〜12%。 2018-19 と 2026-27 は 子と 同じ。 これらの シーズンの牌譜の 一部は、 親の 配牌14枚の うち最初に 切った 牌を 「最初のツモ」とし、 残りの 13枚を 配牌として 記録していると みられる。 その13枚は 親が 選んで 残した 手なので、 実際より 良く 見える。 連荘の多い 選手ほど親の局が 多く、 「配牌が良い」こと になっていた。 - 直し方
( pipeline/deal.py、parse の 後に 実行) : 親の 配牌は、 配牌13枚と 最初のツモを 合わせた 14枚の 向聴数で 評価する。 どの牌が 「ツモ」と 記録されていても 14枚は 同じなので、 記録の しかたに 左右されない。 比べる 相手は 親の配牌 ( is_oyaごとの平均)。 親の最初のツモは 配牌の一部として、 ツモの 良さからは 外す。 直した あと、 親と 子の配牌の差は どのシーズンでも ほぼ 同じ (−0.38〜−0.47)に なった (直す前は +0.05〜−0.09 で シーズンごと にばらばら)。 - 直した
データで、 指標・運の補正・ V3a〜V3e を すべて計算し直す。 V3d・ V3e の 判定は、 直した データでの結果を 使う (直す前の結果は、 この節の記録とし て残す)。
10. 追加: V3f 試合単位のスコア検定(実行前に記入)
V3d は
- 統計量: T = Σ_選手
[ (Σ_試合 S)² − Σ_試合 S² ]。 S は、 その選手のその 試合の単位の残差の 和。 同じ選手の 「違う試合どうし」の 残差の積の和で、 シーズンを またぐ 組も シーズン内の組も 入る。 同じ試合の中の 組は、 試合の流れで つながるので 入れない。 単位の多い 選手ほど 重く 効く (精度で重み付けした形)。 - 対象の
単位: V3a と 同じ選手・ シーズン (規定の試合数・単位数を 満たすもの)の レギュラーシーズン。 - 帰無分布と
p 値: V3a と 同じく、 同じシーズンの中で 単位と 選手の対応を 入れ替える (m = 1999、片側)。 - 対象: 運の6指標
(Holm 補正)と 陽性対照の 放銃率・ 副露率・立直率。 - 検出力: V3d と
同じ 「運だけの世界」 (単位をシーズン内で一度 シャッフル)に、 (a) 選手ごとに 一定の d (全シーズン共通)、 (b) 選手・ シーズンごとの d (V3c と同じ)を 足す。 r = 0.05、 0.1、 0.2、 各 200 回、 帰無分布は 段階ごとに m = 1999 を 共有、 水準は 0.05/6。 - 合格基準: (1) 運の
6指標は すべて Holm 補正後 p > 0.05。 (2) 陽性対照は すべて p < 0.01。 (3) (a) の r = 0.1 を 6指標すべてで 0.8 以上の 確率で 見つけられる (V3d と同じ目標)。 (b) は参考値。 - 比較: V3d の
検出力 (r = 0.1 で 0.37〜0.51)から どれだけ 上が るかも載せる。
10.1 結果(配牌の修正後のデータ、m = 1999、200 回)
- 運の
6指標は すべて Holm 補正後 p > 0.05、 陽性対照は すべて p < 0.01。 (1)(2) は合格。 - 持続する
r = 0.1 の 混入を 見つける 確率は 0.50〜0.59 (V3d は 0.37〜0.51)。 上がったが 約10ポイントで、 (3) は 6指標とも 不合格。 r = 0.2 では 0.93〜0.98。 - 選手・
シーズンごとの 混入 (b) には 弱い (r = 0.2 でも 0.10〜0.19)。 組の大半が 違う シーズンどうしなの で、 シーズン内だけの 差は 薄まる。 シーズン単位の 混入は V3a・ V3c の 担当として、 V3f は 持続する 混入の検査と 位置づける。 - 手法を
替えても 伸びが 小さいので、 検出力の天井は 主に データの量 (選手約50人、1人あたり数 シーズン)で 決まっているとみる。
11. 検証ページの見せ方の変更(結果を見た後)
- 検証ページの冒頭の
まとめで、 運の指標と トップ確率が 「△ 一部不合格」と 表示され、 サイトの数字 そのものが 不合格のように 読めていた。 運の指標の 未達18項目は、 すべて検出力の目標 (V3c・V3d・V3f の 「見つける確率」)で、 数字の 正しさではなく 検査の感度を 表す ものだった。 - そこで、
まとめの判定は 「数字が正しく働いているか」の 基準 (V3a・V3d・V3f の 選手差の検定、 V3e の 上限、 V3b)だけで 行い、 検出力の目標は 本文と ページ末尾の別の 一覧 (「検査の感度の目標に 届いていない 項目」)に 分けて載せる。 - 基準と
結果は 変えていない。 検出力の目標は 事前に 決めた 値と 結果のまま、 すべて載せ続ける。 トップ確率の較正 (p = 0.037)は 数字の 正しさの 基準なので、 引き続き 「△」 (小さなずれの疑い)として 表示する。
12. 追加: 過去だけでの予測(V2b)、局面別のトップ確率(V4b・V4c)、運の値の条件別の偏り(V3g)(実行前に記入)
次の3点を
12.1 V2b 過去のシーズンだけで設定を決める
V2 は
- 予測の
方法: V2 と 同じ naive・ league・ shrunk (k と平均は前の シーズンだけから)に、 history を 加える。 history は、 その選手の前の シーズンの レギュラーの 全試合と 対象 シーズン前半を 1つに まとめた 平均を、 同じ k で 全体 平均へ 寄せた もの。 選手の違いが 過去の 実績から 見分けられるかを見る。 - 評価: V2 と
同じ (後半の平均への二乗誤差から 偶然の分を 引いた TSE、 選手単位の ブートストラップ 2000 回、 90%区間)。 - 合格基準: (1) rank・
point とも、 shrunk の 相対 TSE の 90%区間の上限が 1未満 (V2 と同じ)。 - 参考
(合否なし) : history − league と history − shrunk の 相対 TSE の 差の 90%区間。 上限が 0未満なら 「過去の実績で選手を 見分けられる」と書く。
12.2 V4b トップ確率・ラス確率を局面別に
全体の較正が
- 局面の分類
(9個、重なりあり) : 場 (東場・南1〜3局・オーラス)、 局の 開始時点の順位 (1〜4位、同点は席順)、 親か子か。 - 各分類で、
予測の平均と 実際の頻度の差 (ずれ)を 出す。 区間は 試合単位の ブートストラップ (1000回)。 - 検定: 9個の
ずれを 標準誤差で 割った 値の 絶対値の最大を 統計量とし、 ブートストラップの 分布 (各回のずれから元のずれを引いた もの)と 比べる (片側)。 トップと ラスで別々。 - 合格基準: (1) トップ・
ラスとも p > 0.05。 (2) 9分類すべてで ずれが ±2ポイント以内。 - 参考: 場 × 順位の
12マスのずれも 表で 載せる (合否なし)。
12.3 V4c 簡単な予測式との比べ
「補正して直せるずれが
- 簡単な
予測式: ロジスティック回帰。 説明変数は、 トップ確率なら 自分と 他家最高点の差、 ラス確率なら 自分と 他家最低点の差 (どちらも万点単位)、 残り局数 r (南4局で1、東1局で8)、 差 ÷ √r、 親か 子か、 供託本数。 1試合の4人の和が 1に なるよう 割り直す。 - 当てはめは
シミュレーションと 同じく 「対象シーズン 以外」で行う。 - 評価: Brier スコアの
差 (シミュレーション − 予測式)。 区間は 試合単位の ブートストラップ (1000回)。 - 合格基準: トップ・
ラスとも、 差の 90%区間の上限が 0未満 (シミュレーションの方がはっきり 良い)。 不合格なら、 ページに 「点差だけの予測式と 同じくらい」と書く。
12.4 V3g 運の値が、条件によって偏っていないか
運の値は、
- 対象と条件:
- ツモの良さ
(luck_draw) : 副露しているか、 立直しているか、 巡目 (その局の自分の何回目のツモか : 1〜6、 7〜12、 13以上)の 組み合わせ (12個)。 - 裏ドラ運
(luck_ura) : 親か 子か、 先制か 追っかけか、 立直の巡目 (6以下、7〜9、10以上)の 組み合わせ (12個)。 - 一発率
(luck_ippatsu) : 同じ12個。
- ツモの良さ
- 方法: 各選手について、
その選手を 除いた 全員で 求めた 「条件ごとの運の平均」を、 その選手の単位の 条件の割合で 平均する (打ち方から予想される運)。 レギュラーシーズン全体、 単位が 一定数以上 (ツモ 3000、 リーチ和了 50、 リーチ 150)の選手。 - 検定: 実際の
運と、 打ち方から 予想される 運の相関 (単位数で重み付け)。 帰無分布は 選手の間で 予想値を 入れ替える (m = 1999、片側:正の 相関)。 3指標で Holm 補正。 - 合格基準: (1) 3指標とも
Holm 補正後 p > 0.05。 - 参考: 条件ごとの
平均の ずれと、 打ち方から 予想される 運の 選手間のばら つき (標準偏差)を、 選手ページの 90%区間の半分の 幅と 並べて載せる。
12.5 結果(2018-19〜2025-26)
- V2b
(対象は 2020-21〜2025-26、 のべ180人) : 過去だけで 決めた 縮小の 相対TSEの 上限は rank 0.04、 point 0.07 で 合格。 history は league より 悪い (rank の差の 90%区間 +0.07〜+0.73、 point +0.02〜+0.24)。 前の シーズンの成績を 同じ重みで 足すと、 予測は 悪くなる。 過去だけで 決めると、 rank では league が shrunk を わずかに 上回る (shrunk − league +0.003〜+0.071)。 - V4b: トップは
p = 0.15、 ずれの 最大 1.1ポイントで 合格。 ラスは p = 0.024 で (1) 不合格、 ずれの最大は 1.4ポイントで (2) は 合格。 ずれは 「開始時4位」 (予測より実際のラスが少ない、 −1.4)と 「開始時3位」 (多い、+1.2)に 出ている。 12マスでは 南1〜3局と オーラスの 3位・4位 (±1.6〜2.2)、 トップの オーラス1位 (−2.4)・2位 (+2.0)が 大きい。 今の シミュレーションは 点差や 順位に 関係なく 局の結果を 引くので、 終盤の逆転を 少なく 見積もっているとみる。 - V4c: トップは
Brier の 差 −0.00022 (90%区間 −0.00041〜−0.00001)、 ラスは −0.00088 (−0.00115〜−0.00058)で、 どちらも シミュレーションの 方が 良く、 合格。 ただしトップの オーラスだけは、 点差の 予測式の方が良い。 - V3g: 運の
値には 条件による 差が ある (ツモの良さは 13巡目以降が 1回あたり約 −1.7ポイント、 一発率は 追っかけ立直で 高い)。 しかし、 選手ごとの条件の 割合の違いは 小さく、 打ち方から 予想される 運のばら つき (標準偏差)は、 選手ページの 90%区間の半分の 幅の 4〜5%にと どまる (ツモ 0.0002 対 0.0051、 裏ドラ 0.0024 対 0.090、 一発 0.0011 対 0.025)。 3指標とも Holm 補正後 p = 1.0 で合格。 - 計画からの変更
(V3g の帰無分布、結果を見た 後) : 計画では 予想値を 選手の間で 入れ替える ことに していたが、 「その選手を除いた平均」を 使うと、 それだけで 相関が 負に 傾く (実際に −0.17〜−0.45)。 この偏りを 再現しない 帰無分布では p が 大きく 出すぎるので、 「同じ条件の中で運の値を 入れ替える」帰無分布に 替えた (各単位の選手と条件は そのまま)。 計画どおりの p (0.87〜0.999)も validation.json に 残す。 どちらでも 判定は同じ。 - 計画の不備と修正(V4b、結果を見た後):
- 最終持ち点の同点
(12試合)は 順位を 分け合って 記録されている (1位が2人、または3位が2人で 4位なし)。 そのままだと 1局の4人の結果の 和が 1に ならないので、 同点の2人を 半分ずつ 数える ことにした。 - 場
(東場・南1〜3局・ オーラス)だけの 分類は、 同じ局の4人の 確率の和も 結果の和も 1なので、 ずれは 計算誤差の 分しかなく、 標準誤差も 0に 近い。 その比は 意味のない 値に なり、 最初の 計算では 最大値の検定を 左右していた (ラス p = 0.010)。 この3分類は 検定から 外し、 残る 6分類で 検定した (ページの表からも省いた)。 - 上の
数字は、 この2つを 直した 後のもの。 直す前のラスの p は 0.010、 トップは 0.14。 判定は 変わらない。 - 既存の V4
(全体の較正)も 同点の扱いは 同じだが、 影響は 1,940試合中12試合なの で、 登録済みの手順の まま 変えない。
- 最終持ち点の同点
13. 探索: ボット対戦で運の補正が実力差を残すか(実行前に記入)
運の補正
- 卓: 自作の
4人打ち (Mリーグの ルール: 25,000点持ち30,000点返し、 ウマ 50/10/−10/−30 (オカ込み)、 赤3枚、 南4局で 終了 (親の連荘は続く)、 西入・ 飛びなし、 頭ハネ)。 簡単の ため鳴き・カンは なし (門前のみ)。 点数計算は mahjong ライブラリ。 - 打ち手(どちらも決まった規則で打つ):
- S: 向聴数を
最小にし、 その中で 受け入れ最大の牌を 切る。 聴牌で 即リーチ。 他家の リーチを 受け、 自分が 1向聴以上なら 降りる (現物 → 3枚見えの 字牌 → 筋 → 字牌 → 端牌の 順に 安全と みなす)。 - W: S と
同じだが、 25%の 打牌は 手の中から 無作為に 選ぶ。 降りない。
- S: 向聴数を
- 1試合は
S 2人・W 2人、 席は無作為。 - 運の
特徴量と 補正は luck.py と 同じ手順 (配牌の向聴数・ドラ、 向聴数別のツモの 進み、 裏ドラ、 一発、 他家の 合計)。 WPA の 元に なる局の結果の 抽選は、 この対戦の局から 作る。 係数は 試合を 5つに 分けた、 分けた 先を 除いた 当てはめ。 - 単位: 1試合ごとの
差 D = (S 2人の平均) − (W 2人の平均)。 素点の ポイントと、 運を 除いた ポイントの それぞれで作る。 - 合格基準(1,000試合で判定。(1) が不合格、または (2) の区間が広すぎて判定できないときだけ 3,000試合まで増やす):
- (1) 素の
ポイントで S が W より 強い (D の平均の90%区間の下限が 0より 大)。 前提の確認。 - (2) 実力差が
保たれる : 運の値の差 (S − W)の 平均の 90%区間が、 素の ポイントの D の 平均の ±20% 以内。 - (3) ばら
つきが 減る : 運を 除いた D の 分散が、 素の D の 分散より 小さい (試合単位のブートストラップで、 分散比の 90%区間の上限が 1未満)。
- (1) 素の
- 参考: 同じ差を
見つけるのに 必要な 試合数が、 運を 除くと どれだけ 減るか (分散比)。
13.1 結果(1,000試合、tools/selfplay)
- 打ち手の違い
: 和了率 S 23.4%・W 10.4%、 放銃率 S 3.1%・W 18.3%、 リーチ率 S 39.1%・W 22.2%。 1試合あたりの ポイント差 D は +56.5 (90%区間 +54.4〜+58.6)。 (1) 合格。 - 運の値の差
(S − W)は +1.37 (−0.01〜+2.72)で、 許容幅 ±11.3 に 収まる。 (2) 合格。 - 運を
除いた D の 分散は 素の D の 0.68 倍 (0.64〜0.73)。 (3) 合格。 同じ差を 見つけるのに 要る 試合数が 約3割減る。 個人の 1試合の 標準偏差は 48.0 → 41.8。 - 注意: 運の値の
差 +1.37 の 大半は 一発 (+1.44)から 来ている。 W が S の リーチに 放銃しやすいので、 S の 一発が 多く 出る。 一発は 相手の 打ち方でも 変わるので、 純粋な 運ではない (検証ページ・計算方法で 「一発率には打ち方の影響が 残りやすい」としている 点と 同じ方向)。 区間の下限が ほぼ0で、 有意か どうかの境目。 - 限界: 鳴きなし、
打ち手は 2種類だけ、 実力差は Mリーグの 選手間の差より ずっと 大きい (放銃率の差 15ポイント)。 一発を 通じた 偏りは 放銃率の差に 比例すると みると、 Mリーグの 選手間の差 (放銃率で数ポイント)では 1試合あたり 0.1〜0.3 程度と 見込まれるが、 これは 推測で、 確かめていない。
14. 指標の定義を雀魂牌譜屋に合わせた変更(検証の手順は変えていない)
同じ名前で
- 一発率
(luck_ippatsu、運の 6指標の1つ) : リーチ1回あたり → リーチ和了1回あたり (一発 ÷ リーチ和了)。 V3a〜V3f は この指標の単位 (リーチ和了)で 計算し直す。 V3g の 一発率も 同じ単位にし、 最低単位数を 150 (リーチ)から 50 (リーチ和了、裏ドラ運と同じ)に 変えた。 合格基準は 変えない。 - 痛い
親かぶり率 (luck_oya_kaburi、 検証の 対象外) : 親番1回あたり → ツモ和了された 回数あたり。 - ダマ率
(dama_rate、検証の 対象外) : 鳴かずに 聴牌した 局の うち最後まで リーチしなかった 割合 → 和了の うち、 鳴かずリーチも せずに 和了った割合。 - 立直率・
立直和了率・ 立直放銃率・ 立直流局率・ 立直収支・ 先制 リーチ率・ 平均 リーチ巡目 (検証の対象外) : リーチを 「宣言したもの」で 数え、 宣言牌で 放銃した 局 (全体で703局)も 含める。 運の指標と 運を 除いた ポイント (luck.py)は、 成立した リーチで 数えたまま。
14.1 やり直した結果
- 運の
6指標の判定 (V3a・V3d・V3f の 選手差の検定、 V3e の 上限、 V3b、 V3g)は、 一発率を リーチ和了あたりに しても、 すべて合格のまま。 検出力の目標 (V3c・V3d・V3f)は、 これまで どおり未達。 - 陽性対照の放銃率
(V3a)が p = 0.003 で、 基準 「0.001(999回の 並べ替えすべてを 上回る)」に 届かなかった。 放銃率の データは 変わっておらず、 一発率の単位が 変わって乱数の 消費が ずれ、 並べ替えの組が 変わった ためと みる。 基準は 変えず、 不合格として 記録する。 - V3g の
一発率も、 先制立直より 追っかけ立直で 高い 傾向は リーチ和了あたり でも同じ。
15. 監査: 運の指標の検定の点検(結果を見た後の確認)
運の指標の検定について、
- V3b の
読み方 : シャッフルで分散の減りが 消える ことが 示すのは 「特徴量と成績の対応に情報が ある」ことまで で、 その情報が 運か 実力かは 区別できない。 検証ページの 4.5 の 「運を捉えているから」 を弱めた。 - 一発を
除いた : 実運補正 データでは、 分散の 減り方が 34.5% → 31.0%、 選手ごとの運を 除いた ポイントの変化は 標準偏差 0.8pt/半荘 (最大 ±2pt 前後)、 2つの版の 相関 0.98。 ボット対戦 (13章)では、 運の値の差 (S − W)が +1.37 (−0.01〜+2.72) → −0.63 (−1.93〜+0.64)に なった。 この2種類の ボットと 今回の 対戦条件では、 一発に関する 補正が、 方策間の 補正量の差の主な 要因だった。 一発を 除くと 差の 点推定は 小さくなったが、 小さな偏りが 残っていない ことまでは 確認で きていない (16.10 に従い表現を 修正)。 分散比は 0.68 → 0.72。 一発を 補正から 外すかは未決定。 - 運による
獲得 : 持続するポイントだけに 絞った 検定 (V3f の形、水準 5%) 混入を 見つける 確率は r = 0.05 で 0.38、 r = 0.1 で 0.78、 r = 0.2 で 0.98 (水準 0.05/6 では 0.10・0.55・0.93)。 混入が ない ときの 棄却率は 0.07 (200回、名目 0.05)。 - V3e の
上限の被覆率 (模擬データに持続する混入 r = 0.05・0.1・0.2 を 埋め込み、 今と 同じ選手単位 ブートストラップの 95パーセンタイルが 真値以上に なった 割合。 200回 × 400回、 ツモの 良さだけ 60回 × 200回) : 持続する 割合の上限は 全指標で 0.82〜0.89、 1シーズンの割合の 上限は 配牌 0.96〜0.99、 配牌の ドラ・赤 0.93〜0.95、 ツモ 0.92〜0.98、 裏ドラ 0.81〜0.87、 一発 0.87〜0.89、 運による 獲得 ポイント 0.82〜0.88。 名目の 0.95 に 届かず、 上限は 低めに 出る。 検証 ページ 4.3 に 注記した。 出し方の見直し (検定の反転など) は未着手。 - ツモの確率: 本人から
見えない 牌を すべて山に あると みなす今の確率 (向聴数ごとに尺度を合わせた もの)では、 残差が 巡目で 偏る (1〜6巡 +0.55、 13巡以降 −1.45 ポイント)。 他家3人の手牌も 除いて確率を 出すと、 どの巡目・副露・ リーチの 有無でも 残差は ほぼ 0 (|0.04| ポイント以内)で、 尺度合わせも 不要 (予測の平均 25.3%、 実際 25.4%)。 4試合に 1試合 (約29万ツモ)で 確認。 V3g の 「13巡以降で低い」は この近似による。 確率の 差し替えは未着手。 - 「手が進んだか」は、
ツモ後の 14枚の向聴数 (最善の打牌をしたとき)で 判定しており、 本人が 実際に 切った 牌には 依存しない。
16. 運補正の改訂と検証方法の再設計(実行前に記入)
15章の監査を
16.1 目的と、今回の事前登録の位置付け
本検証の
15章の
確認的な
次の3点は
- 補正量に
選手ごとの 系統的な 差が 検出されるか。 - その差の
上限が、 実用上許容する 範囲に 収まるか。 - 補正によって成績の
ばら つきが減るか。
非有意である
16.2 改訂内容と比較する4つの版
次の4版を
| 版 | ツモ確率 | 一発による補正 | 役割 |
|---|---|---|---|
| A | 現行方式 | あり | 現行版 |
| B | 他家の現手牌も除く | あり | ツモ確率変更の診断 |
| C | 現行方式 | なし | 一発除外の診断 |
| D | 他家の現手牌も除く | なし | 主要な改訂候補 |
4版で
一発率は
待ち枚数などから
15章の
16.3 先に行うツモ確率と補正式の実装監査
他家の手牌を
各ツモの
未公開の
以下を
- 赤牌を
含む 全牌の 枚数保存、 二重計上、 負の残枚数。 - 河から
副露へ 移った 牌の扱い。 - 暗槓・明槓・
加槓、 嶺上牌、 表示牌の 公開時点。 - 槓に
伴う 牌山と 王牌の処理。 - 親の最初の
14枚と、 牌譜上の 擬似的な 最初のツモ。 - 「手が進んだ」の
判定が、 ツモ後の実際の 打牌に 依存しないこと。 - ツモ確率が
0以上 1以下であること。 - 同じ直前状態のまま
未来の 牌順だけを 変えても、 その時点の 予測確率が 変わらないこと。
小さな人工的な
実牌譜で
補正式についても、
- 評価対象試合の
結果が 回帰係数の学習に 入っていないこと。 - 運補正に、
根拠なく 非ゼロの切片や 通常の 状況効果を 加えていないこと。 - 状況による
重み付けが、 原則として当該の 偶然より 前の情報で 決まること。 - 平均ゼロの残差を
二乗するなど、 平均ゼロを 保たない 変換を 無条件に 使用していないこと。
同じツモ由来の
16.4 主要な評価量と許容幅
半荘 g の
主要指標は
主要な
混入割合 r は
ポイント単位の
| 評価対象 | 許容幅 |
|---|---|
| ボット2方策間の平均補正量の差 | ±1pt/半荘 |
| 実牌譜のモデルで推定する持続的な選手別補正偏りの標準偏差 | 1pt/半荘未満 |
1pt/半荘は、
後者は
16.5 実験1:改訂版の評価
実牌譜での比較
既存V2と
次を
- 補正前後の半荘
ポイントの分散比。 - 選手ごとの
平均補正後 ポイントの変化。 - 変化の
標準偏差、 最大値、 試合数との関係。 - 年度別、
打ち方別の変化。 - 前半から
後半の実際の ポイントを 予測する 平均二乗誤差。 - ツモ残差の全体
平均と、 向聴数・ 巡目・副露・ リーチ状況別の平均。
予測対象は
区間の
相関0.98の
ボットでの比較
主要解析では、
ボット対戦で
方策間の
偏りの
区間が
分散減少の
既存13章の
改訂版の採否
優先順位を
- 確率計算と
情報利用の正しさ。 - 系統的な
偏りの小ささ。 - 分散減少。
- 将来成績の
予測性能。
分散減少が
Dは、
予測性能については、
偏りの区間が
16.6 ボット対戦の強化
強い
| 優先 | 対比 | 調べる問題 |
|---|---|---|
| 1 | 同じ手組みで、リーチに降りる/押す | 相手の放銃行動が運補正に入るか |
| 2 | 同じ手組みで、機会があれば鳴く/鳴かない | 一発消し、手牌からの牌の取り出し、ツモ順の変化 |
| 3 | 同じ基本方策で、即リーチ/条件付きダマ | 和了・裏ドラなどの観測機会の選択 |
| 4 | 同じ押し引きで、受け入れ重視/対子や打点重視 | 他家が保持する牌の偏りとツモ確率 |
最初の
同じ山と
対戦数は、
計算上限により
16.7 実験2:V3eの上限の作り直し
主要な
採用候補の
候補の
BCaも
二値・件数の
模擬
- 持続成分:r = 0, 0.01, 0.05, 0.10, 0.20。
- 持続成分と
シーズン限定成分が 共存する場合。 - 選手によって
機会数・ 分散が 異なる場合。 - 少数の
選手だけに 偏りが ある場合。 - 相手構成に
由来する 偏りが ある場合。
r = 0 だけでは
モデル調整用と
上限は
16.8 実験3:主結果を1本にした検定
Dの
6指標から
検出力は、
有限回の
| 項目 | 設計目標 | 最終確認基準 |
|---|---|---|
| 混入0での棄却率 | 名目5% | 棄却率の片側95%上限が6%以下 |
| 上限区間の被覆率 | 少なくとも95% | 被覆率の片側95%下限が95%以上 |
| 持続する r = 0.10 の検出力 | 80%以上 | 検出力の片側95%下限が80%以上 |
| 持続する r = 0.20 の検出力 | 95%以上 | 検出力の片側95%下限が95%以上 |
割合の
棄却率の
被覆率・
15章の
最終確認は
計算上限に
すべての設定に対する
16.9 実行順と多重性
実行順は
- データ・
コード・ 対象試合・ 分割・ 乱数系列を 固定する。 - ツモ確率と
補正式の 実装監査を行う。 - Dと、
診断用の A/B/Cを作る。 - 模擬データで
上限と 主要検定を 調整する。 - 独立した
確認用模擬で、 被覆率・ 棄却率・ 検出力を 評価する。 - 固定した
本番補正式を、 新規 ボット対戦で 評価する。 - 実牌譜の
4版比較と、 被覆率を 確認した 上限を 報告する。
5で
4版の比較は
事前指定した
過去牌譜での
16.10 公開ページの表現
現行V3eの
15章の
この2種類の
ボットと 今回の 対戦条件では、 一発に関する 補正が、 方策間の 補正量の差の主な 要因でした。 一発を 除くと 差の 点推定は 小さくなりましたが、 小さな偏りが 残っていない ことまでは 確認で きていません。
ツモ確率については、
牌譜から
ツモ直前の他家の 手牌も 再現し、 抽選対象に ならない 牌を 除いて確率を 計算します。 これは 対局後に 偶然の影響を 測る ための 情報利用です。 選手が 対局中に その情報を 知っていたと 仮定する ものでは ありません。 確認した 条件では 残差の偏りが 小さくなりましたが、 槓などを 含む 処理の 正しさは 別途検証します。
主要検定の
運補正量について、
選手ごとに 持続する 系統的な 差を 調べています。 差が 検出されない ことだけで、 混入が ないとは 判断しません。 どの大きさの差を 見つけられるかと、 妥当性を 確認した 方法による 上限を 併記します。 ここで 確認で きるのは、 検証した モデルと 条件の 範囲です。
方法上の
- 模擬実験の設計と
計算誤差の 報告:Morris・ White・ Crowther (2019) https://pmc.ncbi.nlm.nih.gov/articles/PMC6492164/ - ゼロ付近を
含む分散成分の区間 推定:Zhang・ Ekvall・ Molstad https://arxiv.org/abs/2404.15060 - 許容幅に基づく
同等性検定:Lakens (2017) https://doi.org/10.1177/1948550617697177
16.11 ボット対戦の対戦数(予備実験の後、本番の前に記入)
- 予備実験
(採点しない、各500試合、 乱数 500001〜)で、 D版の補正式 (実牌譜の全シーズンで当てはめた 係数に 固定)を 当てはめた、 1試合あたりの 補正量の差のばら つきは、 S対W で 25.0、 S対P (P は S と同じ手組みで、 リーチを 受けても 降りない)で 26.5。 - 16.6 の
式から、 本番の 対戦数を S対W 5,400試合、 S対P 6,100試合に 固定する。 乱数は S対W が 1000001〜、 S対P が 2000001〜。 - 判定は
16.5 の とおり (補正量の差 B の90%区間が [−1, +1] に 収まれば 同等性を 確認、 差の 分散比の 片側95%上限が 1未満なら 分散減少を 確認)。 A版 (今の補正)も 同じ対局で 並べて報告する。
16.12 結果
実装監査
- 全1,177,793ツモで、
牌の枚数の保存 (どの牌も見えている牌+他家の 手牌+自分の手牌が 0〜4枚、 引ける 牌が 残る)の 違反0件、 確率が 0〜1を 外れた 件数0件。 - 残りの牌を
実際に 並べて1枚ずつ 数えた 確率との照合 (人工の局面2万)で、 食い 違い0件。 - 今の確率
(A・C版)は、 自分の暗槓の4枚を 「見えている牌」と 「暗槓」の 両方で 数えていた (全ツモの0.5%、 5,901件)。 B・D版の確率は 二重に 数えない。 - 手が
進んだかは、 ツモ後14枚の 向聴数 (最善の打牌)で 判定しており、 実際の打牌に 依存しない。 補正式は 対象 シーズン以外で 当てはめ、 切片なし、 特徴量は 平均0に 中心化、 二乗などの 変換なし。 D版は 一発を 使わない。
実験1、
| 版 | 分散の減り(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) |
- D の
予測の悪化は 片側95%上限1.0065で、 基準1.02以下を 満たす (実用上の悪化は 確認されなかった)。 - ツモの残差
(×100):A・C版は 巡目で 偏る (1〜6巡 +0.59、 13巡以降 −1.41)。 B・D版は どの条件でも ±0.14 以内。
実験1、
| 組 | 版 | 補正量の差 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) |
- 今の
A版は、 強い 打ち手・ 押す 打ち手の運を 多く 数え、 方策間の差を 1試合あたり約3ポイント削る。 D版では 偏りが 大きく減る。 - D版は
S対P で 区間の上限が +1.07 と 許容幅を わずかに 超え、 「全対比で確認」には 至らない。 計画どおり試合の 追加は しない。 分散減少は どの組でも確認。 - 16.5 の
採用条件 (実装監査の通過、全対比での 同等性、 分散減少)の うち、 同等性が S対P で 未確認。 D へ 切り 替える 場合も 「無偏性の確認は 保留」を残す。
実験3、
| 項目 | 結果 | 基準 | 判定 |
|---|---|---|---|
| 混入なしでの棄却率 | 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、
| 真の持続成分 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 |
- 実データの
持続成分の 上限:0.180 (調整用の乱数では0.195。 各候補100回によ るぶれ)。 - 持続成分だけの
模擬では、 どの r でも 被覆の下限が 95%を 超えた。 16.7 の 他の条件 (シーズン限定成分との共存、 機会数の違い、 少数の 選手だけの偏り、 相手構成による 偏り)は 未検証で、 グリッドの端 (0.4)に 達した 反復を 「上限未確定」として 数える 処理も 未実装のため、 この上限は 保証ではなく 参考値のまま扱う。
採否の判断
- D 版を運用上の改訂として採用する。
理由:実装監査を 通過し、 ツモの残差の巡目による 偏りが 消え、 S対W で 同等性を 確認し、 A 版の偏り (方策間で約3ポイント)を 大きく 減らした。 予測の悪化も 基準内。 分散の減りは 34.5% から 27.7% に 小さくなる (補正後の残りの分散は 約10%増える)が、 偏りの除去を 優先する。 - 採用条件と
合格基準は 書き換えない。 未達の項目は そのまま 残す:S対P の 同等性 (未確認)、 r = 0.10 の 検出力 (推定76.4%、 片側95%下限74.8%、 基準80%)、 上限の被覆 (持続成分だけの模擬では確認、 他の条件は 未検証)。 - 公開
ページでは 「純粋な実力」 「混入なし」 「全検証に合格」といった 表現を 使わない。 - 探索的な
確認 (採否には使わない):D 版の S対P の 差 +0.51 を 特徴量ごとに 分けると、 どれも 単独では 90%区間が 0を 含み、 最大は 自分の 聴牌からの ツモ +0.22 (−0.07〜+0.52)。 中心化は リーグ全体の 向聴数ごとの平均で 行っており、 選手ごと ではない。